无法使用Google Play应用程序签名上传证书更新发布APK(使用原始密钥库)

Ran*_*rms 8 keytool apk android-keystore android-studio google-play-console

我试图更新Google Play上的版本.上传我签名的APK后,我在Google Play控制台中收到了以下错误消息:

您上传了未使用上传证书签名的APK.您必须使用相同的证书.上传证书有指纹:

[SHA1 :( SHA1哈希编辑) ]

用于签署您上传的APK的证书有指纹:

[SHA1 :( 不匹配的SHA1哈希编辑) ]

我已经尝试了许多不同的方法来签署我的APK(原始密钥库,不同的密码组合,新的密钥库,不同的密钥组合等),但没有一个成功.

我相当确信密钥库是原始密钥库,因为我将它备份在外部驱动器上,并且文件的两个版本的更新日期在原始版本之前大约30分钟(这是我生成第一个签名的APK时).

由于我使用了Google Play应用程序签名(并且预期的SHA1哈希与我的Play控制台上"应用程序签名"选项卡中的上载证书SHA1哈希相同)我假设我需要将证书导入到我上传的密钥库中原始发布APK.

这是我的结果,我已经反复检查了一段时间,以确保它们不是由简单的错字引起的(编辑的部分按值分组为颜色,如果需要,我可以发布大部分颜色):

无法使用Google Play应用程序签名上传证书更新发布APK(使用原始密钥库)

请注意,keystorePass和实际keyPass被指定为不同的传递,因此使用keystorePassfor两者都返回"无法恢复密钥"UnrecoverableKeyException,而使用keyPass密钥时会给出一般异常"回复中的公钥和密钥库不匹配".

我的一些研究表明,如果keystorePasskeyPass不相同,那么就会出现这个问题.建议的解决方案是使用keytool将其更改keyPass为与之相同keystorePass,但在我假设是一个成功的keytool keypasswd更改后,我仍然得到异常"回复中的公钥和密钥库不匹配".使用旧的keyPass返回预期的错误密码异常.这是一个截图:

无法使用Google Play应用程序签名上传证书更新发布APK(使用原始密钥库)

出于疑难解答的目的,我尝试将证书直接添加到密钥库.这是成功使用,keystorePass并给了我uploade_cert.der从谷歌播放应用程序签名文件的预期SHA1哈希:

无法使用Google Play应用程序签名上传证书更新发布APK(使用原始密钥库)

我还尝试创建一个新的密钥库(以及使用相同密码的原始密钥库和新密钥库中的新密钥),但尝试在成功执行keytool上载证书导入后使用带有新密钥库的Android Studio生成签名的APK,我收到了此Android Studio错误:"受信任的证书条目未受密码保护"

我已经在我的gradle app文件中尝试了所有这些步骤与原始和新的信息,signingConfigs{release{keyAlias, keyPassword, storeFile, storePassword}}但没有运气.很想让我的应用程序更新,任何提示或帮助将不胜感激.

小智 3

您必须尝试以下过程:

  1. 使用用于签署 APK 第一个版本的 PEPK 工具(在 Google 控制台上提供)加密您的私钥 (yourKeyStore.jks)。
  2. 生成一个新密钥(例如 apk-upload),然后从 upload-key.pem 中创建的密钥中提取证书。
  3. 将 upload-key.pem 上传到您的 Google 帐户。
  4. 使用新密钥 (apk-upload) 签署您的发布 APK。

您将在本文中找到不同的命令和更多详细信息:

https://medium.com/mindorks/securing-and-optimizing-your-app-with-google-play-app-signing-24a3658fd319

编辑:(来自评论)我认为,如果您已经注册了 Google App Signings,则必须联系 Google 支持,以便您能够上传新的私钥或获取旧的私钥...订阅时给出的选项到 Google App Signings,我认为如果您已经注册了 Google App Signing,则无法使用旧方式放弃您的申请。

提问者的编辑:不要像使用原始密钥别名本身那样为密钥库使用不同的密码。请确保 keystorePass 和 keyPass 完全匹配。如果您已经使用不同的通行证上传了密钥库/密钥,请按照Google 支持页面上通过应用签名重置密钥库的步骤。)