Firebase Crashlytics Plugin 3.0.0与Data Binding循环依赖冲突问题
Firebase Crashlytics 3.0.0与Data Binding循环依赖问题解决
问题本质
升级Firebase Crashlytics Plugin到3.0.0版本后,启用Data Binding会触发构建任务的循环依赖:dataBindingGenBaseClasses任务依赖资源合并任务,而Crashlytics的injectCrashlyticsMappingFileId任务又反向依赖dataBindingGenBaseClasses,形成闭环导致构建失败。这是3.0.0版本的兼容性问题,2.9.9版本的任务依赖配置未触发该冲突。
可行解决办法
1. 强制调整任务执行顺序
通过Gradle脚本修改Crashlytics注入任务的依赖顺序,让它在Data Binding基础类生成任务完成后再执行。
- 若使用Kotlin DSL(build.gradle.kts),添加以下代码到模块级构建脚本:
tasks.withType<com.google.firebase.crashlytics.buildtools.gradle.tasks.InjectMappingFileIdTask>().configureEach { mustRunAfter(tasks.withType<com.android.build.gradle.tasks.DataBindingGenBaseClassesTask>()) }
- 若使用Groovy(build.gradle),添加:
tasks.withType(com.google.firebase.crashlytics.buildtools.gradle.tasks.InjectMappingFileIdTask).configureEach { mustRunAfter tasks.withType(com.android.build.gradle.tasks.DataBindingGenBaseClassesTask) }
该配置不会修改任务的依赖关系,仅强制执行顺序,从而打破循环。
2. 临时降级插件版本
如果不需要3.0.0版本的新特性,可暂时回退到2.9.9版本,在项目根目录的构建脚本中修改插件版本:
plugins { id("com.google.firebase.crashlytics") version "2.9.9" apply false }
3. 等待官方修复
这属于插件版本的兼容性Bug,Firebase团队通常会在后续迭代中修复此类任务依赖冲突,可关注Crashlytics的更新日志,待修复版本发布后再升级。
额外说明
发布资源仅包含简单的AndroidManifest.xml不影响该冲突,问题核心在于任务依赖链的逻辑配置,与资源文件的复杂度无关。
内容的提问来源于stack exchange,提问作者Martin Zeitler
相关产品推荐
相关产品推荐

