Flutter安卓应用使用与原生应用相同包名和签名时Google登录失败如何解决?
错误说明
com.google.android.gms.common.api.ApiException: 10 属于Google OAuth服务的配置不匹配错误,你已经确认包名、签名文件与可正常运行的原生安卓应用一致,可按以下步骤逐一排查:
排查步骤
- 检查Flutter安卓模块的签名配置是否生效
多数同类问题都是因为android/app/build.gradle未正确配置签名规则,即使你放置了正确的keystore文件,打包时依然调用了Android默认的调试签名。打开android/app/build.gradle,确认signingConfigs代码块已正确填写签名文件路径、别名、密码,且对应构建类型(debug/release)的buildTypes配置中明确指定了signingConfig signingConfigs.你的配置名 - 检查Google服务配置文件位置
确认从Google Cloud控制台下载的google-services.json文件放置在Flutter项目的android/app/根目录下,不要放到其他子目录。打开配置文件校验client字段下记录的包名、SHA-1证书指纹与你实际使用的信息完全匹配 - 检查Google服务插件配置
确认android/build.gradle的dependencies代码块中已添加Google服务依赖:
同时确认classpath 'com.google.gms:google-services:4.3.15'android/app/build.gradle文件的末尾已添加插件引入配置:apply plugin: 'com.google.gms.google-services' - 清除缓存后校验签名
执行以下命令清除项目缓存后重新打包:
打包完成后可通过以下命令查看APK的实际签名指纹,与Google Cloud控制台配置的指纹做比对,确认完全一致:flutter cleankeytool -printcert -jarfile 你的安装包名.apk
特殊场景说明
如果你在debug模式下测试,注意不要混淆debug和release的签名配置,两个构建类型如果使用不同签名,需要将对应签名的SHA-1指纹都添加到Google Cloud控制台对应项目的OAuth 2.0客户端ID列表中。
内容的提问来源于stack exchange,提问作者jamili obulareddy
相关产品推荐
相关产品推荐

