【问题标题】:Uploading Android App Bundle to Google Play Console - key signing error将 Android App Bundle 上传到 Google Play 控制台 - 密钥签名错误
【发布时间】:2019-06-15 09:25:00
【问题描述】:

我正在尝试将全新的 .aab 文件上传到 Google Play 管理中心,但不断收到此错误:

上传失败
您上传的 APK 或 Android App Bundle 已签名 使用也用于签署交付给用户的 APK 的密钥。 由于您已注册 Google Play 应用签名,因此您应该 在上传之前使用新密钥签署您的 APK 或 Android App Bundle 它。

我完全被难住了,因为我在生成应用包时为这个应用包生成了一个新密钥,即通过 Android Studio 中的 Build > Generate Signed Bundle / APK... 菜单项,所以它是一个全新的密钥,其他应用程序未使用。
我什至尝试创建一个带有新密钥的全新密钥库,但总是得到相同的错误。这是别人遇到的一些怪癖吗?

在为此应用注册 Google Play 应用签名时,我选择了“让 Google 管理和保护您的应用签名密钥(推荐)”选项,并从我阅读的所有文档中,您首先用来签署应用程序的密钥成为“上传密钥”,所以看起来我做的一切都是正确的,但没有骰子。

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

【问题讨论】:

    标签: android google-play-console


    【解决方案1】:

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

    【讨论】:

    • 我也面临这个问题我在 android > app> build.gradle > {buildType{release{ signingConfig signingConfigs.release }}} 中添加这一行 signingConfig signingConfigs.release
    • 这对我来说是正确的,我忘记了在我的应用程序级别的 gradle 文件中 buildTypes release debuggable 仍然设置为 true。
    • 你救了我的命
    【解决方案2】:

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

    【讨论】:

    • 想知道为什么 Android Studio 不会因此而显示任何警告...
    【解决方案3】:

    好吧,经过很多尖叫和喊叫,包括在聊天中联系 Google Play 控制台支持(他们只是一级支持,所以......没有太多帮助)和电子邮件(他们让我太难了篮子并说他们无法为应用程序开发提供支持 - 什么?问题在于将应用程序上传到 Play 管理中心,而不是应用程序开发人员!),我发现了这个自我回答的问题 https://stackoverflow.com/a/54359729/845205

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

    【讨论】:

    • 谢谢,我也遇到了同样的问题,只是做了项目 -> clean 然后我创建了一个新的签名包,上传到商店,没有任何问题! Gradle 缓存是个奇怪的东西。
    【解决方案4】:

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

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

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

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

    【讨论】:

    • "换句话说,您需要创建一个不同的密钥库来签署您在 Play Signing 中注册的应用程序(理想情况下,每个应用程序一个),并确保您永远不会将该密钥库用作另一个应用程序的应用程序签名密钥。” 这就是我所说的 “我什至尝试创建一个包含新密钥的全新密钥库,但总是得到相同的错误。” 全新的密钥库,全新的密钥,甚至从未接近其他应用程序。还是一样的错误。
    • 我可能是错的,但我很确定问题出在你身上:你要么实际上没有创建新的密钥库,要么没有上传与新的密钥库。如果您不相信并且认为 Play 管理中心存在错误,我建议您寻求他们的支持(support.google.com/googleplay/android-developer/… - 他们甚至有一条聊天热线),他们可以在其中更多地查看特定案例详细。
    • 我确认 Pierre 是正确的,它通过使用任何其他应用程序未使用的新密钥来工作。您还可以在同一个密钥库中创建一个新别名以避免创建另一个密钥。
    【解决方案5】:

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

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

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

    【讨论】:

      【解决方案6】:

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

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

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

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

      【讨论】:

      • 你的调试版本和发布版本有什么不同?是什么原因导致您的发布变体不起作用?
      • Google 期望新版本用相同的变体替换旧版本。 @BabyishTank
      • 谢谢,这也是我的问题。此错误消息非常具有误导性。我向 Google 发送了反馈。
      • @Zwyx 是的,我完全同意,如果 Google 可以更详细地描述错误,它会更快地发现我们错误的根源。
      【解决方案7】:

      尝试从控制台中删除有关新应用的所有内容,然后首先生成新密钥并使用新密钥重新构建应用。然后你可以重新上传新的apk。

      【讨论】:

        【解决方案8】:

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

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

        【讨论】:

          【解决方案9】:

          我遇到了同样的问题,我通过删除我的应用程序并再次将其添加到游戏控制台来解决它。

          【讨论】:

            【解决方案10】:

            发生这种情况的另一种方式是,如果您在应用程序 build.gradle 中设置了signingConfig。当您制作捆绑包时,您在签名部分指定的内容似乎并不重要 - 即使您制作新的或选择其他一些密钥库 - 它将使用 gradle 文件中指定的那个。

            【讨论】:

              【解决方案11】:

              我也面临这个问题,我在 android > app> build.gradle > {buildType{release{ signingConfig signingConfigs.release }}} 中添加这一行 signingConfig signingConfigs.release

              【讨论】:

                【解决方案12】:

                就我而言,这是因为我在项目中选择 debug 文件夹而不是 release 文件夹作为 Android App Bundle 的目标。

                我需要 App Bundle 进行内部测试,所以我想这就是我选择它的原因。

                【讨论】:

                  【解决方案13】:

                  只需创建一个新密钥,它就会上传。

                  【讨论】:

                  • 这不是 OP 已经尝试过的吗?他们说I've even tried creating a whole new keystore with a new key in it, but always get the same error.
                  • 这是不可取的,因为它给开发人员增加了管理密钥和密钥库的负担。
                  猜你喜欢
                  • 2021-09-21
                  • 2022-07-13
                  • 1970-01-01
                  • 2021-08-12
                  • 2022-12-05
                  • 2021-10-10
                  • 2021-05-13
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多