Google Play - 应用程序包的错误签名密钥[重复]

Posted

技术标签:

【中文标题】Google Play - 应用程序包的错误签名密钥[重复]【英文标题】:GooglePlay - wrong signing key for app bundle [duplicate] 【发布时间】:2019-06-16 07:28:02 【问题描述】:

我刚刚开始使用 app bundle。我已经在仪表板的App signing 部分设置了两个证书(签名证书和上传证书)。

我已经构建了一个应用包并使用上传证书对其进行了签名,但是当我在android Instant Apps 下上传包时(这实际上是我切换到应用包的原因)它说:

Your Android App Bundle is signed with the wrong key. Ensure that your app bundle is signed with the correct signing key and try again: xx:xx:xx:xx.....

我已经手动检查了上传密钥库的 SHA-1(在终端中使用 keytool),它与 xx:xx:xx.... 匹配,它在错误消息中显示。

我做错了什么?应用程序包已使用所需的上传证书签名,但 google play 似乎不喜欢它。

想法?

【问题讨论】:

也许您的 app bundle 签名密钥与原始应用签名密钥不同? 是的。我签署的最后一个 apk 是用另一个密钥签署的,但这就是我定义签名和上传密钥库的原因,我有 google 的签名密钥让它在我的地方签署 apk,我正在使用上传密钥对其进行签名并给出它到谷歌。现在..为什么谷歌不喜欢上传密钥库...打败我?!或者这不是它应该工作的方式? 我已经尝试使用原始密钥库对捆绑包进行签名,直到现在我一直将其用于 apk,但它仍然不喜欢它。 好吧,我认为最好的方法是询问 Google Play 支持。据我所知,您需要使用与主 apk 相同的密钥对捆绑包进行签名。 我试过了,还是不接受app bundle...:( 【参考方案1】:

解决方案是一个非常基本的解决方案。我必须清理我的项目,然后重新构建它。

Android Studio 正在使用我正在使用的旧证书签署我的应用程序包。

我之前做的是转到Build -> Generate Signed Bundle / APK,我将文件选择器中的jks文件更改为新的上传jks。即使我选择了一个新的,Android Studio 似乎也会缓存旧的证书路径并使用它。可能是 AS 中的错误。

所以是的......现在如果我每次更改它工作的 jks 文件时清理项目,apk 或应用程序包都会使用正确的证书签名......

【讨论】:

我的话!多谢 !我用 web-storm gradlew bundleRelease 反应本机但没有成功,然后使用 android studio 这对我来说很好用! 不,这对我不起作用。上周我上传没问题。昨天做了一个小错误修复,根本没有其他更改,谷歌说“你的 Android App Bundle 是用错误的密钥签名的”。没有通知,也没有来自他们的电子邮件表明发生了变化。 这也适用于 Flutter 框架。运行 flutter clean 然后重建应用程序包解决了这个问题。【参考方案2】:

我尝试在此处和 this question 中使用多个答案,但不知何故我收到了此错误,因为我的 android/app/build.gradleandroid/gradle.properties 文件存在一些问题。

您应该检查的两件事(除了这里的其他解决方案)是:

    android/gradle.propertiesandroid/app/build.gradle 中,确保您的keystore 变量完全匹配。 在android/gradle.properties,你可能有这样的东西:
    MYAPP_RELEASE_STORE_FILE=<>
    MYAPP_RELEASE_KEY_ALIAS=<>
    MYAPP_RELEASE_STORE_PASSWORD=<>
    MYAPP_RELEASE_KEY_PASSWORD=<>
    
    确保这些变量名称完全android/app/build.gradle 中的名称匹配:
    android 
        ...
        signingConfigs 
            release 
                if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) 
                    storeFile file(MYAPP_RELEASE_STORE_FILE)
                    storePassword MYAPP_RELEASE_STORE_PASSWORD
                    keyAlias MYAPP_RELEASE_KEY_ALIAS
                    keyPassword MYAPP_RELEASE_KEY_PASSWORD
                
            
        
    
    
    android/app/build.gradle 中,确保在release buildTypes 中将signingConfig 设置为signingConfigs.release
    android 
        ...
        buildTypes 
            debug ...
            release 
                signingConfig signingConfigs.release
            
        
    
    

注意:如果您正在进行react-native 开发并发现自己在这里,请确保您遵循"Publishing to Google Play Store" 上的所有步骤。我以为我可以跳过几个步骤而不会引起问题,结果导致调试数小时

【讨论】:

【参考方案3】:

我看到有答案,但在我的情况下,我忘了删除

debuggable = true

来自应用程序 build.gradle

【讨论】:

【参考方案4】:

在我的情况下,问题是 Android 应用程序包,我忘记为项目增加 versionCode 并且它没有在控制台上显示该错误。相反,它显示了与证书 SHA 相关的错误。

【讨论】:

这解决了我从 Unity 构建的问题。不仅更新“Bundle Version Code”,而且“Version”也帮助解决了这个问题。 我没有忘记更改版本代码,但我做了第二次并且能够上传。支持这个解决方案,并为这种令人难以置信的误导性错误消息而该死的谷歌。【参考方案5】:

经过一番搜索,我发现我的testCoverageEnabled true构建类型中不小心出现了testCoverageEnabled true

release 
    testCoverageEnabled true
    ...

这将使 APK/App Bundle可调试,Google Play 管理中心会认为它未签名。删除它解决了这个问题。

【讨论】:

谢谢!它有帮助。为什么谷歌不发布任何关于此的文档?您为我节省了数小时的搜索时间!【参考方案6】:

App bundle 只是使用与 jarsigner 相同的格式进行签名。因此,您可以自己检查应用程序包签名的证书哈希。例如,在 linux 上:

zipinfo -1 $APK? \
    | grep -E "META-INF/.*(RSA|DSA|EC)$" \
    | xargs -I unzip -p $APK?  \
    | keytool -printcert

如果此输出显示的签名与正确的签名密钥匹配,则表明 Play 商店存在错误,您应该升级到 Play 管理中心支持。这可在 Play 管理中心的帮助菜单中找到。

另一方面,如果证书不匹配,那么即使您认为自己使用正确的密钥库/密钥进行签名,您也做错了,并且应用程序包未使用正确的上传证书进行签名。

【讨论】:

【参考方案7】:

我遇到这个错误是因为:-

    我创建了一个用于测试的新密钥,然后生成了一个 app bundles/apk 那个 apk/app 包有一些错误,所以在再次解决该错误后,我创建了一个新密钥并创建了一个全新的应用包/apk,其中发生了这个错误

因此,如果您做了类似的事情,那么请尝试在具有相同密码和相同密钥别名的密钥存储路径中提供 使用项目制作的第一个密钥的路径

这将起作用,因为我们只能为项目生成一个密钥,该密钥是生成的第一个密钥。每次当你想为你的应用程序制作一个 apk/app 包以用于发布/更新时,你必须提供相同的密钥和密码,因此强烈建议将密钥存储在安全的地方

注意:- 在某些情况下(如果您已经尝试过多次失败),在这种情况下,在构建中,您可能会在 Play 商店控制台上遇到类似“您已经有一个具有相同版本”的错误.gradle 文件只需将 versionCode 和 versionName no 加一并重新生成 apk/app 包

【讨论】:

【参考方案8】:

就我而言,我上传了错误的同名应用程序。只需确保您上传的 applicationId 与上一个相同。

【讨论】:

【参考方案9】:

对我来说,问题在于,在我的 google play 控制台中,我已经选择了玩应用签名,所以当我第一次上传 aab 时,google 注册并签署了我的应用以供后续发布。这意味着如果我上传另一个 aab,签名证书将与谷歌签名的证书不同。

我需要删除这个,所以我上传了另一个 aab。除此之外,我必须点击我的个人资料并选择管理开发者帐户。我看到我的 aab google 的草稿已经签名,我删除了这个,以便我可以生成并重新上传另一个。

当我删除它时,我从我的 android 工作室生成了另一个 aab 并将其再次上传到我的谷歌播放控制台。这一次,它没有给我错误签名密钥的警告

【讨论】:

【参考方案10】:

发生了一些事情改变了您的应用正在使用的密钥库!我只是建议最常见的事情。另一种可能性是有人运行 expo build:android -c 或 expo build:android --clear-credentials 或运行 expo credentials 并删除了密钥库。

如果不是其中之一,那么剩下的唯一可能性是谷歌更改了上传密钥库(极不可能)或在 expo 服务器上我们更改了您的密钥库而您没有请求它(没有发生这种情况的已知实例,极不可能)。

您可以通过查找您在 expo.io 上提交到商店的最新版本并验证用户名和 slug 是否符合您的预期,来验证您是否使用了相同的用户名和 slug。

如果这对您没有任何有用的结果,那么您可以要求 google play 重置您的上传密钥库 - android - Lost keystore file for an app (but have Google Play App Signing enabled)

【讨论】:

以上是关于Google Play - 应用程序包的错误签名密钥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Google Api 错误:禁止:将应用程序上传到 Play 商店时,Android App Bundle 使用错误的密钥签名

第一次尝试将应用上传到 Google Play 时出现错误“您的 Android App Bundle 使用错误的密钥签名。”

您的 Android App Bundle 使用错误的密钥进行签名。 (首次在 google play store 上传应用时)

unity google play 应用程序签名问题和密钥库

重建 react-native 后 Google Play Console 签名错误/无效签名

如何为 Google Play 商店签署我的颤振应用程序?