即使在完全删除原始文件后,INSTALL_FAILED_UPDATE_INCOMPATIBLE也会显示

Ste*_*ger 9 android nook

我正在尝试将修改后的apk文件安装到我的Nook Simple Touch上.我修改了Reader.apk程序,重新编译它,并用我自己的密钥签名.

我知道如果签名密钥不同,您无法在当前应用上安装应用.但是,INSTALL_FAILED_UPDATE_INCOMPATIBLE即使在完全卸载原始的Reader.apk应用程序后,我也会收到错误消息.

检查packages.xml文件后,我删除了旧的Reader.apk应用程序的条目.我仍然得到这个错误.该应用程序已完全卸载,我无法安装我的修改版本.

即使使用我的新密钥签署原始资源也会导致出现此错误(因此它与我所做的实际更改无关).

ash*_*888 6

根据文档,如果先前安装的同名包具有与新包不同的签名(并且未删除旧包的数据),则会出现此错误.

如果您确定要将其删除,可能会有一些旧签名仍在浮动的位置,删除没有,嗯,删除.擦除仿真器/设备数据应该可以解决问题.


Ste*_*ger 2

解决办法就是修改该AndroidManifest.xml文件。您需要删除sharedUserId第二行中的属性。

Reader.apk 文件是一个系统应用程序,由设备本身的制造商制作,这些制造商还制作了其他几个应用程序。因此,他们能够设置sharedUserId标志,这允许他们的所有应用程序相互交互。作为安全设计,所有应用程序都需要具有相同的签名密钥。当我尝试安装修改后的应用程序时,它安装失败,因为它试图与其他应用程序共享用户 ID,但缺少正确的签名密钥。

通过删除 xml 中的标志,您可以成功安装修改后的应用程序。更改文件中的以下行AndroidManifest.xml

<manifest android:sharedUserId="android.media" android:versionCode="1"
    android:versionName="1.0" package="com.bn.nook.reader.activities"
    xmlns:android="http://schemas.android.com/apk/res/android">
Run Code Online (Sandbox Code Playgroud)

对此:

<manifest android:versionCode="1" android:versionName="1.0"
    package="com.bn.nook.reader.activities"
    xmlns:android="http://schemas.android.com/apk/res/android">`
Run Code Online (Sandbox Code Playgroud)

请参阅此 xda 帖子了解更多详细信息。(全面披露:我写了那篇文章。)