Android 如果不卸载,如何处理安装\解析\失败\不一致\证书?

Android 如果不卸载,如何处理安装\解析\失败\不一致\证书?,android,apk,Android,Apk,我试图重新安装一个apk $adb install -r new.apk 它显示了错误: Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] 一个解决方案是卸载并安装new.apk,这样就可以了 但是我想知道我是否可以重新构建一个apk并在不卸载的情况下重新安装。例如,在AndroidManifest.xml中更改一些配置,或者不签署APK,等等 如果您能告诉我“INSTALL_PARSE_FAILED_Unconsistent_

我试图重新安装一个apk

$adb install -r new.apk
它显示了错误:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
一个解决方案是卸载并安装new.apk,这样就可以了

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


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

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

我在测试新Xoom时遇到了这个问题。我以前在市场上安装过我的应用程序。后来在尝试测试新版本的应用程序时,我遇到了这个错误


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

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

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

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

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


在那之后,我尝试重新安装apk,它成功了。

即使在卸载原始apk之后,我也出现了这个错误,这让人感到困惑。最后,我意识到我已经在Nexus7上设置了多个用户进行测试,并且该应用程序仍然是为其他一个用户安装的。一旦我为所有用户卸载了它,错误就消失了。

上面的任何内容对我都不起作用。我的问题是,我在android-support-v7-appcompat的Java构建路径中有错误的源代码。当您转到项目>生成路径>配置生成路径>。在Source选项卡下,确保您有android-support-v7-appcompat/gen、android-support-v7-appcompat/libs和android-support-v7-appcompat/src等。单击“确定”,它应该可以工作。

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

adb uninstall <package name>
adb卸载

我今天遇到了相同的错误,但问题并不完全相同。我正在使用安装在VirtualBox中的Android的ADB。我试图安装我的应用程序的不同版本(已签名/未签名,调试/发布模式),但出现了两个错误:
安装\u失败\u UID\u更改
安装\u解析\u失败\u证书不一致

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

解决办法是:

  • 关闭虚拟机
  • 使用
    vdfuse
    (读/写)安装VDI映像
  • 使用
    e2fsck
  • Umount并重新启动VM

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


感谢

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

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


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

由于验证基于包的名称,因此可以在config.xml或manifest文件中更改包的名称以获得所需的其他名称


发布应用程序时,请不要忘记更改回名称

我试图在Genymotion上执行gradle任务
connectedDebugAndoidTest
(或
connectedAndroidTest
)时遇到此问题。在正常仿真器上运行它解决了问题。

如果在输出窗口中遇到部署到android设备或仿真器失败并出现错误“Failure[INSTALL\u PARSE\u failed\u INCONSISTENT\u CERTIFICATES]”,只需删除设备或仿真器上的现有应用程序并重新部署即可。调试生成将使用调试证书,而发布生成将使用您配置的证书。此错误只是让您知道设备上安装的应用程序的证书与您尝试安装的证书不同。在非开发(应用商店)场景中,这可能是损坏或修改的应用程序不安全安装在设备上的迹象。

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

@atourney:您必须将以前计算机的密钥库(例如,
debug.keystore
)复制到新计算机。请注意,
debug.keystore
不在您的项目目录中。它通常在您的
~