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

相关推荐
2301_76347246几秒前
C++20概念(Concepts)入门指南
开发语言·c++·算法
Libraeking18 分钟前
视觉篇:Canvas 自定义绘图与高级动画的华丽圆舞曲
android·经验分享·android jetpack
TechWJ23 分钟前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
lly2024061 小时前
C++ 文件和流
开发语言
Fushize1 小时前
多模块架构下的依赖治理:如何避免 Gradle 依赖地狱
android·架构·kotlin
m0_706653231 小时前
分布式系统安全通信
开发语言·c++·算法
寻寻觅觅☆1 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++
Jomurphys2 小时前
Kotlin - 类型别名 typealias
android·kotlin
lightqjx2 小时前
【C++】unordered系列的封装
开发语言·c++·stl·unordered系列
Haha_bj2 小时前
Flutter ——flutter_screenutil 屏幕适配
android·ios