繁体   English   中英

如何通过adb卸载Android系统应用程序的更新?

[英]How to uninstall updates of an android system app through adb?

所以这是我的系统应用程序,我在它上面加载了另一个 apk。 是否可以通过 adb 卸载旁加载的 apk 并运行系统应用程序?

我尝试了两种失败的方法。 我正在使用 4.4

一种。 从 /data/app 文件夹中删除了旁加载的应用程序并重新启动。 系统应用程序一直处于昏迷状态。

adb卸载(成功)并重新启动。 同样的结果。

这种稍微复杂的方法做到了。

  1. 将系统 apk 从 /system/priv-app/ 移动到 /sdcard/

  2. 亚行卸载

  3. 重启

  4. 将系统应用程序从 /sdcard/ 移回 /system/priv-app/

  5. 重启

我的问题是,有没有一种直接的方法可以通过 adb 做到这一点?

由于您在顶部安装了相同的软件包(应用程序),因此 adb 软件包管理器可能删除了旧的系统应用程序(相同的软件包名称)。

您可以使用adb shell pm list packages查看当前应用程序/ adb shell pm list packages

如果您有旧的 .apk ,您可以再次使用adb install -r <apk>重新adb install -r <apk> http://developer.android.com/tools/help/adb.html

如果您看到版本降级失败,请尝试使用-d像这样adb install -r -d <apk>

adb uninstall <package-name>应该卸载系统应用程序的更新。 我可以确认它适用于 Android 12。

解释

在 Android 设备上,系统应用程序安装在只读分区:通常是system ,但也可能是product分区。

当这些应用程序接收通过Play商店中或其他simialr手段(而不是系统更新!)的更新,这些更新安装到userdata分区(读写)的分区。

adb unintall简单地删除这些更新从这些更新userdata的分区(显然无法删除从只读分区的任何东西)。

另外,如果你“恢复出厂设置”您的设备,它会擦userdata的分区,所以您的系统应用的“股票”的版本。

关于readonly分区的注意事项

systemproduct和其他一些分区在 Android 的user版本上是readonly的。

user构建是您从商店购买设备时获得的。

但是,您可以自己构建userdebugeng变体,将其闪存到您的设备上,然后adb remountreadwrite adb remount这些readonly分区。 您可以在此处阅读有关构建 Android 的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM