我刚刚开始使用应用程序捆绑包。我已经在信息中心的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似乎不喜欢它。
想法?
答案 0 :(得分:7)
该解决方案是非常基本的解决方案。我不得不清理我的项目,然后重建它。
Android Studio正在使用我使用的旧证书对我的应用程序包进行签名。
我之前所做的是转到Build -> Generate Signed Bundle / APK
,我将文件选择器中的jks文件更改为新的上载jks。即使我选择了新证书路径,Android Studio似乎也会缓存并使用旧证书路径。可能是AS中的错误。
是的...现在,如果我每次更改jks文件时都清理项目,那么apk或应用程序包将使用适当的证书签名...
答案 1 :(得分:3)
我看到有答案了,但就我而言,我忘了删除
debuggable = true
来自app build.gradle
答案 2 :(得分:1)
应用捆绑包仅使用与jarsigner相同的格式进行签名。因此,您可以自己检查应用程序包签名的证书哈希。例如,在linux上:
zipinfo -1 ${APK?} \
| grep -E "META-INF/.*(RSA|DSA|EC)$" \
| xargs -I{} unzip -p ${APK?} {} \
| keytool -printcert
如果此输出显示的签名与正确的签名密钥不匹配,则说明Play商店中存在错误,您应该升级到Play控制台支持。这在Play控制台的帮助菜单上可用。
另一方面,如果证书不匹配,那么即使您认为您使用正确的密钥库/密钥进行签名,也表示您做错了事,并且该应用捆绑包未使用正确的上传证书进行签名。< / p>
答案 3 :(得分:1)
经过一番搜索,我发现我的testCoverageEnabled true
构建类型不小心有release
。
release {
testCoverageEnabled true
...
}
这将使APK / App Bundle变得可调试,而Google Play控制台会认为它未签名。删除它可以解决问题。
答案 4 :(得分:1)
我遇到这个错误是因为:-
所以如果你做了这样的事情,那么尝试提供一个用项目制作的第一个密钥的路径,在具有相同密码和相同密钥别名的密钥存储路径中
这会起作用,因为我们只能有一个项目的密钥,这是生成的第一个密钥。并且每次当您想要为您的应用制作 apk/app 捆绑包以用于发布/更新目的时,您都必须提供相同的密钥和密码,因此强烈建议将密钥存储在安全的地方
注意:- 在某些情况下(如果您已经多次尝试失败),在这种情况下,在构建过程中,您可能会在 Play 商店控制台上遇到“您已经有一个具有相同版本的尝试”错误.gradle 文件只是将 versionCode 和 versionName no 增加一并重新生成 apk/app bundles
答案 5 :(得分:0)
在我的情况下,问题是Android App捆绑包,我忘记为项目增加versionCode
,并且在控制台上未显示该错误。而是显示与证书SHA相关的错误。
答案 6 :(得分:0)
我尝试在此处和this question中使用多个答案,但是由于我的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
中的变量名匹配:
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
中,确保在signingConfig
signingConfigs.release
中将release
设置为buildTypes
:
android {
...
buildTypes {
debug ...
release {
signingConfig signingConfigs.release
}
}
}
注意:如果您正在进行react-native
开发,并发现自己在这里,请确保遵循"Publishing to Google Play Store"上的所有步骤。我以为我可以跳过几步而不会引起问题,这导致调试数小时
答案 7 :(得分:0)
就我而言,我上传了错误的同名应用程序。只需确保您上传的 applicationId 与上一个相同。
答案 8 :(得分:0)
对我来说,问题在于,在我的 google play 控制台中,我已经选择了播放应用签名,所以当我第一次上传 aab 时,google 注册并签署了我的应用程序以供后续版本使用。这意味着如果我上传另一个 aab,签名的证书将与谷歌签名的证书不同。
我需要删除它,所以我上传了另一个 aab。要做到这一点,我必须点击我的个人资料并选择管理开发者帐户。我看到我的 aab 谷歌已经签名的草稿,我删除了它,以便我可以生成并重新上传另一个。
当我删除它时,我从我的 android studio 生成了另一个 aab 并再次上传到我的 google play 控制台。这一次,它没有给我错误签名密钥的警告
答案 9 :(得分:0)
您的应用程序使用的密钥库发生了变化!我只是建议最常见的事情。另一种可能性是有人运行 expo build:android -c 或 expo build:android --clear-credentials 或运行 expo 凭据并删除密钥库。
如果这不是其中之一,那么剩下的唯一可能性就是 google 更改了上传密钥库(极不可能),或者在博览会服务器上我们更改了您的密钥库而无需您请求(没有已知的发生这种情况的实例,极不可能) ).
您可以通过查找您在 expo.io 上提交给商店的最新版本并验证用户名和 slug 是否符合您的预期来验证您使用的用户名和 slug 是否相同。
如果这对您没有任何有用的结果,那么您可以要求 google play 重置您的上传密钥库 - android - Lost keystore file for an app (but have Google Play App Signing enabled)