正在将 Android App Bundle 上传到 Google Play 管理中心 - 密钥签名错误
Uploading Android App Bundle to Google Play Console - key signing error
我正在尝试将全新的 .aab 文件上传到 Google Play 管理中心,但不断收到此错误:
Upload failed
You uploaded an APK or Android App Bundle that is signed
with a key that is also used to sign APKs that are delivered to users.
Because you are enrolled in App Signing by Google Play, you should
sign your APK or Android App Bundle with a new key before you upload
it.
我完全被难住了,因为我在生成应用程序包时为这个应用程序包生成了一个新密钥,即通过 [=26= 中的构建 > 生成签名包/APK... 菜单项] Studio,所以是一个全新的密钥,没有被其他应用程序使用。
我什至尝试创建一个全新的密钥库,其中包含一个新密钥,但总是出现相同的错误。这是其他人遇到的怪癖吗?
当通过 Google Play 为这个应用程序注册 App Signing 时,我选择了 "Let Google manage and protect your app signing key (recommended)" 选项,并且从我阅读的所有文档中,您用来签署应用程序的密钥首先变为 "Upload Key",所以看起来我做的一切都是正确的,但没有骰子。
有没有人对此有任何建议或过去的经验?
我遇到了同样的问题,我通过删除我的应用程序并再次添加它来玩控制台解决了这个问题。
尝试从控制台中删除有关新应用程序的所有内容,然后开始生成新密钥并使用新密钥重建应用程序。然后你可以重新上传新的apk。
"through the Build > Generate Signed Bundle / APK... menu item in Android Studio, so it is a brand new key, unused by other apps."
不是真的。 Android Studio 使用的密钥库与 Android SDK 安装相关联,因此从您的 Studio 创建的所有应用程序都使用相同的密钥进行签名。
实际情况是您必须创建另一个应用程序,使用该密钥库对其进行签名,并将其上传到 Play 管理中心,从而使其成为用于对提供给最终用户的 APK 进行签名的密钥。同时,您创建了另一个在 Play Signing 中注册的应用:对于此应用,上传证书是从您上传的第一个 APK 中提取的。由于您也使用 Studio 签署了该 APK,因此使用了相同的密钥库。 Play 检测到这两个应用程序使用的是相同的证书,并且由于您将相同的密钥用于两个不同的目的(第一个应用程序的应用程序签名密钥和第二个应用程序的上传密钥),Play 拒绝了它。原因是应用签名密钥比上传密钥重要得多(后者可以重置,而第一个不能),因此您不应该将它们用于两个不同的目的。
换句话说,您需要创建一个不同的密钥库来签署您在 Play Signing 中注册的应用(理想情况下,每个应用一个),并确保您永远不会将该密钥库用作另一个应用的应用签名密钥.
好吧,经过大量的尖叫和呼喊,包括在聊天中联系 Google Play 控制台支持(他们只是一级支持,所以...帮助不大)和电子邮件(谁把我放在太难的篮子里,说他们不能为应用程序开发提供支持——什么?问题是关于将应用程序上传到 Play Console,而不是应用程序开发!),我发现了这个自我回答的问题 .
基本上,确保您在执行 任何 与登录 Android Studio 相关的事情时都在执行清理和重建项目。出于某种原因,它认为我的新应用程序正在使用我旧应用程序中的密钥并继续使用它进行签名。 (我想解决方案毕竟是应用程序开发支持!)
另一种可能发生这种情况的方式是,如果您在应用程序中设置了 signingConfig build.gradle。在制作捆绑包时,您在签名部分指定的内容似乎无关紧要 - 即使您制作新的或选择其他密钥库 - 它也会使用 gradle 文件中指定的密钥库。
我面临同样的问题,在我的情况下 signingConfig
已设置,我犯了一个简单的错误,我忘记将可调试的应用程序更改为 false。所以即使我从菜单或 gradle 命令生成,构建已成功生成,但它是可调试的,所以玩商店不接受签名的 apk 并给我和 Upload Failed The Android Bundle was not Signed in
.
之类的消息
我的解决方案原来是更改构建变体。
回顾一下,当我尝试将已签名的 .aab 捆绑包文件上传到 Google Play 开发者控制台时,我收到了此错误 The Android App Bundle 未签名。
请记住,此错误不明确,可能是由本页其他答案中可见的许多问题引起的。我最初使用 release
构建变体上传了我的应用程序。忘记了我最初使用的变体,我尝试上传 debug
构建变体并收到此错误。
我的修复:上传与原始版本相同的构建变体。他们必须匹配!
我也遇到这个问题我在 android > app> build.gradle > {buildType{release{ signingConfig signingConfigs.release }}}
中添加了这一行 signingConfig signingConfigs.release
以下解决方案对我有用。将以下两行添加到您的 gradle 文件中。
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
**signingConfig
debuggable = false**
}
在我的例子中,这是因为我在我的项目中选择 debug 文件夹而不是 release 文件夹作为 Android App Bundle 的目标。
我需要 App Bundle 进行内部测试,所以我想这就是我自然而然地选择它的原因。
我在我们的应用程序中遇到了这个错误。我们对所有应用使用相同的上传密钥。
因此,当您创建一个新的应用程序时,请确保您 select 选择 Use an existing key that you sign an app with
而不是 (Google recommended)
选项,后者将向他们发送一个唯一的上传密钥。
真正烦人的部分是这个选项只能 selected 一次,所以我们不得不删除我们的应用程序并重新创建它。
只需创建一个新密钥,它就会上传。
确保在 build.gradle
文件中将应用可调试更改为 false
我知道这是一个老问题,但由于我刚刚遇到这个问题,而我的解决方案没有列出,所以我想分享它,以便它可以帮助未来的堆栈。
我对应用程序签名的问题是条目 testCoverageEnabled true
在
里面
buildTypes{ release { ... }}
即使设置了 debuggable false
,谷歌的错误消息是 Upload Failed The Android Bundle was not Signed
或 debuggable version was uploaded
将 testCoverageEnabled 标志设置为 false 解决了我的问题。
我正在尝试将全新的 .aab 文件上传到 Google Play 管理中心,但不断收到此错误:
Upload failed
You uploaded an APK or Android App Bundle that is signed with a key that is also used to sign APKs that are delivered to users. Because you are enrolled in App Signing by Google Play, you should sign your APK or Android App Bundle with a new key before you upload it.
我完全被难住了,因为我在生成应用程序包时为这个应用程序包生成了一个新密钥,即通过 [=26= 中的构建 > 生成签名包/APK... 菜单项] Studio,所以是一个全新的密钥,没有被其他应用程序使用。
我什至尝试创建一个全新的密钥库,其中包含一个新密钥,但总是出现相同的错误。这是其他人遇到的怪癖吗?
当通过 Google Play 为这个应用程序注册 App Signing 时,我选择了 "Let Google manage and protect your app signing key (recommended)" 选项,并且从我阅读的所有文档中,您用来签署应用程序的密钥首先变为 "Upload Key",所以看起来我做的一切都是正确的,但没有骰子。
有没有人对此有任何建议或过去的经验?
我遇到了同样的问题,我通过删除我的应用程序并再次添加它来玩控制台解决了这个问题。
尝试从控制台中删除有关新应用程序的所有内容,然后开始生成新密钥并使用新密钥重建应用程序。然后你可以重新上传新的apk。
"through the Build > Generate Signed Bundle / APK... menu item in Android Studio, so it is a brand new key, unused by other apps."
不是真的。 Android Studio 使用的密钥库与 Android SDK 安装相关联,因此从您的 Studio 创建的所有应用程序都使用相同的密钥进行签名。
实际情况是您必须创建另一个应用程序,使用该密钥库对其进行签名,并将其上传到 Play 管理中心,从而使其成为用于对提供给最终用户的 APK 进行签名的密钥。同时,您创建了另一个在 Play Signing 中注册的应用:对于此应用,上传证书是从您上传的第一个 APK 中提取的。由于您也使用 Studio 签署了该 APK,因此使用了相同的密钥库。 Play 检测到这两个应用程序使用的是相同的证书,并且由于您将相同的密钥用于两个不同的目的(第一个应用程序的应用程序签名密钥和第二个应用程序的上传密钥),Play 拒绝了它。原因是应用签名密钥比上传密钥重要得多(后者可以重置,而第一个不能),因此您不应该将它们用于两个不同的目的。
换句话说,您需要创建一个不同的密钥库来签署您在 Play Signing 中注册的应用(理想情况下,每个应用一个),并确保您永远不会将该密钥库用作另一个应用的应用签名密钥.
好吧,经过大量的尖叫和呼喊,包括在聊天中联系 Google Play 控制台支持(他们只是一级支持,所以...帮助不大)和电子邮件(谁把我放在太难的篮子里,说他们不能为应用程序开发提供支持——什么?问题是关于将应用程序上传到 Play Console,而不是应用程序开发!),我发现了这个自我回答的问题
基本上,确保您在执行 任何 与登录 Android Studio 相关的事情时都在执行清理和重建项目。出于某种原因,它认为我的新应用程序正在使用我旧应用程序中的密钥并继续使用它进行签名。 (我想解决方案毕竟是应用程序开发支持!)
另一种可能发生这种情况的方式是,如果您在应用程序中设置了 signingConfig build.gradle。在制作捆绑包时,您在签名部分指定的内容似乎无关紧要 - 即使您制作新的或选择其他密钥库 - 它也会使用 gradle 文件中指定的密钥库。
我面临同样的问题,在我的情况下 signingConfig
已设置,我犯了一个简单的错误,我忘记将可调试的应用程序更改为 false。所以即使我从菜单或 gradle 命令生成,构建已成功生成,但它是可调试的,所以玩商店不接受签名的 apk 并给我和 Upload Failed The Android Bundle was not Signed in
.
我的解决方案原来是更改构建变体。
回顾一下,当我尝试将已签名的 .aab 捆绑包文件上传到 Google Play 开发者控制台时,我收到了此错误 The Android App Bundle 未签名。
请记住,此错误不明确,可能是由本页其他答案中可见的许多问题引起的。我最初使用 release
构建变体上传了我的应用程序。忘记了我最初使用的变体,我尝试上传 debug
构建变体并收到此错误。
我的修复:上传与原始版本相同的构建变体。他们必须匹配!
我也遇到这个问题我在 android > app> build.gradle > {buildType{release{ signingConfig signingConfigs.release }}}
signingConfig signingConfigs.release
以下解决方案对我有用。将以下两行添加到您的 gradle 文件中。
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
**signingConfig
debuggable = false**
}
在我的例子中,这是因为我在我的项目中选择 debug 文件夹而不是 release 文件夹作为 Android App Bundle 的目标。
我需要 App Bundle 进行内部测试,所以我想这就是我自然而然地选择它的原因。
我在我们的应用程序中遇到了这个错误。我们对所有应用使用相同的上传密钥。
因此,当您创建一个新的应用程序时,请确保您 select 选择 Use an existing key that you sign an app with
而不是 (Google recommended)
选项,后者将向他们发送一个唯一的上传密钥。
真正烦人的部分是这个选项只能 selected 一次,所以我们不得不删除我们的应用程序并重新创建它。
只需创建一个新密钥,它就会上传。
确保在 build.gradle
文件中将应用可调试更改为 false
我知道这是一个老问题,但由于我刚刚遇到这个问题,而我的解决方案没有列出,所以我想分享它,以便它可以帮助未来的堆栈。
我对应用程序签名的问题是条目 testCoverageEnabled true
在
buildTypes{ release { ... }}
即使设置了 debuggable false
,谷歌的错误消息是 Upload Failed The Android Bundle was not Signed
或 debuggable version was uploaded
将 testCoverageEnabled 标志设置为 false 解决了我的问题。