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

时间:2018-01-28 20:29:52

标签: android-studio apk keytool android-keystore google-play-console

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

  

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

     

[SHA1:(SHA1哈希编辑)]

     

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

     

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

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

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

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

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

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

请注意,keystorePass和实际keyPass被指定为不同的传递,因此使用keystorePass两者都会返回“无法恢复密钥”UnrecoverableKeyException,同时使用{{1对于密钥,给出了一个常规异常“回复中的公钥和密钥库不匹配。”

我的一些研究结果显示,如果keyPasskeystorePass不相同,则会出现此问题。建议的解决方案是使用keytool将keyPass更改为与keyPass相同,但在我假设是一个成功的keytool keypasswd更改后,我仍然得到异常“回复和密钥库中的公钥不匹配。“使用旧的keystorePass返回预期的错误密码异常。这是一个截图:

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

出于疑难解答的目的,我尝试将证书直接添加到密钥库。使用keyPass取得了成功,并从Google Play应用签名中获得了keystorePass文件的预期SHA1哈希值:

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

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

我已经在我的gradle app文件(uploade_cert.der)中使用原始信息和新信息尝试了所有这些步骤,但没有运气。我希望能够更新我的应用程序,并且非常感谢任何提示或帮助。

1 个答案:

答案 0 :(得分:3)

您必须尝试以下程序:

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

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

    编辑:(来自评论)我认为,如果您已经注册了Google App Signings,则必须与Google支持小组联系,以便您能够上传新的私钥或让您保持私有状态key ...当您订阅Google App Signings时给出的选项,我认为如果您已经注册Google App Signing,则无法使用旧方式辞退您的应用程序。

    Asker的编辑:当您使用原始密钥别名时,不要为密钥库使用不同的密码。请确保keystorePass和keyPass完全匹配。如果您已经上传了密钥库/密钥包含不同的通行证,然后按照Google支持页面上的步骤使用App Signing重置密钥库。)