如何在不卸载的情况下处理INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

时间:2010-07-06 10:34:18

标签: android

我尝试重新安装apk

$adb install -r new.apk

它显示错误:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

一种解决方案是卸载并安装new.apk,工作正常。

但我想知道我是否可以重新构建apk并在没有卸载的情况下重新安装。例如。更改AndroidManifest.xml中的某些配置,或不签署APK等。

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

16 个答案:

答案 0 :(得分:301)

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

答案 1 :(得分:47)

我在测试新的Xoom时遇到了这个问题。我以前从Marketplace安装了我的应用程序。稍后在尝试测试新版本的应用时,我遇到了这个错误。

我通过删除通过Marketplace安装的应用程序来修复它(只需按住并拖动到垃圾箱)。此后,我能够毫无问题地部署我的开发版本。

答案 2 :(得分:20)

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

答案 3 :(得分:20)

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

adb uninstall <package name>

答案 4 :(得分:9)

即使在卸载原始APK之后我也遇到了这个错误,这很神秘。最后,我意识到我已经在Nexus 7上设置了多个用户进行测试,并且仍然为其他用户安装了该应用程序。一旦我为所有用户卸载它,错误就消失了。

答案 5 :(得分:5)

我在编写更新时更改了包名,以便我可以通过Eclipse在我的设备上调试它,而不删除已安装的旧版本。如果没有恢复我在尝试重新安装时使用的软件包名称,我也会遇到同样的错误。使用相同的包名称重新安装成功。

答案 6 :(得分:3)

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

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

之后我尝试重新安装apk,它有效。

答案 7 :(得分:3)

只需从设备中删除旧版本并重新安装即可。因为device.keystore已经存在于设备中,所以只需卸载构建并重新安装所有的APK ..

由于

答案 8 :(得分:1)

对于它的价值,我在为Cordova项目添加新插件后遇到了这个问题。我一直在使用cordova进行构建,并通过USB直接安装在设备上。

我通过从设备卸载应用程序来修复它,在下一次部署时没有任何问题。

答案 9 :(得分:1)

如果您遇到错误的部署到Andorid设备或模拟器失败&#34;失败[INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]&#34;在“输出”窗口中,只需删除设备或模拟器上的现有应用程序并重新部署即可。调试版本将使用调试证书,而版本版本将使用您配置的证书。此错误只是让您知道设备上安装的应用程序的证书与您尝试安装的应用程序的证书不同。在非开发(应用程序商店)方案中,这可以指示已损坏或以其他方式修改的应用程序在设备上安装不安全。

答案 10 :(得分:0)

上面没有任何内容对我有用。对我来说问题是我的android-support-v7-appcompat的Java Build Path中有错误的源代码。当你去Project&gt;构建路径&gt;配置构建路径&gt;。在Source选项卡下确保你有android-support-v7-appcompat / gen,android-support-v7-appcompat / libs和android-support-v7-appcompat / src等等。单击“确定”,它应该可以正常工作。

答案 11 :(得分:0)

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

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

解决方法是:

  • 关闭VM
  • 使用vdfuse(读/写)
  • 挂载VDI映像
  • 使用Partition1
  • 修复e2fsck图片文件
  • 卸载并重新启动VM

答案 12 :(得分:0)

我遇到了同样的问题,直到我意识到我正在运行模拟器并且adb正在尝试安装

答案 13 :(得分:0)

由于验证基于软件包的名称,因此您可以在config.xml或清单文件中更改软件包名称以获取所需的其他名称。

发布应用时不要忘记更改名称!

答案 14 :(得分:0)

我在 Genymotion 上尝试执行gradle任务However it doesn't work, the error occurred, Any help please? Thanks in advance. (或connectedDebugAndoidTest)时出现此问题。在普通模拟器上运行它解决了这个问题。

答案 15 :(得分:0)

我认为,您的应用是通过其他帐户安装的。(多帐户模式功能)您可以在“设置”>“应用”>“应用名称”>卸载

中卸载该应用