Android多flavorDimensions下仅为apple风味配置随color变化的Gradle依赖
实现方案
方案1:动态配置Variant依赖(推荐,可扩展性更高)
你可以通过遍历项目的所有构建风味,判断维度属性后动态拼接对应依赖,无需手动写死每个组合的依赖配置,修改后的完整代码如下:
android { // 保留你原有的android配置不变 buildTypes { release { } debug { } } flavorDimensions "fruit", "color" productFlavors { apple { dimension "fruit" } peach { dimension "fruit" } banana { dimension "fruit" } red { dimension "color" } green { dimension "color" } yellow { dimension "color" } } } // 预声明所有apple+color组合的配置,避免Gradle报未知配置警告 configurations { productFlavors.all { flavor -> if (flavor.dimension == "color") { create("apple${flavor.name.capitalize()}Implementation") } } } dependencies { // 动态为apple的每个color变体添加对应依赖 productFlavors.all { colorFlavor -> if (colorFlavor.dimension == "color") { add("apple${colorFlavor.name.capitalize()}Implementation", "com.apple:color_${colorFlavor.name}:1.1.0") } } // 其他原有依赖保留即可 }
- 优势:后续如果新增color维度的风味,不需要手动新增依赖配置,Gradle会自动生成对应依赖,适配性强
- 兼容范围:Gradle 7.0+ 及 Android Gradle Plugin 7.0+ 版本测试通过
方案2:手动配置(适合风味固定不变的场景)
如果你后续不会新增color维度的风味,你当前写死三个appleXxxImplementation的写法本身也符合需求:只有apple组合对应color的变体才会引入对应依赖,peach、banana的所有变体都不会引入com.apple系列依赖,缺点是扩展性差,新增color风味需要手动补充依赖行。
验证方法
你可以执行以下命令查看对应变体的依赖树,确认依赖引入是否符合预期:
# 查看appleRedRelease变体的依赖,会出现对应color的com.apple包 ./gradlew :app:dependencies --configuration appleRedReleaseCompileClasspath # 查看peachRedRelease变体的依赖,不会出现com.apple的包 ./gradlew :app:dependencies --configuration peachRedReleaseCompileClasspath
内容的提问来源于stack exchange,提问作者Nifhel
相关产品推荐
相关产品推荐

