繁体   English   中英

将 Android App Bundle 上传到 Google Play 控制台 - 密钥签名错误

[英]Uploading Android App Bundle to Google Play Console - key signing error

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

上传失败
您上传的 APK 或 Android App Bundle 已使用密钥进行签名,该密钥还用于对交付给用户的 APK 进行签名。 因为您注册了 Google Play 的 App Signing,所以您应该在上传之前使用新密钥对您的 APK 或 Android App Bundle 进行签名。

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

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

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

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

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

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

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

在此处输入图片说明

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

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

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

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

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

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

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

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

我的解决方案原来是改变构建变体的问题

回顾一下,当我尝试将我签名的 .aab 包文件上传到 Google Play Console 以供开发人员使用时,我收到此错误Android App Bundle 未签名。

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

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

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

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

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

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

我也面临这个问题,我加入这行signingConfig signingConfigs.release在android系统>应用程序>的build.gradle> {buildType{release{ signingConfig signingConfigs.release }}}

就我而言,这是因为我在我的项目中选择了调试文件夹而不是发布文件夹作为 Android App Bundle 的目标。

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

我知道这是一个老问题,但由于我刚刚遇到这个问题并且没有列出我的解决方案,所以我想分享它以便它可以帮助未来的一些堆栈。

我签署应用程序的问题是条目testCoverageEnabled true位于

buildTypes{ release { ... }}

即使设置了debuggable false ,谷歌的错误消息是Upload Failed The Android Bundle was not Signeddebuggable version was uploaded

将 testCoverageEnabled 标志设置为 false 解决了我的问题。

从 CI/CD 将 aab 上传到 Playstore 时遇到类似问题,添加

signingConfig 签名配置.release

在发布配置中如下

    release {
        signingConfig signingConfigs.release
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }

确保您已在 build.gradle 中包含签名配置,如下所示

signingConfigs {
    release {
        storeFile file("$projectDir/dummy.keystore")
        keyAlias 'dummyAlias'
        storePassword 'dummyPassword'
        keyPassword 'dummyPassword'
    }
}

就我而言,我有

可调试的真

in. 正确值为false

buildTypes
     {
         release {

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM