# 产品定制的配置
每一个 flavor 都是通过闭包来配置的:
~~~
android {
...
defaultConfig {
minSdkVersion 8
versionCode 10
}
productFlavors {
flavor1 {
packageName "com.example.flavor1"
versionCode 20
}
flavor2 {
packageName "com.example.flavor2"
minSdkVersion 14
}
}
}
~~~
注意 *ProductFlavor* 类型的 **android.productFlavors.*** 对象与 **android.defaultConfig** 对象的类型是相同的。就是说着它们拥有的属性是一样的。
**defaultConfig** 为所有的 flavor 提供基本的配置,每一个 flavor 都可以重写这些配置的值。在前面的例子中,最终的配置结果将会是:
- **flavor1**
- **packageName**: com.example.flavor1
- **minSdkVersion**: 8
- **versionCode**: 20
- **flavor2**
- **packageName**: com.example.flavor2
- **minSdkVersion**: 14
- **versionCode**: 10
通常情况下,*Build Type* 的配置会覆盖其它的配置。例如,*Build Type* 的 **packageNameSuffix** 会被追加到 *Product Flavor* 的 **packageName** 上面。
但有部分设置可以同时在 *Build Type* 和 *Product Flavor* 中设置。在这种情况下,按照个别为主的原则决定。
例如,**signingConfig** 允许通过设置 **android.buildTypes.release.signingConfig** 来为所有的 `release` 包共用相同的 *SigningConfig*。也可以通过设置 **android.productFlavors.*.signingConfig** 来为每一个 `release` 包指定它们自己的 *SigningConfig*。
- 译者序
- 简介
- 新构建系统的目标
- 为什么使用 Gradle?
- 配置要求
- 基础项目
- 构建文件示例
- 项目结构
- 配置项目结构
- 构建任务
- 通用任务
- Java 项目的 Task
- Android Tasks
- 基本的构建定制
- Manifest 属性
- 构建类型
- 签名配置
- 运行 ProGuard
- 清理资源
- 依赖、Library 和多项目
- 包依赖
- 本地包依赖
- 远程包依赖
- 多项目设置
- Library 项目
- 创建 Library 项目
- 普通项目和 Library 项目的区别
- 引用 Library 项目
- Library 项目发布
- 测试
- 单元测试
- 基本知识和配置
- 运行测试
- 测试 Android Library 项目
- 测试报告
- 独立项目
- 多项目报告
- Lint 支持
- 构建 Variants(变种)版本
- 产品定制
- 构建类型+产品定制=构建变种版本
- 产品定制的配置
- 源组件和依赖
- 构建和任务
- 测试
- 多定制的变种版本
- 高级构建的自定义
- 构建选项
- Java 编译选项
- aapt 选项
- dex 选项
- 操作 task
- 构建类型和产物定制的属性引用
- 使用sourceCompatibility 1.7
- 附录
- ApplicationId 与 packageName