多Flavor依赖库使用:如何在App Gradle中引入指定Flavor版本
我来给你一步步拆解怎么在App里用上依赖库的不同Flavor,核心思路就是让App的Flavor配置和依赖库对齐,这样Gradle就能自动匹配对应的变体了:
第一步:对齐App与依赖库的Flavor维度配置
首先,你得在App模块的build.gradle(或build.gradle.kts)里,配置和依赖库完全一致的flavor维度,以及对应的Product Flavors。因为依赖库用了dim作为维度,所以App也要同步配置:
android { // 保留你原本的compileSdk、defaultConfig等基础配置 flavorDimensions "dim" productFlavors { nocustomer { dimension = "dim" // 可选:给App的这个Flavor加版本后缀,方便区分构建产物 versionNameSuffix "-nocustomer-app" } // 如果你的App也需要支持customer001 Flavor,同样添加配置 customer001 { dimension = "dim" } } }
第二步:引入对应Flavor的依赖库
接下来分两种场景处理:
场景1:依赖库是本地子模块
如果依赖库是你项目里的一个子模块(比如叫:my-library),直接正常引入依赖即可——因为我们已经对齐了维度和Flavor名称,Gradle会自动匹配对应的变体(比如App构建nocustomerDebug时,会自动拉取依赖库的nocustomerDebug变体):
dependencies { implementation project(':my-library') }
场景2:依赖库是远程Maven仓库依赖
如果依赖库已经发布到Maven仓库(比如公司私有库或MavenCentral),不同Flavor的依赖会带有对应的后缀。假设你的依赖库groupId是com.yourcompany,artifactId是base-lib,版本是1.0.0:
- 要使用
nocustomerFlavor的依赖,写法如下:
dependencies { implementation 'com.yourcompany:base-lib-nocustomer:1.0.0' }
- 同理,
customer001的依赖写法是:
dependencies { implementation 'com.yourcompany:base-lib-customer001:1.0.0' }
要是已经对齐了Flavor维度,你也可以直接写基础artifactId,Gradle会根据当前构建的App Flavor自动匹配对应的依赖库变体:
dependencies { implementation 'com.yourcompany:base-lib:1.0.0' }
第三步:构建对应变体的App
最后,在Android Studio的Build Variants面板里,选择App的nocustomerDebug或nocustomerRelease变体,点击构建按钮即可——生成的App就会使用依赖库的nocustomer Flavor版本。
内容的提问来源于stack exchange,提问作者Andrea Giga Ravalli

