我试图更新Google Play上的版本 . 上传我签名的APK后,我在Google Play控制台中收到了以下错误消息:
您上传了未使用上传证书签名的APK . 您必须使用相同的证书 . 上传证书有指纹:[SHA1 :( SHA1哈希编辑)],用于签署您上传的APK的证书有指纹:[SHA1 :(不匹配的SHA1哈希编辑)]
我已经尝试了许多不同的方法来签署我的APK(原始密钥库,不同的密码组合,新的密钥库,不同的密钥组合等),但没有一个成功 .
我相当确信密钥库是原始密钥库,因为我将它备份在外部驱动器上,并且文件的两个版本的更新日期在原始版本之前大约30分钟(这是我生成第一个签名的APK时) .
由于我使用了Google Play应用程序签名(并且预期的SHA1哈希与我的Play控制台上“应用程序签名”选项卡中的上载证书SHA1哈希相同)我假设我需要将证书导入到我上传的密钥库中原始发布APK .
以下是我的结果,我已经反复检查了一段时间以确保它们不是由简单的错字引起的(编辑的部分按值分组为颜色,如果需要,我可以发布大部分颜色):
请注意, keystorePass
和实际 keyPass
被指定为不同的传递,因此使用 keystorePass
为两者都返回"Cannot recover key" UnrecoverableKeyException,而使用 keyPass
为键提供了一般异常"Public keys in reply and keystore don't match."
我的一些研究发现,如果 keystorePass
和 keyPass
不相同,那么就会出现这个问题 . 建议的解决方案是使用keytool将 keyPass
更改为与 keystorePass
相同,但在我假设成功的keytool keypasswd更改之后,我仍然得到异常"Public keys in reply and keystore don't match."使用旧的 keyPass
返回预期的错误密码异常 . 这是一个截图:
出于疑难解答的目的,我尝试将证书直接添加到密钥库 . 这是成功使用 keystorePass
并从Google Play应用程序签名中给出了 uploade_cert.der
文件的预期SHA1哈希值:
我还尝试创建一个新的密钥库(以及使用相同密码的原始密钥库和新密钥库中的新密钥),但尝试在成功执行keytool上载证书导入后使用Android Studio和新密钥库生成签名的APK,我收到了此Android Studio错误:“受信任的证书条目未受密码保护”
我已经在我的gradle app文件( signingConfigs{release{keyAlias, keyPassword, storeFile, storePassword}}
)中使用原始信息和新信息尝试了所有这些步骤,但没有运气 . 很想让我的应用程序更新,任何提示或帮助将不胜感激 .
1 回答
你必须尝试以下程序:
使用用于签署APK第一版的PEPK工具(在您的Google控制台上提供)加密您的私钥(yourKeyStore.jks) .
生成一个新密钥(例如apk-upload),然后在upload-key.pem中从创建的密钥中提取证书 .
将upload-key.pem上传到您的Google帐户 .
使用新密钥签署您的发布APK(apk-upload) .
您将在本文中找到不同的命令和更多详细信息:
https://medium.com/mindorks/securing-and-optimizing-your-app-with-google-play-app-signing-24a3658fd319
EDIT: (来自评论)我认为,如果您已经注册了Google App Signings,那么您必须联系Google支持,以便您能够上传新的私钥或者获取旧的私钥...订阅时给出的选项谷歌应用程序签名,我认为如果您已经注册了谷歌应用程序签名,就不可能用旧方式辞职 .
(Asker的编辑:当您使用原始密钥别名时,不要为密钥库使用不同的密码 . 请确保keystorePass和keyPass完全匹配 . 如果您已经使用不同的密码上传了密钥库/密钥,请按照Google支持页面上的步骤可通过App Signing重置密钥库 . )