将Android应用捆绑包上传到Google Play控制台-密钥签名错误

jas*_*der 1 android android-studio google-play-console

我正在尝试将全新的.aab文件上传到Google Play控制台,但始终收到此错误:

上载失败
您上载了用密钥签名的APK或Android应用程序捆绑包,该密钥也用于签署交付给用户的APK。由于您已注册使用Google Play进行应用签名,因此在上传APK或Android应用捆绑包之前,请先使用新密钥对其进行签名。

我很沮丧,因为我在生成应用捆绑包时为此应用捆绑包生成了一个新密钥,即通过Android Studio中的Build> Generate Signed Bundle / APK ...菜单项,因此它是全新的密钥,其他应用未使用。
我什至尝试创建一个包含新密钥的全新密钥库,但始终会遇到相同的错误。这是别人遇到的怪癖吗?

在为该应用注册Google Play的应用签名时,我选择了“让Google管理和保护您的应用签名密钥(推荐)”选项,并且从我阅读的所有文档中,选择了用于对该应用进行签名的密钥与first成为“上传密钥”,因此看来我做得正确,但没有骰子。

有人对此有任何建议或经验吗?

jas*_*der 14

好吧,经过大量的尖叫和喊叫,包括在聊天中联系 Google Play Console 支持(他们只是一级支持,所以......没有太大帮助)和电子邮件(他们把我放在太难的篮子里并说他们不能为应用程序开发提供支持 - 什么?问题在于将应用程序上传到 Play Console,而不是应用程序开发!),我发现了这个自我回答的问题/sf/answers/3805181061/ .

基本上,无论何时执行与登录 Android Studio 相关的任何操作,请确保您正在执行 Clean & Rebuild Project 。出于某种原因,它认为我的新应用程序使用了我旧应用程序中的密钥并继续使用该密钥进行签名。(我想解决方案毕竟是应用程序开发支持!)

  • 谢谢,我遇到了同样的问题,只是做了 project -> clean 然后我创建了一个新的签名包,将它上传到商店,没有问题!Gradle 缓存是一件很奇怪的事情。 (2认同)

Moh*_*ari 12

确保在 build.gradle 文件中将 app debuggable 更改为 false

在此处输入图片说明


Pie*_*rre 8

“通过 Android Studio 中的 Build > Generate Signed Bundle / APK... 菜单项,因此它是一个全新的密钥,其他应用程序未使用。”

并不真地。Android Studio 使用的密钥库与 Android SDK 安装相关联,因此从您的 Studio 创建的所有应用程序都使用相同的密钥进行签名。

发生的情况是您必须创建另一个应用程序,使用该密钥库对其进行签名,并将其上传到 Play 管理中心,从而使其成为用于签署提供给最终用户的 APK 的密钥。同时,您创建了另一个在 Play Signing 中注册的应用:对于这个应用,上传证书是从您上传的第一个 APK 中提取的。由于您也使用 Studio 签署了该 APK,因此使用了相同的密钥库。Play 检测到这两个应用程序的证书相同,并且由于您将相同的密钥用于两个不同的目的(第一个应用程序的应用程序签名密钥和第二个应用程序的上传密钥),Play 拒绝了它。原因是应用签名密钥比上传密钥重要得多(后者可以重置而第一个不能),因此您不应将它们用于两个不同的目的。

换句话说,您需要创建一个不同的密钥库来为您在 Play 签名中注册的应用程序签名(理想情况下,每个应用程序一个),并确保您永远不会将该密钥库用作另一个应用程序的应用程序签名密钥。


hei*_*sil 8

对我来说,解决方案是更改构建变体

回顾一下,当我尝试将已签名的 .aab 捆绑包文件上传到面向开发人员的 Google Play 控制台时,我收到此错误Android App Bundle 未签名。

请记住,此错误不明确,可能是由本页其他答案中可见的许多问题引起的。我最初使用release构建变体上传了我的应用程序。忘记了我最初使用的变体,我尝试上传debug构建变体并收到此错误。

我的修复:上传与原始版本相同的构建变体。他们必须匹配!

  • 谢谢,这也是我的问题。该错误消息极具误导性。我向 Google 发送了反馈。 (2认同)

小智 7

我在我们的应用程序中遇到了这个错误。我们对所有应用程序使用相同的上传密钥。

因此,当您创建新应用程序时,请确保选择该选项Use an existing key that you sign an app with而不是(Google recommended)向他们发送唯一上传密钥的选项。

真正令人讨厌的部分是这个选项只能选择一次,所以我们不得不删除我们的应用程序并重新创建它。


小智 6

以下解决方案对我有用。将以下两行添加到您的 gradle 文件中。

    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        **signingConfig
        debuggable = false**
    }
Run Code Online (Sandbox Code Playgroud)


Him*_*ami 5

我遇到了同样的问题,在我的情况下signinConfig是安装程序,我犯了一个简单的错误,我忘记将可调试的应用程序更改为false。因此,即使我是从菜单或gradle命令生成的,构建也已成功生成,但是它是可调试的,因此play store不接受签名的apk并给我和类似的消息Upload Failed The Android Bundle was not Signed in

  • 我也面临这个问题,我在 android > app> build.gradle > `{buildType{release{signingConfigsigningConfigs.release }}}` 中添加了这一行 `signingConfigsigningConfigs.release` (3认同)
  • 这对于我的情况来说是正确的,我忘记了在我的应用程序级别 gradle 文件中 `buildTypes` `release` debuggable 仍然设置为 true。 (3认同)

ben*_*fi7 5

就我而言,我有

可调试 true

in. 正确的值为false

buildTypes
     {
         release {
Run Code Online (Sandbox Code Playgroud)