无需重新编译能否开启Cordova应用WebView远程调试功能
不需要源码也可以实现WebView远程调试开启,你当前只配置了应用全局可调试,缺少WebView独立的调试开关配置,具体修复步骤如下:
核心原因
Android 4.4及以上系统中,WebView远程调试是独立开关,和应用的android:debuggable配置不关联,默认处于关闭状态,需要主动调用WebView.setWebContentsDebuggingEnabled(true)才会生效。
操作步骤
修改smali代码注入调试开关
用apktool解包得到smali代码后,按以下两种场景处理:- 若应用使用系统原生WebView:全局搜索是否存在已有调用
Landroid/webkit/WebView;->setWebContentsDebuggingEnabled(Z)V,如果存在直接将传入的参数0x0改为0x1即可;如果没有找到调用,找到应用自定义Application类的onCreate方法,在方法内插入以下代码:const/4 v0, 0x1 invoke-static {v0}, Landroid/webkit/WebView;->setWebContentsDebuggingEnabled(Z)V - 若应用使用第三方WebView内核(比如腾讯X5):对应修改对应内核的调试开关,X5内核的对应调用为
Lcom/tencent/smtt/sdk/WebView;->setWebContentsDebuggingEnabled(Z)V,修改逻辑和原生WebView一致。
- 若应用使用系统原生WebView:全局搜索是否存在已有调用
验证重打包签名流程
- 重新打包后必须同时使用
v1 + v2签名方案,Android 7.0及以上系统仅用v1签名会导致安装异常或配置不生效,推荐使用官方apksigner工具完成签名,避免使用老旧的jarsigner。 - 安装修改后的apk前,必须先卸载设备上的原应用,避免签名不一致导致覆盖安装失败、配置不生效。
- 重新打包后必须同时使用
触发WebView识别
安装修改后的应用后,主动打开应用内包含WebView的页面,再刷新*chrome://inspect#devices*列表即可看到对应的WebView调试条目。

内容的提问来源于stack exchange,提问作者Jack O'Neill
相关产品推荐
相关产品推荐

