React Native Expo构建AAB上传Google Play签名密钥错误解决方案求助
React Native Expo AAB上传Google Play签名密钥不匹配解决方案
问题明确
上传AAB至Google Play控制台时,收到签名密钥不匹配错误:
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.
Your app bundle is expected to be signed with the certificate with fingerprint:
SHA1: E5:9A:50:AD:5E:95:42:EB:EE:1C:5A:88:AC:91:1A:7D:71:02:C7:DE
but the certificate used to sign the app bundle that you uploaded has fingerprint:
SHA1: 4C:EE:46:2F:4A:E7:CB:FC:C5:78:04:02:C9:2E:87:1E:D3:4B:90:51
更换新密钥库后问题依旧。
分步解决
1. 核对Google Play控制台的签名密钥类型
- 打开Google Play控制台,进入目标应用 → 应用签名页面:
- 若开启「Google Play应用签名」,需区分上传密钥和应用签名密钥:错误提示的期望指纹如果是「应用签名证书」的SHA1,只需确保上传包用「上传密钥」签名即可;如果是「上传密钥证书」的SHA1,必须用对应密钥签名。
- 若未开启Google Play应用签名,期望指纹就是应用本身的签名密钥SHA1,直接核对本地密钥库即可。
2. 验证本地密钥库的SHA1指纹
用keytool命令查看本地密钥库的指纹:
keytool -list -v -keystore 你的密钥库路径.jks
输入密钥库密码后,找到SHA1字段,对比是否和Google期望的指纹一致。
3. 修正Expo项目的签名配置
Managed Workflow(纯Expo项目)
- 打开
app.json或app.config.js,检查android节点下的签名配置:
确保所有字段指向正确的密钥库文件。"android": { "keystorePath": "./path/to/your-keystore.jks", "keystoreAlias": "你的密钥别名", "keystorePassword": "密钥库密码", "keyPassword": "密钥密码" } - 清除Expo构建缓存后重新构建AAB:
expo r -c expo build:android -t app-bundle
Bare Workflow(原生混合项目)
- 打开
android/app/build.gradle,找到signingConfigs下的release配置:
确认配置正确后重新构建AAB:signingConfigs { release { storeFile file("你的密钥库路径.jks") storePassword "密钥库密码" keyAlias "你的密钥别名" keyPassword "密钥密码" } }./gradlew bundleRelease
4. 更换密钥库后的关键操作
如果是新生成的密钥库,必须先在Google Play控制台更新上传密钥:
- 进入应用签名页面,点击「更换上传密钥」,用
keytool生成CSR文件:keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks - 将生成的CSR文件提交给Google,审核通过后再用新密钥签名上传AAB。
- 注意:若丢失的是应用签名密钥,无法自行更换,需联系Google支持并提供应用所有权证明申请更换。
5. 验证最终AAB的签名
构建完成后,用apksigner验证AAB的签名指纹:
apksigner verify --print-certs app/release/app-release.aab
确认输出的SHA1指纹与Google期望的一致后,再上传至Google Play控制台。
内容的提问来源于stack exchange,提问作者Owais Bhat
相关产品推荐
相关产品推荐

