Android GooglePlay-应用程序包的签名密钥错误

Android GooglePlay-应用程序包的签名密钥错误,android,android-studio,google-play,Android,Android Studio,Google Play,我刚刚开始使用应用程序包。我已经在仪表板的应用程序签名部分设置了两个证书(签名证书和上载证书) 我已经构建了一个应用程序捆绑包,并用上传证书签名,但当我在Android Instant Apps下上传捆绑包时(事实上这就是我切换到应用程序捆绑包的原因),它说: 您的Android应用程序包使用了错误的密钥签名。确保使用正确的签名密钥对应用程序包进行签名,然后重试:xx:xx:xx:xx….. 我已经手动检查了上传密钥库的SHA-1(在终端中使用keytool),它与xx:xx:xx…匹配。。。。

我刚刚开始使用应用程序包。我已经在仪表板的
应用程序签名
部分设置了两个证书(签名证书和上载证书)

我已经构建了一个应用程序捆绑包,并用上传证书签名,但当我在
Android Instant Apps
下上传捆绑包时(事实上这就是我切换到应用程序捆绑包的原因),它说:

您的Android应用程序包使用了错误的密钥签名。确保使用正确的签名密钥对应用程序包进行签名,然后重试:xx:xx:xx:xx…..

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

我做错了什么?应用程序捆绑包是用所需的上传证书签署的,但google play似乎不喜欢它


创意?

应用程序捆绑包的签名格式与jarsigner相同。因此,您可以自己检查应用程序包签名的证书哈希。例如,在linux上:

zipinfo -1 ${APK?} \
    | grep -E "META-INF/.*(RSA|DSA|EC)$" \
    | xargs -I{} unzip -p ${APK?} {} \
    | keytool -printcert
如果此输出显示的签名与正确的签名密钥不匹配,则Play store中存在错误,您应该升级到Play Console支持。这可在播放控制台的“帮助”菜单上找到


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

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

Android Studio使用我使用的旧证书对我的应用程序包进行签名

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


所以是的。。。现在,如果我每次更改jks文件时都清理项目,apk或应用程序包将使用正确的证书进行签名…

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

经过一点搜索,我发现我的
版本中的
testCoverageEnabled true

release {
    testCoverageEnabled true
    ...
}

这将使APK/APP捆绑<强>可调试,并且谷歌播放控制台将考虑它没有签名< /强>。删除此选项解决了问题。

我看到了答案,但就我而言,我忘了删除

debuggable = true

从app build.gradle

中,我尝试在这里和中使用多个答案,但不知何故,我遇到了这个错误,因为我的
android/app/build.gradle
android/gradle.properties
文件存在一些问题

除了此处的其他解决方案外,您还应检查两件事:

  • android/gradle.properties
    android/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
    中,确保将
    signingConfig
    设置为
    signingConfigs.release
    release
    构建类型中:
    
    android {
        ...
        buildTypes {
            debug ...
            release {
                signingConfig signingConfigs.release
            }
        }
    }
    

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

    我遇到了这个错误,因为:-

  • 我为测试创建了一个新密钥,然后生成了一个appbundles/apk
  • 该apk/apk捆绑包有一些错误,所以在再次解决该错误后,我创建了一个新密钥,并创建了一个发生此错误的全新apk捆绑包/apk
  • 所以,如果您执行了类似的操作,那么请尝试提供使用project制作的第一个密钥的路径,即具有相同密码和相同密钥别名的密钥存储路径

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


    注意:-在某些情况下(如果您已经多次尝试失败),您可能会在play store控制台上遇到类似“您已经有一个版本相同”的错误。在这种情况下,在build.gradle文件中,只需逐个递增versionCode和versionName no,然后重新生成apk/app包,我上传了同名的错误应用程序。只需确保您上传的应用程序ID与前一个相同。

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

    我需要删除这个,所以我上传了另一个aab。除此之外,我必须单击我的个人资料并选择管理开发人员帐户。我看到了我的aab的草稿,谷歌已经签署了,我删除了这个,这样我就可以生成并重新发布另一个


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

    您的应用正在使用的密钥库发生了变化!我只是在建议最普通的事情。另一种可能是有人运行expo-build:android-c或expo-build:android——清除凭据或运行expo凭据并删除密钥库

    如果是
    android {
        ...
        buildTypes {
            debug ...
            release {
                signingConfig signingConfigs.release
            }
        }
    }