Android比较当前包和新发布应用的签名

时间:2013-12-18 08:41:08

标签: android

我在android上创建了一个应用程序并将其发布在Play商店中。我用新的私钥签署了我的apk。

上周,我想用我的新功能更新我的应用程序。当我尝试在设备上安装新版本时,它会给我错误信息:

application not installed , an existing package by the same name with conflicting signature is already installed , 

所以我的问题是,比较我在新版本中使用的密钥和在Play商店中使用的密钥,以确保我使用相同的私钥

2 个答案:

答案 0 :(得分:4)

首先,解压缩APK并解压缩文件/META-INF/ANDROID_.RSA(此文件也可能是CERT.RSA,但应该只有一个.RSA文件)。

然后发出以下命令:

keytool -printcert -file ANDROID_.RSA

您将获得以下证书指纹:

     MD5:  B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
     SHA1: 16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85:0B:32:C5:4F:68
     Signature algorithm name: SHA1withRSA

然后再次使用keytool打印出签名密钥库的所有别名:

keytool -list -keystore my-signing-key.keystore

您将获得别名列表及其证书指纹:

android_key, Jan 23, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB

瞧!我们现在可以确定apk已经使用此密钥库签名,并使用别名'android_key'。

Keytool是Java的一部分,因此请确保您的PATH中包含Java安装目录。

来源: How do I find out which keystore was used to sign an app?

答案 1 :(得分:0)

当您从调试版本切换到发布版本并返回时,会发生这种情况。

解决方案是简单地卸载旧版本。

Android Studio会检测到这一点并提供卸载旧版本。