安装不同版本的应用程序时出现签名错误

Getting signature error while installing a different version of the app

最近我安装了一个名为eelo的自定义ROM。 Telegram 应用程序是预装的,因此可以将其视为系统应用程序。但它是一种定制的,具有不同的特点,它缺乏很多功能,而且本质上已经过时了。因此,我想安装正式版的应用程序。

为了安装应用程序,我尝试使用 adb shell pm uninstall --user 0 org.telegram.messenger 卸载前一个应用程序。输出结果为 SUCCESS,为了验证卸载,我尝试了 adb uninstall --user 0 org.telegram.messenger。它的输出也是 SUCCESS 。当我继续下一步使用命令 adb install Telegram-5.7.1.apk 安装 new APK 时,它给出了

adb: failed to install Telegram-5.7.1.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package org.telegram.messenger signatures do not match the previously installed version; ignoring!]

经过进一步研究,我发现我需要注释掉 /data/system/packages.xml 文件的电报包部分。但在编辑文件后和重新启动后,文件将恢复为编辑前的原始内容。我什至尝试用 chmod 744 /data/system 更改文件夹的权限,用 chmod 777 /data/system/packages.xml 更改文件 packages.xml 的权限,但没有任何效果,因为它在重启后全部恢复。

我想从我的系统中完全卸载 Telegram 应用程序并安装一个新应用程序。以及如何编辑 /data/system/packages.xml 文件并阻止系统将其还原。

非常感谢任何形式的帮助或建议。

最终找到了查询的答案以及解决方法。

  1. 首先是如何彻底删除一个系统应用? 这些是以下步骤

    $ adb root - 以 root 权限启动 adbd。

    $ adb shell - 直接与 phone 系统交互。

    $ pm uninstall --user 0 <package>.apk - 要从 root 用户卸载软件包是您要从系统中删除的任何软件包。

    这几个步骤可能会删除整个包,但在我的情况下它是不同的,因为它留下了以前构建的应用程序中的几个文件。所以这些是我遵循的步骤:

    $ adb shell mount -o rw,remount /system - 这会将系统重新挂载为 read-write。原来 /system 是一个 read-only 文件夹,所以你不能直接编辑。

    $ adb shell rm -r /system/<package>.apk - 这将删除 apk,之前构建的内容不会留下任何东西。

  2. 为什么我无法编辑 /data/system/packages.xml 文件?

    答案是,虽然我可以用 vim 编辑它,但它一直恢复到以前未编辑的形式。发生这种情况是因为它正在更新 /system/app 文件中的信息。因此,编辑它是徒劳的。

参考以下实际帮助我的链接

Read only file system on Android

https://www.besttechie.com/remove-preloaded-software-from-android/