解决MTK设备apk版本降级安装问题

9次阅读
没有评论

解决方案:安卓MTK设备上卸载和安装旧版本APK文件的方法

背景信息

本次问题描述涉及的是一个运行在联发科(MTK)SoC的工程师版设备上。用户试图卸载名为apk.package.name的旧版本应用,并将更新后的新版本(即1.0 build 1)安装到同一个位置,但是遇到了INSTALL_FAILED_VERSION_DOWNGRADE错误。此外还提到了APK文件会在重启后自动恢复安装问题。

问题及解决方案

  1. 卸载应用程序

    • 单纯将apk文件删除或移动并不够彻底地从设备上移除该应用,因为其元数据仍然保留在系统中。
    • 可以使用ADB命令 adb shell pm uninstall apk.package.name 来真正卸载它。这个命令会将元数据从包管理器数据库中清除。
  2. 检查和删除残留文件
    查看是否还有apk的其他版本或依赖项被保留在系统路径内,除了/system/app/apk.package.name或者/data/data/apk.package.name外,在某些设备上也可能存有/system/priv-app目录下的副本:
    shell
    adb shell rm -r /system/app/apk.package.name
    adb shell rm -r /system/priv-app/apk.package.name
    adb shell rm -r /data/data/apk.package.name

  3. 解决重启后自动恢复问题
    如果上述步骤仍然不能清除apk文件,检查是否有在启动时重新安装的应用程序列表或者脚本(例如.rc.sh文件)中确认,这些可能是确保应用在重启后能够被恢复的原因。

  4. 尝试手动安装
    在所有清理并移除了旧版本之后,使用管理员权限尝试重新安装新的apk。
    shell
    adb root
    adb remount
    adb push apkfile.apk /system/priv-app/
    adb shell chmod 644 /system/priv-app/apkfile.apk
    adb shell pm install -r path/to/apkfile.apk

  5. 启动应用检查
    在新的apk文件安装完成后,再尝试启动应用。
    shell
    adb shell am start -n apk.package.name/.MainActivity

  6. 检查其他潜在位置
    检查是否有误安装的包存在:
    shell
    adb shell ls /system/app
    adb shell ls /vendor/app
    adb shell ls /vendor/priv-app
    adb shell ls /system/priv-app
    adb shell find / -name apk.package.name 2>/dev/null

注意点

  • 此解决方案假设用户具备必要的开发者模式及root权限;
  • 调用pm installpm uninstall可能需要在适当的位置创建对应的.apk或清除路径内的app_name.merged JurisdictionManifest.xml
  • 通过ADB执行上述命令前,请确保已经与设备正确地建立了连接。

通过以上步骤,应能够解决用户遇到的问题。如果问题仍然存在,则建议联系更高级的技术支持或进行其他形式的诊断测试。

正文完