设备已安装同包名系统应用时如何调试其更新版本应用?
预装同签名系统应用的Debug版本调试操作步骤
调试预装系统应用时,若设备已存在同包名、同签名的预装系统版本,直接安装Debug包会触发如下报错:

完整解决流程如下:
前置要求
- 设备已获取Root权限,或已在开发者选项中开启「允许调试系统应用」权限
- 本地已配置ADB开发环境,可正常连接目标设备
- 持有该系统应用对应的正式签名文件,可对Debug包进行同签名配置
操作步骤
- 第一步:可选操作,备份原有系统应用的用户数据,避免调试过程中数据丢失
执行ADB命令:adb backup -f system_app_backup.ab <目标应用包名> - 第二步:卸载主用户下的系统应用更新记录,保留系统分区的基础预装包
执行ADB命令:adb shell pm uninstall -k --user 0 <目标应用包名>
其中-k参数用于保留应用本地数据,--user 0指定操作当前设备的主用户 - 第三步:验证应用卸载状态
执行ADB命令:adb shell pm list packages | grep <目标应用包名>
若返回结果为空,或仅显示系统分区下的预装包记录,说明操作生效 - 第四步:在项目开发配置中指定Debug包使用系统应用的正式签名
以Android Gradle项目为例,在模块级build.gradle中添加如下配置:android { signingConfigs { // 配置和正式包一致的签名信息 systemSign { storeFile file("你的系统签名文件路径.jks") storePassword "签名库密码" keyAlias "签名密钥别名" keyPassword "密钥密码" } } buildTypes { debug { // Debug包使用系统签名 signingConfig signingConfigs.systemSign // 保留调试属性 debuggable true } } } - 第五步:在开发IDE中直接点击运行调试按钮,Debug包会作为用户层应用正常安装到设备,支持断点调试、日志输出等所有调试功能
调试完成后恢复操作
如果需要恢复原有系统应用状态,执行ADB命令adb restore system_app_backup.ab即可还原备份的应用数据与版本。
内容的提问来源于stack exchange,提问作者Carlos Jiménez
相关产品推荐
相关产品推荐

