39

同一个 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 构建,我得到:

失败 [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

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

4

7 回答 7

71

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

https://stackoverflow.com/a/10280878

于 2013-02-03T23:30:28.177 回答
36

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

所以解决方案是:

uninstall the existing .apk

进而

re-install the new .apk

于 2013-12-18T10:14:12.547 回答
18

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

如果您倾向于从自己的机器和构建机器交叉安装构建,这很方便。

于 2012-03-20T12:01:21.230 回答
5

如果您的构建系统是 gradle,只需在 Windows 中使用 follwong 命令将其卸载:

.\gradlew.bat uninstallDebug

或在 Linux 中:

./gradlew uninstallDebug

进而:

./gradlew install

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

于 2016-03-28T05:31:37.370 回答
1

打开 Eclipse 的首选项。在左侧列表中打开 Android 部分。在 Android 下选择“构建”区域在“自定义调试存储”旁边导航到您的 Android SDK 安装下的密钥库,而不是 Eclipse 在您的主目录下选择的那个。

现在 android ant build 和 eclipse 使用相同的密钥库。

于 2012-07-18T18:44:32.063 回答
1

在 IntelliJ 中,尽管您可以选择调试密钥库来调试应用程序的签名,但您不能输入密钥库密码或密钥密码。您可以导出您的发布证书并将它们导入您的调试密钥库并将密钥库和密钥密码更改为“android”。我已经为它准备了分步说明:http: //www.denizoguz.com/2013/01/12/failure-install_parse_failed_inconsistent_certificates/

于 2013-01-12T09:23:45.163 回答
0

其他解决方案 在应用程序的 build.grade 文件中增加版本代码

 defaultConfig {
        ...
        versionCode 1
        ...
  }

 defaultConfig {
        ...
        versionCode 2
        ...
  }

立即同步 在此处输入图像描述

构建干净的项目

运行您的应用程序

于 2017-06-15T08:29:32.080 回答