AGP 4.1+下Firebase Crashlytics的mappingFile参数不兼容问题求解

解决方案
前置要求
- 升级Firebase Crashlytics Gradle插件至
2.0.0及以上版本,保证和AGP 4.1+版本兼容 - 原有老版本
crashlytics块下的配置全部迁移到firebaseCrashlytics扩展块下
基础配置(单构建类型)
在模块级build.gradle的对应构建类型下配置即可:
android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 自定义mapping文件路径 firebaseCrashlytics { mappingFile = file("你的自定义mapping文件路径,支持相对/绝对路径") } } } }
多Flavor场景配置
如果项目有多个产品风味,可以直接在对应flavor配置块下单独指定路径:
android { flavorDimensions "channel" productFlavors { googlePlay { dimension "channel" firebaseCrashlytics { mappingFile = file("./custom_mappings/googlePlay/release/mapping.txt") } } huawei { dimension "channel" firebaseCrashlytics { mappingFile = file("./custom_mappings/huawei/release/mapping.txt") } } } }
动态批量配置
如果flavor数量多,也可以通过variant API批量配置:
android.applicationVariants.all { variant -> // 只给release构建类型配置 if (variant.buildType.name == "release") { variant.firebaseCrashlytics.mappingFile = file("./custom_mappings/${variant.flavorName}/${variant.buildType.name}/mapping.txt") } }
Gradle Kotlin DSL写法参考
如果使用Kotlin编写Gradle配置,写法如下:
android { buildTypes { getByName("release") { configure<com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension> { mappingFile = file("./custom_mapping/release/mapping.txt") } } } }
注意事项
- 配置的路径要确保构建执行
CrashlyticsUploadTask时mapping文件已经存在,如果是外部生成的mapping需要提前放到对应路径 - 如果mapping是构建过程中生成的,需要确保任务依赖顺序正确,避免上传任务执行时文件还未生成
内容的提问来源于stack exchange,提问作者Davin Reinaldo Gozali
相关产品推荐
相关产品推荐

