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

enableAggregatingTask与productFlavors冲突导致依赖任务报错如何解决

根因说明

该报错由构建脚本中依赖配置的修改时机不符合Gradle规则导致,和flavor命名的关联是因为Gradle按字典序加载flavor配置:首字母大于g的flavor对应的配置加载时机晚,此时beforeResolve钩子已经触发,配置进入解析阶段后就不能再修改依赖,才会触发报错,不属于Gradle原生bug。

修复方案

  • 替换依赖配置逻辑:将构建脚本中所有通过beforeResolve钩子修改依赖的代码,替换为官方推荐的defaultDependencies声明默认依赖
    错误写法示例(Groovy):
    configurations.all {
        beforeResolve {
            dependencies.add("implementation", "com.example:lib:1.0.0")
        }
    }
    
    修正后写法:
    configurations.all {
        defaultDependencies { dependencies ->
            dependencies.add("implementation", "com.example:lib:1.0.0")
        }
    }
    
    Kotlin脚本修正写法:
    configurations.all {
        defaultDependencies {
            add("implementation", "com.example:lib:1.0.0")
        }
    }
    
  • 若必须保留beforeResolve逻辑,添加配置状态校验,仅当配置未进入解析阶段时执行修改:
    configurations.all { config ->
        beforeResolve {
            if (config.state == Configuration.State.UNRESOLVED) {
                // 原有依赖修改逻辑
            }
        }
    }
    
  • 多flavor场景可在gradle.properties中添加配置关闭flavor懒加载,避免加载时序差异导致的问题:
    android.experimental.lazyFlavorConfiguration=false
    

修改完成后重新执行./gradlew :app:dependencies --write-locks即可正常生成lock文件,不受flavor命名影响。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:36:07