Google Play内部渠道Android应用Firebase认证与Crashlytics问题
以下是排除SHA-1配置错误后的具体排查方向:
确认
google-services.json是否正确嵌入release构建
检查项目中是否为release构建单独配置了google-services.json(放置在app/src/release/目录下),而非复用debug版本的文件。同时验证GitHub Action构建过程中,是否将正确的release版json文件打包进bundle,避免因环境配置错误导致Firebase服务无法匹配。检查Google Cloud OAuth客户端ID配置
Firebase Google登录依赖Google Cloud的OAuth 2.0客户端ID,前往Google Cloud Console对应项目的「API和服务」→「凭据」页面,检查Android类型的客户端ID是否包含以下信息:- 正确的应用包名
- Google Play应用签名的SHA-1值(而非上传密钥)
若客户端ID配置缺失或不匹配,手动更新后重新同步Firebase项目。
验证ProGuard/R8混淆规则是否破坏Firebase SDK
确保proguard-rules.pro中添加了Firebase相关类的保留规则,避免SDK核心逻辑被混淆:# Firebase Auth 规则 -keep class com.google.firebase.auth.** { *; } -keep class com.google.android.gms.auth.api.** { *; } # Crashlytics 规则 -keep class com.google.firebase.crashlytics.** { *; } -keepattributes *Annotation* -keepattributes SourceFile,LineNumberTable同时检查gradle中是否启用了混淆,若
minifyEnabled true但未配置上述规则,会导致SDK功能失效。确认Crashlytics在release模式下的初始化状态
检查Application类或初始化代码中,是否仅在debug模式下启用Crashlytics收集。确保release模式下执行以下代码:FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true)同时验证gradle配置中是否开启mapping文件上传:
firebaseCrashlytics { mappingFileUploadEnabled true }检查GitHub Action的签名配置是否正确
确认构建release bundle时,是否使用了正确的上传密钥签名。查看gradle中的signingConfigs配置,以及GitHub Action中是否正确传入了密钥存储密码、密钥别名、密钥密码等环境变量,避免因签名不规范导致Google Play验证失败,进而影响Firebase服务。验证Google Play内部测试版本的生效状态
检查Google Play Console中内部测试渠道的版本是否已完成发布(状态为「已发布」),而非处于「审核中」或「待发布」。同时让测试设备确认安装的应用版本号与上传的bundle版本一致,排除安装旧版本的可能。查看release包的Firebase相关日志
通过Android Studio连接测试设备,使用Logcat过滤Firebase相关标签(如FirebaseAuth、FirebaseCrashlytics),或执行命令:adb logcat | grep Firebase查看登录或崩溃上报时的具体错误信息,比如签名验证失败、OAuth授权错误等,这些日志能直接定位问题根源。
检查设备的Google Play服务版本
确保测试物理设备的Google Play服务已更新至最新版本,旧版本的Google Play服务可能无法兼容最新的Firebase SDK,导致登录或Crashlytics功能异常。重新关联Firebase与Google Play应用
前往Firebase Console项目设置页面,解除并重新关联Google Play应用,触发Firebase自动同步Google Play的应用签名信息,避免因关联过程中的缓存或同步延迟导致配置不匹配。
内容的提问来源于stack exchange,提问作者Chris

