文章目录
Android Plugin DSL Reference 参考文档 :
- 文档主页 : https://google.github.io/android-gradle-dsl/2.3/
- AppExtension ( build.gradle#android 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.AppExtension.html
- build.gradle#android 模块配置文档 : android-gradle-dsl/2.3/com.android.build.gradle.AppExtension.html
- ProductFlavor ( build.gradle#android#defaultConfig 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html
- ProductFlavor#externalNativeBuild 配置 ( build.gradle#android#defaultConfig#externalNativeBuild 配置 ) : com.android.build.gradle.internal.dsl.ProductFlavor:externalNativeBuild
- ExternalNativeBuildOptions ( build.gradle#android#defaultConfig#externalNativeBuild 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.ExternalNativeBuildOptions.html
- NdkBuildOptions ( build.gradle#android#defaultConfig#externalNativeBuild#ndkBuild 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.NdkBuildOptions.html
- CmakeOptions ( build.gradle#android#defaultConfig#externalNativeBuild#cmake 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.CmakeOptions.html
- JackOptions ( build.gradle#android#defaultConfig#jackOptions 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.JackOptions.html
- AnnotationProcessorOptions ( 注解处理器配置 ) ( build.gradle#android#defaultConfig#javaCompileOptions配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.AnnotationProcessorOptions.html
- NdkOptions ( build.gradle#android#defaultConfig#ndk 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.NdkOptions.html
- VectorDrawablesOptions ( build.gradle#android#defaultConfig#vectorDrawables 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html
- NDK 参考文档 : Add C and C++ Code to Your Project.
一、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 目录下的文件中配置一个特定类型的值 ;
如 : 在 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 配置文件 , 内容为 :
<resources>
<!-- Automatically generated file. DO NOT MODIFY -->
<!-- Value from default config. -->
<string name="gradle_res_config" translatable="false">Gradle Res Config</string>
</resources>
编译之后 , 可以在 Android 代码中 , 使用 R.string.gradle_res_config
获取该生成的配置数据 ;
在 Android 的 Activity 代码中 , 可以直接通过 R 资源获取该数据内容 ;
二、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
属性 是 维度属性 名称 ,
该属性需要配合 AppExtension#flavorDimensionList
属性 和 AppExtension#flavorDimensions
方法一起使用 ;
维度具体用法如下 : 这里以多渠道打包为例 ;
在 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 面板中 , 可以看到不同的打包配置 ;