Flutter生产环境Android端Google Sign-In报错问题求助
解决Flutter安卓生产环境Google Sign-In认证失败(ApiException:10)的方案
核心排查方向:Google Play应用签名机制的影响
当应用通过Google Play发布时,Google会替换你上传的APK签名,这时候必须额外配置Google Play生成的上传密钥SHA-1/SHA-256到Firebase控制台——哪怕原Kotlin项目的SHA-1已经存在,也不代表覆盖了生产环境的实际签名需求。
具体操作步骤
- 登录Google Play控制台,进入目标应用 → 应用签名页面
- 复制页面内上传密钥证书对应的SHA-1和SHA-256值(注意不是你本地的签名密钥)
- 打开Firebase控制台,进入项目 → 设置 → 项目设置 → 应用
- 找到对应安卓应用,点击添加指纹,将复制的SHA-1和SHA-256全部添加
- 等待5-10分钟让配置生效,重新构建生产包上传至Google Play
其他可行修复点
- 核对google_sign_in的客户端ID:确保Flutter代码中
clientId使用的是Firebase控制台提供的安卓OAuth客户端ID,而非iOS或Web端ID。可在Firebase项目设置的OAuth 2.0 客户端ID列表中找到对应安卓的ID替换配置。 - 检查Gradle签名配置:在安卓模块的
build.gradle(app级)中,确认release构建的签名配置指向你上传到Google Play的密钥库,避免本地调试密钥与上传密钥混淆:
android { signingConfigs { release { keyAlias '你的密钥别名' keyPassword '密钥密码' storeFile file('你的密钥库文件.jks') storePassword '密钥库密码' } } buildTypes { release { signingConfig signingConfigs.release // 其他构建配置 } } }
- 重置用户端凭据:让测试用户在设备上清除Google Play商店缓存,退出Google账号后重新登录,再尝试Flutter应用的登录流程。
- 验证OAuth客户端关联:在与Firebase绑定的Google Cloud控制台中,进入API和服务 → 凭据,检查安卓客户端ID是否关联了正确的应用包名及所有相关SHA-1(包括Google Play生成的上传密钥SHA-1)。
开发环境正常的原因
开发环境使用的是本地调试密钥的SHA-1,该指纹已在Firebase配置完成;而生产环境中Google Play替换了应用签名,导致实际运行的应用签名SHA-1与Firebase配置不匹配,最终触发ApiException:10(此错误最常见的诱因就是签名指纹不匹配)。
内容的提问来源于stack exchange,提问作者MR. UNBOX
相关产品推荐
相关产品推荐

