在build.gradle文件中
java
productFlavors {
platform平台1 {
dimension 'platform'
}
platform平台2 {
dimension 'platform'
}
}
-
定义了两种平台:
-
platform平台1:代表平台1的配置 -
platform平台2:代表平台2的配置
-
-
它们属于同一个维度 'platform':
-
这意味着它们是互斥的
-
构建时只能选择其中一个
-
一个平台有多款车型,只有车型6图片不一样。
java
afterEvaluate {
if (get当前车型() == FLAVOR_车型6) {
def currentDirs = android.sourceSets.platform平台1.res.srcDirs
android.sourceSets.platform平台1.res.srcDirs = ['src/main/res-车型6'] + currentDirs
}
}
1. afterEvaluate { ... }
Kotlin
afterEvaluate {
// 这里的代码会在 Gradle 配置阶段完成后执行
}
作用:确保所有 Android 插件配置都已完成,可以安全地访问和修改配置。
2. 条件判断
Kotlin
if (get当前车型() == FLAVOR_车型6) {
// 只有当车型是 车型6时才执行
}
3. 获取当前资源目录
Kotlin
def currentDirs = android.sourceSets.platform平台1.res.srcDirs
作用:
-
获取
platform平台1flavor 当前配置的所有资源目录 -
srcDirs是一个目录路径的列表 -
保存到变量
currentDirs中
4. 核心操作:添加 res-车型6 目录
Kotlin
android.sourceSets.platform平台1.res.srcDirs = ['src/main/res-车型6'] + currentDirs
这是最关键的一行,分解说明:
// 1. 创建一个新列表,包含 res-车型6 目录
['src/main/res-车型6']
// 2. 使用 + 运算符连接两个列表
['src/main/res-车型6'] + currentDirs
// 3. 结果示例:
// currentDirs = ['src/main/res']
// 结果 = ['src/main/res-车型6', 'src/main/res']
// 4. 将这个新列表赋值回 srcDirs
android.sourceSets.platform平台1.res.srcDirs = 新列表
车型6先在res-车型6中找资源,没有就到res中找。