如何在Android模拟器复现No WebView installed类WebView崩溃
复现方法
方案1:通过ADB操作禁用/卸载WebView包(最通用)
该方案不需要修改模拟器配置,所有原生Android模拟器都适用,操作步骤如下:
- 启动任意和你故障用户系统版本匹配的Android模拟器
- 执行命令查询当前模拟器的WebView提供者包名:
adb shell dumpsys webviewupdate | grep "Current WebView package" - 拿到返回的包名后(多数情况为
com.google.android.webview,低版本原生系统为com.android.webview),执行禁用命令:adb shell pm disable-user --user 0 [你的WebView包名]
如果使用的是已root的模拟器,也可以直接卸载:adb shell pm uninstall --user 0 [你的WebView包名] - 操作完成后直接启动你的应用,即可100%触发崩溃栈中的
MissingWebViewPackageException异常 - 验证完成后执行恢复命令即可还原WebView功能:
adb shell pm enable [你的WebView包名]
方案2:修改模拟器配置禁用WebView
如果不想修改系统已安装的包,可以通过修改模拟器配置实现:
- 关闭待修改的模拟器,找到对应模拟器的配置文件
config.ini:- Windows系统路径:
C:\Users\你的用户名\.android\avd\对应模拟器名.avd\config.ini - Mac/Linux系统路径:
~/.android/avd/对应模拟器名.avd/config.ini
- Windows系统路径:
- 将配置项
hw.webview的值修改为false,保存后重启模拟器 - 此时系统会默认屏蔽WebView组件,启动应用即可触发对应崩溃
- 验证完成后将配置项改回
hw.webview = true即可恢复
补充说明
该异常的本质是系统无法找到可用的WebView服务提供者,除了用户手动禁用/卸载WebView的场景,部分厂商系统OTA升级时WebView包安装失败、多用户模式下子用户未分配WebView使用权限都会触发该问题,和你观测到的三星、TCL、LGE设备高发的特征完全匹配。
复现完成后你可以直接验证已找到的修复方案是否生效,通用的修复逻辑是在Cordova WebView初始化前增加WebView可用性检测,不可用时弹出友好提示引导用户启用/更新WebView,避免直接崩溃。
内容的提问来源于stack exchange,提问作者Rohit Singh
相关产品推荐
相关产品推荐

