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

How to disable remote android debugging of WebView in Ionic/Cordova

我有一个基于 Ionic/Cordova 平台构建的 Android 应用程序。默认情况下,远程 Android 调试已启用。

https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

这意味着如果设备连接到计算机,可以打开 Chrome 浏览器,转到 chrome://inspect 查找网页列表,或带有 webview 的应用程序,点击inspect查看appsHTML、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。

https://github.com/apache/cordova-android/blob/37384c583d5a2e5b9b5c5d2cbf150f07f329d16c/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java

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

当您发布已签名的应用程序时,将禁用调试。您可以通过 运行 应用程序进行检查:

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

Signing an App

或者您可以在 AndroidManifest.xml<application> 中设置 android:debuggable="false",并且 运行 应用具有:cordova run android

chrome-remote-debugging

android webview默认是不可调试的。 Cordova 在应用程序可调试时打开调试,在 AndroidManifest.xml.The 代码中配置如下:

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 在调试版本中是可调试的,而在发布版本中是不可调试的。