文章目录

Android Plugin DSL Reference 参考文档 :





一、ProductFlavor#resValue 方法



ProductFlavor ( build.gradle#android#defaultConfig 配置 ) 文档 :​android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html​



​ProductFlavor#resValue​​ 方法用于生成同一个 resource 资源 , 该操作等价于在 res/values 目录下的文件中配置一个特定类型的值 ;

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )_Groovy

如 : 在 build.gradle 的 " android # defaultConfig " 层级中设置如下内容 ,

android {
defaultConfig {
// 生成 res/values 目录下定义的资源
resValue("string", "gradle_res_config", "Gradle Res Config")
}
}

在编译时 , 会在 app\build\generated\res\resValues\debug\values 目录下生成 gradleResValues.xml 配置文件 , 内容为 :

<?xml version="1.0" encoding="utf-8"?>
<resources>

<!-- Automatically generated file. DO NOT MODIFY -->

<!-- Value from default config. -->
<string name="gradle_res_config" translatable="false">Gradle Res Config</string>

</resources>

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )_Android Gradle_02

编译之后 , 可以在 Android 代码中 , 使用 ​​R.string.gradle_res_config​​ 获取该生成的配置数据 ;

在 Android 的 Activity 代码中 , 可以直接通过 R 资源获取该数据内容 ;

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )_Android Gradle_03






二、ProductFlavor#dimension 维度属性



ProductFlavor ( build.gradle#android#defaultConfig 配置 ) 文档 :​android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html​

build.gradle#android 模块配置文档 :​android-gradle-dsl/2.3/com.android.build.gradle.AppExtension.html​



​ProductFlavor#dimension​​ 属性 是 维度属性 名称 ,

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )_Gradle_04

该属性需要配合 ​​AppExtension#flavorDimensionList​​​ 属性 和 ​​AppExtension#flavorDimensions​​ 方法一起使用 ;

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )_ProductFlavor_05

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )_Groovy_06

维度具体用法如下 : 这里以多渠道打包为例 ;

在 build.gradle 的 ​​android ​​​ 层级下调用 ​​AppExtension#flavorDimensions​​​ 方法 定义维度 , 调用 ​​productFlavors ​​ 创建产品风味 , 进行多渠道打包配置 ;

android {
compileSdkVersion 30
buildToolsVersion "30.0.3"

defaultConfig {
applicationId "com.example.classloader_demo"
minSdkVersion 18
targetSdkVersion 30
versionCode 1
versionName "1.0"
}

// 创建 4 个维度
flavorDimensions("tom", "jerry")

// 创建产品风味 , 打渠道包就是在这里实现
productFlavors {
alpha{
// 此处可以指定 defaultConfig 配置
// 如果不指定 , 则默认使用 defaultConfig 默认配置
// 此处设置属性 , 可以覆盖 defaultConfig 配置
dimension "tom"
}
beta{
dimension "tom"
}
delta{
dimension "jerry"
}
pro{
dimension "jerry"
}
}
}

在 Build Variants 面板中 , 可以看到不同的打包配置 ;

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )_ProductFlavor_07