Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ionic/Cordova中禁用WebView的远程android调试_Android_Cordova_Ionic Framework_Webview_Android Webview - Fatal编程技术网

如何在Ionic/Cordova中禁用WebView的远程android调试

如何在Ionic/Cordova中禁用WebView的远程android调试,android,cordova,ionic-framework,webview,android-webview,Android,Cordova,Ionic Framework,Webview,Android Webview,我有一个安卓应用程序建立在爱奥尼亚/科尔多瓦平台之上。默认情况下,启用远程Android调试 这意味着,如果设备连接到计算机,可以打开Chrome浏览器,转到chrome://inspect 找到网页列表或带有WebView的应用程序,单击“检查”查看应用程序HTML、JS和其他资源。这对于调试来说很好,但我希望在发布的应用程序中禁用它 在尝试禁用此功能(或查找其启用位置)时,我发现有一个函数 @TargetApi(Build.VERSION_CODES.KITKAT) private voi

我有一个安卓应用程序建立在爱奥尼亚/科尔多瓦平台之上。默认情况下,启用远程Android调试

这意味着,如果设备连接到计算机,可以打开Chrome浏览器,转到chrome://inspect 找到网页列表或带有WebView的应用程序,单击“检查”查看应用程序HTML、JS和其他资源。这对于调试来说很好,但我希望在发布的应用程序中禁用它

在尝试禁用此功能(或查找其启用位置)时,我发现有一个函数

@TargetApi(Build.VERSION_CODES.KITKAT)
private void enableRemoteDebugging() {
    try {
        WebView.setWebContentsDebuggingEnabled(true);
    } catch (IllegalArgumentException e) {
        LOG.d(TAG, "You have one job! To turn on Remote Web Debugging! YOU HAVE FAILED! ");
        e.printStackTrace();
    }
}
在Cordova目录的SystemWebViewEngine.java中


是否可以设置配置或以其他方式禁用此功能?

当您释放已签名的应用程序时,调试将被禁用。您可以通过以下方式运行应用程序进行检查:

cordova run android --release -- --keystore=../my-release-key.keystore --storePassword=password --alias=alias_name --password=password


或者您可以在

中设置android:debuggable=“false”
,默认情况下,android webview不可调试。Cordova在AndroidManifest.xml中配置的应用程序可调试时打开调试。代码如下:

public class SystemWebViewEngine implements CordovaWebViewEngine {
    private void initWebViewSettings() {
        ApplicationInfo appInfo = webView.getContext().getApplicationContext().getApplicationInfo();
        if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0 &&
            android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            enableRemoteDebugging();
        }
    }
}

因此,ionic中的webview在调试版本中可调试,而在发布版本中不可调试。

执行所有这些步骤仍然会导致出现inspect视图。似乎设置
android:debuggable=“false”
也不受欢迎。即使直接从Google Play商店安装应用程序,也会出现inspect视图。应用程序必须正确签名才能在Play Store上。android:debuggable=“false”不是不推荐的(),大多数工具在调试或发布时会自动将其添加到apropiate值。检查(关闭日志记录和调试)。也许你的问题是某个cordova插件添加了true属性。您应该检查生成的apk中的清单。运行cordova build时,使用
android:debuggable=“false”
标志集给出此输出
../AndroidManifest.xml:9:错误:避免硬编码调试模式;省略它可以让调试和发布版本自动分配一个[HardcodedDebugMode]
没错,@isma3l。发现插件导致两种情况下都启用了远程调试。