我正在尝试将修改后的apk文件安装到我的Nook Simple Touch上。我修改了Reader.apk程序,重新编译它,并用我自己的密钥签名。
我知道如果签名密钥不同,您无法在当前应用上安装应用。但是,即使在完全卸载原始的Reader.apk应用程序后,我也收到错误INSTALL_FAILED_UPDATE_INCOMPATIBLE
。
检查packages.xml文件后,我删除了旧的Reader.apk应用程序的条目。我仍然得到这个错误。该应用程序已完全卸载,我无法安装我的修改版本。
即使使用我的新密钥签署原始资源也会导致出现此错误(因此它与我所做的实际更改无关)。
答案 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;