Gradle能否新增维度,为所有产品风味配置不同库版本?
解决方案:使用Gradle产品风味维度新增参数
完全可以通过**Gradle产品风味维度(Flavor Dimensions)**实现需求,无需重复定义现有客户风味,也不用修改业务代码。具体步骤如下:
1. 定义风味维度
在模块的build.gradle(Groovy)的android块中,先声明两个维度:一个对应现有客户分类,一个对应库版本变体:
android { // 声明维度顺序,顺序会影响生成的变体名称 flavorDimensions "client", "libraryVariant" // 现有产品风味配置 productFlavors { firstClient { dimension "client" // 指定该风味属于client维度 // 原有配置保留 } secondClient { dimension "client" // 原有配置保留 } thirdClient { dimension "client" // 原有配置保留 } // 新增库版本维度的风味 original { dimension "libraryVariant" // 配置原始版本库依赖 dependencies { implementation "com.example:target-library:1.0.0" } } modified { dimension "libraryVariant" // 配置修改后版本库依赖 dependencies { implementation "com.example:target-library:1.0.0-modified" // 若为本地修改的aar,可写:implementation files('libs/modified-library.aar') } } } // 原有构建类型配置保留 buildTypes { debug { ... } staging { ... } release { ... } } }
2. 构建变体说明
Gradle会自动将两个维度的风味进行组合,生成所有可能的构建变体,比如:
firstClientOriginalDebugsecondClientModifiedReleasethirdClientOriginalStaging
你可以直接在Android Studio的Build Variants面板选择对应变体构建,或者通过命令行执行构建命令:
./gradlew assembleFirstClientModifiedRelease
3. 可选优化:统一管理版本号
如果需要更便捷地维护库版本号,可在模块或项目根build.gradle中定义全局变量:
ext { originalLibVersion = "1.0.0" modifiedLibVersion = "1.0.0-modified" }
然后在风味的依赖中引用:
original { dimension "libraryVariant" dependencies { implementation "com.example:target-library:${originalLibVersion}" } }
内容的提问来源于stack exchange,提问作者Pavel Startsev
相关产品推荐
相关产品推荐

