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