不同车型drawable不同

在build.gradle文件中

java 复制代码
productFlavors {
        platform平台1 {
            dimension 'platform'
        }
        platform平台2 {
            dimension 'platform'
        }
    }
  1. 定义了两种平台

    • platform平台1:代表平台1的配置

    • platform平台2:代表平台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平台1 flavor 当前配置的所有资源目录

  • 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中找。

相关推荐
JAVA面经实录91710 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
周杰伦fans11 小时前
AutoCAD .NET 二次开发:深入理解 EntityJig 的工作原理与正确实现
开发语言·.net
liang_jy12 小时前
Android SparseArray
android·源码
liang_jy13 小时前
Activity 启动流程扩展篇(一)—— startActivityInner 任务决策全解析
android·源码
Bat U13 小时前
JavaEE|多线程初阶(七)
java·开发语言
谭欣辰13 小时前
C++ 排列组合完整指南
开发语言·c++·算法
NPE~14 小时前
[App逆向]脱壳实战
android·教程·逆向·android逆向·逆向分析
foundbug99914 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
XDH_CS14 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql