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

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

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

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

即使用我的新密钥签名原始资料也会导致这个错误出现(所以与我所做的实际改变没有任何关系)。

Solutions Collecting From Web of "INSTALL_FAILED_UPDATE_INCOMPATIBLE即使在原始文件完全删除后也会显示"

根据文档,如果以前安装的同名软件包的签名与新软件包不同(并且旧软件包的数据未被删除),则会出现此错误。“

如果你确定删除了它,可能会出现一些旧签名仍然漂浮的位置,而这个删除不会被删除。 清除仿真器/设备数据应该清除问题。

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

 INSTALL_FAILED_UPDATE_INCOMPATIBLE 

转到Settings > Apps ,你会发现你的应用程序的消息:

“未为此用户安装”

,我们必须手动卸载所有用户的选项:

“为所有用户卸载”

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

Reader.apk文件是一个系统应用程序,它由设备本身的制造商,谁也做了其他几个应用程序。 由于这个原因,他们可以设置sharedUserId标志,允许所有应用程序相互交互。 作为安全devise,所有的应用程序都需要有相同的签名密钥。 当我尝试安装修改后的应用程序时,安装失败,因为它试图与其他应用程序共享用户标识,同时缺less正确的签名密钥。

通过删除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">` 

看到这个xda文章了解更多细节。 (完全披露:我写了那个post。)