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

时间:2019-01-21 23:37:09

标签: android android-studio google-play-console

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

  

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

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

在为该应用注册Google Play的应用签名时,我选择了“让Google管理和保护您的应用签名密钥(推荐)” 选项,并且选择了我已阅读的所有文档,您用来首先对应用程序进行签名的密钥将成为“上传密钥”,因此看来我可以正确执行所有操作,但没有骰子。

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

13 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:7)

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

enter image description here

答案 2 :(得分:2)

对我来说,解决方案只是更改 build变体

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

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

我的修正:上传与原始版本相同的版本。他们必须匹配!

答案 3 :(得分:2)

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

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

真正令人讨厌的部分是只能选择一次此选项,因此我们必须删除我们的应用程序并重新创建它。

答案 4 :(得分:1)

我遇到了同样的问题,我通过删除我的应用程序并将其重新添加到游戏机上来解决了这个问题。

答案 5 :(得分:1)

尝试从控制台中删除有关新应用程序的所有内容,然后从生成新密钥开始,并使用新密钥重建应用程序。然后,您可以重新上传新的APK。

答案 6 :(得分:1)

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

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

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

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

答案 7 :(得分:1)

好吧,经过大量的尖叫和叫喊,包括在聊天中获得Google Play控制台的支持(它们只是第一级的支持,所以...帮助不大)和电子邮件(这使我陷入了沉重的负担)他说他们不能为应用程序开发提供支持-什么?问题是与将应用程序上载到Play控制台有关,而不是与应用程序开发者有关!),我发现了这个自我回答的问题https://stackoverflow.com/a/54359729/845205

基本上,请确保在进行与Android Studio中的签名相关的任何操作时都在执行“清理并重建项目”。由于某种原因,它认为我的新应用正在使用旧应用中的密钥,并且一直对此进行签名。 (我想解决方案毕竟是应用程序开发支持!)

答案 8 :(得分:1)

我也面临这个问题,我在Android> app> build.gradle> signingConfig signingConfigs.release

中添加了这行{buildType{release{ signingConfig signingConfigs.release }}}

答案 9 :(得分:1)

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

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

在我的情况下,这是因为我在项目中选择了 debug 文件夹而不是release文件夹作为Android App Bundle的目的地。

我需要App Bundle进行内部测试,所以我想这就是为什么选择它很自然。

答案 12 :(得分:-1)

只需创建一个新密钥,即可上传。