在adb安装上INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

Juu*_*nen 27 eclipse android signing apk android-install-apk

同样的Android项目是在调试模式下构建的,有时使用Eclipse,有时使用ant(在构建机器上).

如果我首先安装ant build,然后尝试启动Eclipse调试,则会显示Eclipse控制台

[2012-03-20 13:32:26 - myproject]由于应用程序签名不同,重新安装失败.[2012-03-20 13:32:26 - myproject]您必须执行应用程序的完全卸载.警告:这将删除应用程序数据!
[2012-03-20 13:32:26 - myproject]请在shell中执行'adb uninstall com.myproject'.[2012-03-20 13:32:26 - myproject]发布取消!

如果我反过来这样做,即使用Eclipse调试(包括安装apk),然后尝试从命令行安装ant build,我得到:

失败[INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

我的证书/签名有什么问题?

f.c*_*ani 51

对我来说问题是我已经使用另一个密钥安装了相同的应用程序.卸载旧应用程序解决了这个问题,如下所示:

/sf/answers/719661491/


Son*_*hja 31

旧安装的.apk具有与将要安装的新证书不同的证书,或者已使用不同的密钥安装在您的设备中.这意味着您的应用程序以前是从另一台机器上安装的,它为其提供了不同的凭据.

所以解决方案是:

uninstall the existing .apk

然后

re-install the new .apk


Juu*_*nen 17

问题是apk文件(在Eclipse和ant构建期间)已使用不同的证书进行签名.要使已在不同计算机上构建的构建之间的签名保持一致,请将调试密钥库置于版本控制中:

  • 使用keytool-importkeypair来创建密钥/证书对:https://stackoverflow.com/a/4257367/1097104
  • 将创建的密钥库文件放在版本控制中
  • 将Eclipse设置为使用该文件:Windows> Preferences> Android> Build
  • 设置ant属性以使用该文件:https://stackoverflow.com/a/9019925/1097104

如果您倾向于从自己的计算机和构建计算机交叉安装构建,这将非常方便.


Clo*_*ONG 5

如果你的构建系统是gradle,在Windows下直接使用follwong命令卸载即可:

.\gradlew.bat uninstallDebug
Run Code Online (Sandbox Code Playgroud)

或在 Linux 中:

./gradlew uninstallDebug
Run Code Online (Sandbox Code Playgroud)

进而:

./gradlew install
Run Code Online (Sandbox Code Playgroud)

这是对 Android 中同一个包的安装和卸载的认证检查。如果您使用两台不同的建筑 PC(计算机)与同一部手机连接,当您将手机与这些不同的 PC 连接时,您将收到此错误。最好的选择是一台电脑绑定一部实体手机。