首页 文章

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

提问于
浏览
8

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

您上传了未使用上传证书签名的APK . 您必须使用相同的证书 . 上传证书有指纹:[SHA1 :( SHA1哈希编辑)],用于签署您上传的APK的证书有指纹:[SHA1 :(不匹配的SHA1哈希编辑)]

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

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

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

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

Cannot update release APK using Google Play app signing upload certificate (with original keystore)

请注意, keystorePass 和实际 keyPass 被指定为不同的传递,因此使用 keystorePass 为两者都返回"Cannot recover key" UnrecoverableKeyException,而使用 keyPass 为键提供了一般异常"Public keys in reply and keystore don't match."

我的一些研究发现,如果 keystorePasskeyPass 不相同,那么就会出现这个问题 . 建议的解决方案是使用keytool将 keyPass 更改为与 keystorePass 相同,但在我假设成功的keytool keypasswd更改之后,我仍然得到异常"Public keys in reply and keystore don't match."使用旧的 keyPass 返回预期的错误密码异常 . 这是一个截图:

Cannot update release APK using Google Play app signing upload certificate (with original keystore)

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

Cannot update release APK using Google Play app signing upload certificate (with original keystore)

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

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

1 回答

  • 3

    你必须尝试以下程序:

    • 使用用于签署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重置密钥库 . )

相关问题