不同车型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中找。

相关推荐
chenbingjie_c4 小时前
C++ 进阶核心知识点总结:模板、内存分区、new/delete、内存池
开发语言·c++
Escalating_xu5 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
蒸鱼Yuzheng5 小时前
设备端性能工件可靠导出:断点续传、哈希、manifest 与失败恢复
android·自动化测试·python·adb·数据完整性
实心儿儿5 小时前
Qt — Qt 事件
开发语言·qt
周杰偷奶茶5 小时前
【Java】数据类型与变量
java·开发语言
code斗5 小时前
Java数据结构:堆详解
java·开发语言·数据结构
重生之小比特6 小时前
【C++进阶】map和set
java·开发语言·c++
lie..6 小时前
30天从零开始学AI应用开发(Day 12):像产品一样稳:流式输出、报错重试、花钱控制
开发语言·人工智能·php
傻啦嘿哟6 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习
DeepAgent7 小时前
AI Agent 工程实践(49):一次真实优化——从 Agent v1 到 v2
开发语言·人工智能·agent