使用ADB在Android设备上重新安装APK解决方案

6次阅读
没有评论

解决方案:在Android设备中使用ADB重新安装APK

问题背景:

用户希望通过ADB命令行工具从/sdcard/recovery目录复制一个文件到系统的/system/app目录。遇到权限失败错误。

技术环境配置:

  • 通过 ADB 连接到设备
  • 具备root权限以读写系统分区(/system)

问题核心:

  1. adb shell cp -a /sdcard/recovery/sampleapp.apk /system/app/ 命令执行失败,返回“E: failed to mount system (read-only)”

  2. 解释:当尝试更改系统的可读写状态时,系统显示其处于只读模式。

  3. 扩展问题:

  4. 查找导致此权限问题的原因
  5. 了解为什么 mount 命令在 /system/bin/ 失败而成功于 /xbin/
  6. 提供一个脚本以解决这一问题

基础解决方案:

  1. 确认root状态及路径环境变量
    确保设备已经过root化,并且可以访问必要的shell指令

  2. 调整shell脚本以确保使用正确的mount命令:

#!/system/bin/sh
echo "Remounting /system as RW (read/write)..."
/system/bin/mount -o remount,rw /system
  1. 安装该脚本:
  2. 将上述脚本保存为可执行文件,例如在 /data/local/tmp/remount 内,并给予适当的权限chmod 755 /data/local/tmp/remount

  3. 执行脚本以重新挂载系统分区为读写模式:

/data/local/tmp/remount
  1. 尝试再次复制应用:
    完成上述操作后,再次运行以下命令:
adb shell cp -a /sdcard/recovery/sampleapp.apk /system/app/

扩展解决方案:

  1. 对于mount失败的情况:

    使用 busybox 命令尝试替代版本的 mount,这可能能更成功的改变 /system 分区状态为读写。

busybox mount -o remount,rw /system
  1. TWRP 恢复模式解决方案:

若使用 TWRP(Team Win Recovery Project)进行恢复操作,可进入 TWRP 界面内的“Mount”菜单,手动选择对 /system 分区进行可写挂载,然后通过其内置文件管理器将应用安可至 /system/app

  1. 其他注意事项:

  2. 从用户报告的经验来看,在某些情况下可能需要以特定的顺序或组合尝试上述方法

  3. 检查设备是否具有定制的引导装载程序(boot.img),可能存在不允许系统分区更改的设置

总结:综合使用 mount 命令变体,检查shell脚本执行,以及借助TWRP恢复模式进行分区挂载,是解决此类权限问题的有效方法。如遇到持续性失败,请考虑设备特定配置影响,并逐步调试。

正文完