Firebase Crashlytics 签名APK分版本不上报崩溃日志问题咨询
问题根因
你当前签名包无法上报的最主要原因是release构建类型配置了applicationIdSuffix ".release",最终签名包的应用ID为com.abc.release,和调试包的com.abc不一致,若你只在Firebase项目中添加了com.abc的应用配置,签名包的崩溃数据自然无法上传到对应项目中。
修复签名包不上报的方案
- 方案1:Firebase项目新增对应应用
直接在你当前的Firebase项目中,添加包名为com.abc.release的Android应用,下载新的google-services.json替换本地原有文件,Firebase会自动匹配两个包名的上报数据。 - 方案2:分构建类型存放配置文件
把调试版对应的google-services.json放到app/src/debug/目录下,签名版对应的google-services.json放到app/src/release/目录下,打包时系统会自动加载对应目录的配置文件,避免冲突。
区分调试、签名版本崩溃报告的实现方法
- 方法1:按应用筛选
完成上述修复后,两个包名的应用同属一个Firebase项目,直接在Crashlytics控制台的应用下拉框中选择对应包名,即可单独查看对应版本的崩溃数据。 - 方法2:自定义属性过滤
如果不想用不同包名,可以去掉applicationIdSuffix ".release"配置,在应用启动时给Crashlytics设置自定义标识:
后续在Crashlytics控制台中,就可以通过FirebaseCrashlytics.getInstance().setCustomKey("build_type", BuildConfig.BUILD_TYPE);build_type字段过滤出debug、release版本的崩溃数据。 - 方法3:多项目隔离
可以单独创建测试、生产两个Firebase项目,分别对应调试、签名版本的配置,两个项目的数据完全独立,适合正式生产环境使用。
可选优化配置
可以在build.gradle中明确开启Crashlytics配置,避免默认配置异常:
buildTypes { debug { manifestPlaceholders = [crashlyticsCollectionEnabled: "true", crashlyticsDebugLogEnabled: "true"] } release { applicationIdSuffix ".release" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' manifestPlaceholders = [crashlyticsCollectionEnabled: "true", crashlyticsDebugLogEnabled: "false"] } }
内容的提问来源于stack exchange,提问作者Vineet Nigam
相关产品推荐
相关产品推荐

