如何处理INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES不卸载?

我试着重新安装apk

$adb install -r new.apk

它显示了错误:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

一种解决方案是卸载并安装新的。apk,这很好。

但我想知道我是否可以重新构建apk并重新安装而不卸载。如。修改AndroidManifest.xml中的一些配置,或者不签署APK,等等。

如果您能告诉我“INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES”的全部含义,将不胜感激。

172102 次浏览

这意味着应用程序的新副本(在开发机器上)与应用程序的旧副本(安装在设备/模拟器上)使用不同的签名密钥进行签名。例如,如果这是一个设备,您可能已经从不同的开发机器(例如,其他开发人员的机器)上放置了旧的副本。或者,旧的用您的生产密钥签名,新的用您的调试密钥签名。

我在测试一台新的Xoom时遇到了这个问题。我之前是在Marketplace上安装应用的。后来在测试新版本的应用程序时,我遇到了这个错误。

我通过删除通过Marketplace安装的应用程序来解决这个问题(只需按住并拖动到垃圾桶)。此后,我就可以毫无问题地部署我的开发版本了。

我在编写更新代码时更改了包的名称,这样我就可以通过Eclipse在我的设备上调试它,而不用删除已安装的旧版本。没有恢复我试图重新安装时使用的包名,我得到了同样的错误。使用相同的包名重新安装成功。

当团队中的另一名开发人员在我试图部署的硬件设备上构建我们的应用程序时,我就遇到了这种情况。从硬件上卸载应用程序解决了我的问题。

我遇到了另一个用例,我得到了类似的错误。 当我第一次得到错误,我惊慌失措,并删除/data/data/{package.name} 在那之后,我尝试了,但我的问题仍然存在。 然后我尝试卸载,它失败了

然后,我删除了/system/app中存在的apk文件(需要根访问权限),并尝试卸载,成功了。

之后我试着重新安装apk,它工作了。

即使在卸载原始APK之后,我也得到了这个错误,这是令人困惑的。最后我意识到,我在自己的Nexus 7上设置了多个用户进行测试,而其中一个用户仍然安装了该应用程序。一旦我为所有用户卸载它,错误就消失了。

上面的任何东西对我都没用。对我来说,问题是我在android-support-v7-appcompat的Java Build Path中有错误的源代码。进入“项目>生成路径>”时,配置生成路径>。在Source选项卡下,确保你有android-support-v7-appcompat/gen, android-support-v7-appcompat/libs和android-support-v7-appcompat/src,没有其他。单击OK,它应该可以工作。

这是使用adb从设备卸载应用程序的命令:

adb uninstall <package name>

我今天也犯了同样的错误,但问题不是完全一样的。我使用ADB和安装在VirtualBox中的Android。我尝试安装我的应用程序的不同版本(有签名/没有签名,调试/发布模式),并得到两个错误:INSTALL_FAILED_UID_CHANGEDINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

现在,当查看/data/data/{package.name}时,我发现卸载应用程序后仍然存在一堆文件。我试图rm -rf他们没有成功:我得到I/O错误。

解决办法是:

  • 关闭虚拟机
  • vdfuse挂载VDI映像(读/写)
  • 使用e2fsck修复Partition1映像文件
  • Umount并重启虚拟机

只需从设备中删除旧版本并重新安装即可。因为设备。密钥存储库已经存在于设备中,所以只需卸载构建并重新安装APK即可。

谢谢

我也遇到了同样的问题,直到我意识到我正在运行模拟器,而adb正试图在其上安装

不管怎样,我在给我的Cordova项目添加了一个新插件后遇到了这个问题。我一直有科尔多瓦做构建和安装直接在设备上通过USB。

我通过从设备上卸载应用程序来解决这个问题,在下一次部署时就没有问题了。

由于验证是基于包的名称,所以您可以在config.xml或清单文件中更改包的名称。

当发布你的应用不要忘记更改回名称!

我有这个问题,试图在Genymotion上执行gradle任务connectedDebugAndoidTest(或connectedAndroidTest)。在正常的模拟器上运行它解决了这个问题。

如果在输出窗口中遇到部署到android设备或模拟器失败的错误“Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]”,只需删除设备或模拟器上现有的应用程序并重新部署。调试版本将使用调试证书,而发布版本将使用您配置的证书。这个错误只是让您知道设备上安装的应用程序的证书与您试图安装的证书不同。在非开发(应用商店)场景中,这可能是损坏或修改的应用不安全安装在设备上的指示器。

我认为,你的应用程序是由其他账户安装的。(多账号模式特性)您可以在“设置>应用程序>“应用程序名称”>卸载应用程序