You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Gradle及Firebase插件后出现任务循环依赖问题

问题描述

将依赖版本从:

androidGradlePlugin = "8.2.2"
firebaseBom = "32.8.1"
firebaseCrashlyticsPlugin = "2.9.9"

升级至:

androidGradlePlugin = "8.4.0"
firebaseBom = "33.0.0"
firebaseCrashlyticsPlugin = "3.0.0"

之后项目无法构建,报错信息如下:

Circular dependency between the following tasks:
:app:dataBindingGenBaseClassesDebug
\--- :app:mergeDebugResources
     +--- :app:generateDebugLocaleConfig
     |    \--- :app:extractDebugSupportedLocales
     |         \--- :app:injectCrashlyticsMappingFileIdDebug
     |              +--- :app:dataBindingGenBaseClassesDebug (*)
     |              \--- :app:kspDebugKotlin
     |                   +--- :app:dataBindingGenBaseClassesDebug (*)
     |                   \--- :app:processDebugResources
     |                        +--- :app:mapDebugSourceSetPaths
     |                        |    \--- :app:injectCrashlyticsMappingFileIdDebug (*)
     |                        +--- :app:mergeDebugResources (*)
     |                        +--- :app:processDebugManifest
     |                        |    \--- :app:processDebugMainManifest
     |                        |         \--- :app:extractDeepLinksDebug
     |                        |              \--- :app:injectCrashlyticsMappingFileIdDebug (*)
     |                        \--- :app:processDebugManifestForPackage
     |                             \--- :app:processDebugManifest (*)
     \--- :app:injectCrashlyticsMappingFileIdDebug (*)

注意到injectCrashlyticsMappingFileIdDebug多次出现,请问这是什么原因?

另外,使用firebaseCrashlyticsPlugin = "2.9.9"配合以下最新版本依赖时项目可正常构建:

androidGradlePlugin = "8.4.0"
firebaseBom = "33.0.0"

但当时为解决使用最新Gradle插件版本时的清单合并问题,需在Manifest中添加以下配置:

<property
    android:name="android.adservices.AD_SERVICES_CONFIG"
    android:resource="@xml/gma_ad_services_config"
    tools:replace="android:resource" />
问题分析与解决方案

循环依赖原因

这是Firebase Crashlytics 3.0.0插件与AGP 8.4.0的任务依赖兼容性bug。

injectCrashlyticsMappingFileIdDebug是Crashlytics 3.0.0新增的任务,作用是将映射文件ID注入构建流程。但该版本插件错误地配置了任务依赖:它依赖dataBindingGenBaseClassesDebug,而dataBindingGenBaseClassesDebug又依赖mergeDebugResources,最终绕回injectCrashlyticsMappingFileIdDebug,形成闭环依赖链。

这类问题通常是插件适配新版AGP时,任务依赖的顺序或关联关系未调整到位导致的。

解决办法

  • 降级Crashlytics插件到兼容版本:
    暂时保留firebaseCrashlyticsPlugin = "2.9.9"搭配AGP 8.4.0和Firebase BOM 33.0.0使用,这是已验证的可行方案,只需保留Manifest中的AD服务配置即可正常构建。
  • 等待官方修复:
    这类兼容性bug属于插件自身问题,Firebase团队通常会在后续小版本更新中修复。可关注Firebase发布日志,待Crashlytics插件推出3.0.x修复版本后再升级。
  • 临时调整任务依赖(不推荐):
    如果必须使用3.0.0版本,可尝试在Gradle脚本中手动打破循环依赖,但可能引发其他构建问题,仅作应急使用:
    tasks.named("injectCrashlyticsMappingFileIdDebug") {
        dependsOn.remove("dataBindingGenBaseClassesDebug")
    }
    

内容的提问来源于stack exchange,提问作者user924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:03:12