6.3 产品定制配置

每一个 flavors 都可以通过一个闭包配置:

  1. android {
  2. ...
  3. defaultConfig {
  4. minSdkVersion 8
  5. versionCode 10
  6. }
  7. productFlavors {
  8. flavor1 {
  9. packageName "com.example.flavor1"
  10. versionCode 20
  11. }
  12. flavor2 {
  13. packageName "com.example.flavor2"
  14. minSdkVersion 14
  15. }
  16. }
  17. }

要知道的是 android.productFlavors.*ProductFlavor 类型的,和 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 TypepackageNameSuffix 会追加到 Product FlavorpackageName 之后。

也有一些情况是在 Build TypeProduct Flavor 中都可以设置,在这种情况下,视情况而定。

比如, signingConfig 就是这么一个属性。
通过设置 android.buildTypes.release.signingConfig ,可以为所有的 release 包共享相同的 SigningConfig ,也可以单独通过设置 android.productFlavors..signingConfig 为每一个 release 包指定他们自己的 SigningConfig* 。