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

时间:2013-01-29 20:55:50

标签: android nook

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

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

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

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

3 个答案:

答案 0 :(得分:6)

根据文档,此错误出现“如果以前安装过 具有相同名称的包具有与新包不同的签名 (并没有删除旧包的数据)。“

如果您确定将其删除,可能会有一些旧的地方 签名仍然漂浮在那个删除没有,嗯,删除。 擦除仿真器/设备数据应该可以解决问题。

答案 1 :(得分: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">

到此:

<manifest android:versionCode="1" android:versionName="1.0"
    package="com.bn.nook.reader.activities"
    xmlns:android="http://schemas.android.com/apk/res/android">`

有关详细信息,请参阅this xda post。 (完全披露:我写了那篇文章。)

答案 2 :(得分:2)

如果原始应用程序已完成删除,我们仍然收到相同的消息:

INSTALL_FAILED_UPDATE_INCOMPATIBLE 

转到Settings&gt; Apps,您会在应用中找到以下消息:

  

&#34;未为此用户安装&#34;

,我们必须使用以下选项手动为所有用户卸载:

  

&#34;为所有用户卸载&#34;