# 產品定制的配置
每一個 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