Android端Firebase Crashlytics的mappingFileUploadEnabled默认值是否为false?
问题解答
1. mappingFileUploadEnabled的默认值
不同版本的Firebase Crashlytics Gradle插件默认值不同:
- 2.7.0及以上版本 默认值为true,开启minify混淆后构建release包时会自动上传mapping文件
- 2.7.0以下的旧版本 默认值为false,需要手动配置开启
2. 是否需要手动添加该配置
建议明确添加该配置,原因如下:
- 可以消除不同插件版本默认行为的差异,避免线上版本漏传mapping的问题
- 可针对不同构建类型灵活配置,比如debug版本关闭上传节省构建时间,release版本强制开启
3. 该配置对崩溃报告可读性的作用
作用非常明确,就是专门解决混淆后崩溃堆栈和实际代码不匹配的问题。
你当前Proguard中保留行号、源文件属性的配置是基础,但如果不上传mapping文件,Crashlytics无法将混淆后的类名、方法名映射回原始代码的命名,依然无法得到可读的堆栈。配置mappingFileUploadEnabled true后,构建时会自动将对应版本的mapping文件上传到Crashlytics控制台,控制台收到崩溃上报后会自动还原混淆堆栈,得到和实际代码完全匹配的行号、类名、方法名信息。
推荐配置示例
在module级build.gradle的构建类型配置中补充如下内容即可:
release { debuggable false minifyEnabled true proguardFile getDefaultProguardFile('proguard-android-optimize.txt') proguardFile 'proguard-project.txt' signingConfig signingConfigs.production ndk { abiFilters "armeabi-v7a", "arm64-v8a" } manifestPlaceholders = [xxx:"XXX"] // 新增Crashlytics配置 firebaseCrashlytics { mappingFileUploadEnabled true } } debug { firebaseCrashlytics { // debug版本关闭上传,节省构建时间 mappingFileUploadEnabled false } }
注意:每次发布新版本的正式包时,要确保对应版本的mapping文件已成功上传,否则该版本的崩溃上报依然无法完成反混淆还原。
内容的提问来源于stack exchange,提问作者Android Dev
相关产品推荐
相关产品推荐

