Android Google登录在Release签名APK正常但.aab发布包失效问题
问题诱因
- 核心原因是SHA-1指纹不匹配:当你使用AAB格式发布且开启了Google Play应用签名功能时,Google Play会自动用其托管的应用签名密钥对最终分发的APK重签名,你此前在Firebase、Google Cloud控制台配置的仅为本地打包所用的上传密钥的SHA-1指纹,缺少Google Play托管签名密钥的SHA-1,导致Google登录服务校验不通过,抛出Api Exception Error 10。
- 少数未开启Google Play应用签名的场景下,问题源于AAB打包配置错误:部分构建环境会默认对AAB使用调试签名,未正确加载你配置的Release签名信息,导致和后台配置的SHA-1不匹配。
- 本地用
bundletool转换AAB测试的场景下,若未在转换时指定Release签名参数,转换后生成的APK会使用默认调试签名,同样会触发该错误。
解决方案
已开启Google Play应用签名的场景
- 打开Google Play Console,进入对应应用的「设置」-「应用完整性」页面,在「应用签名密钥证书」板块复制SHA-1指纹
- 将复制的SHA-1分别添加到对应平台的配置中:
- Firebase控制台:进入对应项目的「项目设置」-「您的应用」,在「SHA证书指纹」列表新增该指纹
- Google Cloud控制台:进入对应项目的「API和服务」-「凭据」,找到对应Android端的OAuth 2.0客户端ID,在签名配置中新增该SHA-1
- 重新下载Firebase项目的
google-services.json文件,替换项目中原有的对应文件 - 重新构建Release版AAB包即可恢复正常
未开启Google Play应用签名的场景
检查项目级build.gradle的签名配置,确保Release构建类型的签名配置和打包Release APK的配置完全一致,参考配置如下:
android { signingConfigs { release { storeFile file("你的release签名密钥文件路径") storePassword "你的密钥库密码" keyAlias "你的release密钥别名" keyPassword "你的密钥密码" } } buildTypes { release { signingConfig signingConfigs.release // 其余原有配置保持不变 } } }
本地用bundletool测试的场景
转换AAB为APK时需额外指定Release签名参数,示例命令如下:java -jar bundletool.jar build-apks --bundle=你的应用.aab --output=输出的.apks --ks=你的release签名密钥文件 --ks-key-alias=你的release密钥别名 --ks-pass=pass:你的密钥库密码 --key-pass=pass:你的密钥密码
内容的提问来源于stack exchange,提问作者Vamsi Reddy
相关产品推荐
相关产品推荐

