Flutter Firebase谷歌登录Release包出现PlatformException(10)求助
Flutter Firebase谷歌登录Release包出现PlatformException(10)的排查方案
PlatformException(10)对应Google登录的SIGN_IN_FAILED错误,Debug模式正常但Release异常,核心是Release环境的配置和Debug存在差异,按以下步骤逐一排查:
1. 核对Release专属SHA证书指纹
Debug和Release的SHA指纹完全不同,禁止直接复用Debug的:
- 用keytool生成Release密钥的SHA值:
keytool -list -v -keystore 你的Release密钥文件路径.jks -alias 密钥别名 - 把输出的SHA-1和SHA-256完整复制到Firebase控制台「项目设置」→「应用」→「SHA证书指纹」里,注意不要漏填或输入错误(比如多空格、大小写问题)
- 若使用Google Play App Signing,必须额外把Google Play控制台「应用签名」里的SHA指纹也添加到Firebase——发布后Google会替换你的APK签名,这是多数人踩坑的关键点
2. 确认google-service.json是最新且适配Release的
- 每次更新SHA指纹后,都要从Firebase控制台重新下载google-service.json,替换到android/app目录下
- 打开下载的文件,检查
oauth_client数组里是否存在对应Release包的条目,格式示例:
没有这个条目说明SHA配置未生效"oauth_client": [ { "client_id": "xxx.apps.googleusercontent.com", "client_type": 1, "android_info": { "package_name": "你的应用包名", "certificate_hash": "Release SHA-1的十六进制值(小写、去掉冒号)" } } ]
3. 检查Android Release构建的签名配置
- 打开android/app/build.gradle,确保Release构建使用的是你自己的密钥库,而非默认调试签名:
android { signingConfigs { release { storeFile file("你的密钥库路径.jks") storePassword "密钥库密码" keyAlias "密钥别名" keyPassword "密钥密码" } } buildTypes { release { signingConfig signingConfigs.release // 其他Release配置 } } } - 若开启了R8/ProGuard,避免混淆Google登录相关类,在proguard-rules.pro添加:
-keep class com.google.android.gms.auth.api.signin.** { *; } -keep class com.google.firebase.auth.** { *; }
4. 验证应用包名完全一致
Firebase控制台的应用包名,必须和AndroidManifest.xml、build.gradle里的applicationId完全匹配,大小写、后缀都不能出错
5. 本地测试Release APK
先构建带签名的本地Release APK测试:
flutter build apk --release
安装到设备后测试登录,如果正常,说明问题出在Google Play App Signing的SHA配置;如果还是报错,回到前面步骤重新核对所有配置
内容的提问来源于stack exchange,提问作者Anurag dubey
相关产品推荐
相关产品推荐

