Android比较当前软件包和新发布的应用程序的签名



我在android上制作了一个应用程序,并将其发布在play商店上。我用一把新的私钥签了名。

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

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

因此,我的问题是,比较im在新版本中使用的密钥和play store中使用的私钥,以确保im使用相同的私钥

首先,解压缩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 -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已经用这个密钥库和别名androidkey进行了签名。

Keytool是Java的一部分,所以请确保PATH中有Java安装目录

来源:如何查找用于对应用程序进行签名的密钥库?

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

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

安卓工作室将检测到这一点,并提供卸载旧版本。

相关内容

最新更新