GooglePlay-应用捆绑包的错误签名密钥

时间:2019-01-22 19:03:08

标签: android android-studio google-play

我刚刚开始使用应用程序捆绑包。我已经在信息中心的App signing部分中设置了两个证书(签名证书和上传证书)。

我已经构建了一个应用程序捆绑包,并使用上传证书对其进行了签名,但是当我在Android Instant Apps下上传该捆绑包时(实际上这就是我切换到应用程序捆绑包的原因),它说:

Your Android App Bundle is signed with the wrong key. Ensure that your app bundle is signed with the correct signing key and try again: xx:xx:xx:xx.....

我已经手动检查了上传密钥库的SHA-1(使用终端中的keytool),它与xx:xx:xx ....相符。在错误消息中显示。

我在做什么错?该应用程序捆绑包已使用必需的上传证书进行了签名,但Google Play似乎不喜欢它。

想法?

10 个答案:

答案 0 :(得分:7)

该解决方案是非常基本的解决方案。我不得不清理我的项目,然后重建它。

Android Studio正在使用我使用的旧证书对我的应用程序包进行签名。

我之前所做的是转到Build -> Generate Signed Bundle / APK,我将文件选择器中的jks文件更改为新的上载jks。即使我选择了新证书路径,Android Studio似乎也会缓存并使用旧证书路径。可能是AS中的错误。

是的...现在,如果我每次更改jks文件时都清理项目,那么apk或应用程序包将使用适当的证书签名...

答案 1 :(得分:3)

我看到有答案了,但就我而言,我忘了删除

debuggable = true

来自app build.gradle

答案 2 :(得分:1)

应用捆绑包仅使用与jarsigner相同的格式进行签名。因此,您可以自己检查应用程序包签名的证书哈希。例如,在linux上:

zipinfo -1 ${APK?} \
    | grep -E "META-INF/.*(RSA|DSA|EC)$" \
    | xargs -I{} unzip -p ${APK?} {} \
    | keytool -printcert

如果此输出显示的签名与正确的签名密钥不匹配,则说明Play商店中存在错误,您应该升级到Play控制台支持。这在Play控制台的帮助菜单上可用。

另一方面,如果证书不匹配,那么即使您认为您使用正确的密钥库/密钥进行签名,也表示您做错了事,并且该应用捆绑包未使用正确的上传证书进行签名。< / p>

答案 3 :(得分:1)

经过一番搜索,我发现我的testCoverageEnabled true构建类型不小心有release

release {
    testCoverageEnabled true
    ...
}

这将使APK / App Bundle变得可调试,而Google Play控制台会认为它未签名。删除它可以解决问题。

答案 4 :(得分:1)

我遇到这个错误是因为:-

  1. 我创建了一个用于测试的新密钥,然后生成了一个 app bundles/apk
  2. 那个 apk/app bundle 有一些错误,所以在再次解决该错误后,我创建了一个新密钥并制作了一个全新的 app bundles/apk,其中发生了这个错误

所以如果你做了这样的事情,那么尝试提供一个用项目制作的第一个密钥的路径,在具有相同密码和相同密钥别名的密钥存储路径中

这会起作用,因为我们只能有一个项目的密钥,这是生成的第一个密钥。并且每次当您想要为您的应用制作 apk/app 捆绑包以用于发布/更新目的时,您都必须提供相同的密钥和密码,因此强烈建议将密钥存储在安全的地方

注意:- 在某些情况下(如果您已经多次尝试失败),在这种情况下,在构建过程中,您可能会在 Play 商店控制台上遇到“您已经有一个具有相同版本的尝试”错误.gradle 文件只是将 versionCode 和 versionName no 增加一并重新生成 apk/app bundles

答案 5 :(得分:0)

在我的情况下,问题是Android App捆绑包,我忘记为项目增加versionCode,并且在控制台上未显示该错误。而是显示与证书SHA相关的错误。

答案 6 :(得分:0)

我尝试在此处和this question中使用多个答案,但是由于我的android/app/build.gradleandroid/gradle.properties文件存在一些问题,我莫名其妙地收到了这个错误。

除了此处的其他解决方案外,您还应检查两件事:

  1. android/gradle.propertiesandroid/app/build.gradle中,确保您的keystore变量完全匹配。
    • android/gradle.properties中,您可能会遇到以下情况:
      MYAPP_RELEASE_STORE_FILE=<>
      MYAPP_RELEASE_KEY_ALIAS=<>
      MYAPP_RELEASE_STORE_PASSWORD=<>
      MYAPP_RELEASE_KEY_PASSWORD=<>
      
    • 确保这些变量名完全android/app/build.gradle中的变量名匹配:
      android {
          ...
          signingConfigs {
              release {
                  if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                      storeFile file(MYAPP_RELEASE_STORE_FILE)
                      storePassword MYAPP_RELEASE_STORE_PASSWORD
                      keyAlias MYAPP_RELEASE_KEY_ALIAS
                      keyPassword MYAPP_RELEASE_KEY_PASSWORD
                  }
              }
          }
      }
      
  2. android/app/build.gradle中,确保在signingConfig signingConfigs.release中将release设置为buildTypes
    android {
        ...
        buildTypes {
            debug ...
            release {
                signingConfig signingConfigs.release
            }
        }
    }
    

注意:如果您正在进行react-native开发,并发现自己在这里,请确保遵循"Publishing to Google Play Store"上的所有步骤。我以为我可以跳过几步而不会引起问题,这导致调试数小时

答案 7 :(得分:0)

就我而言,我上传了错误的同名应用程序。只需确保您上传的 applicationId 与上一个相同。

答案 8 :(得分:0)

对我来说,问题在于,在我的 google play 控制台中,我已经选择了播放应用签名,所以当我第一次上传 aab 时,google 注册并签署了我的应用程序以供后续版本使用。这意味着如果我上传另一个 aab,签名的证书将与谷歌签名的证书不同。

我需要删除它,所以我上传了另一个 aab。要做到这一点,我必须点击我的个人资料并选择管理开发者帐户。我看到我的 aab 谷歌已经签名的草稿,我删除了它,以便我可以生成并重新上传另一个。

当我删除它时,我从我的 android studio 生成了另一个 aab 并再次上传到我的 google play 控制台。这一次,它没有给我错误签名密钥的警告

答案 9 :(得分:0)

您的应用程序使用的密钥库发生了变化!我只是建议最常见的事情。另一种可能性是有人运行 expo build:android -c 或 expo build:android --clear-credentials 或运行 expo 凭据并删除密钥库。

如果这不是其中之一,那么剩下的唯一可能性就是 google 更改了上传密钥库(极不可能),或者在博览会服务器上我们更改了您的密钥库而无需您请求(没有已知的发生这种情况的实例,极不可能) ).

您可以通过查找您在 expo.io 上提交给商店的最新版本并验证用户名和 slug 是否符合您的预期来验证您使用的用户名和 slug 是否相同。

如果这对您没有任何有用的结果,那么您可以要求 google play 重置您的上传密钥库 - android - Lost keystore file for an app (but have Google Play App Signing enabled)