Product Flavor Configuration(Product Flavor的配置)

每一个flavor都是通过闭包来配置的:

  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. }

注意ProductFlavor类型的android.productFlavors.*对象与android.defaultConfig对象的类型是相同的。这意味着它们共享相同的属性。

defaultConfig为所有的flavor提供基本的配置,每一个flavor都可以重设这些配置的值。在上面的例子中,最终的配置结果将会是:

  1. * `flavor1`
  2. * `packageName`: com.example.flavor1
  3. * `minSdkVersion`: 8
  4. * `versionCode`: 20
  5. * `flavor2`
  6. * `packageName`: com.example.flavor2
  7. * `minSdkVersion`: 14
  8. * `versionCode`: 10

通常情况下,Build Type的配置会覆盖其它的配置。例如,Build TypepackageNameSuffix会被追加到Product FlavorpackageName上面。

也有一些情况是一些设置可以同时在Build TypeProduct Flavor中设置。在这种情况下,按照个别为主的原则决定。

例如,signingConfig就这种属性的一个例子。 signingConfig允许通过设置android.buildTypes.release.signingConfig来为所有的release包共享相同的SigningConfig。也可以通过设置android.productFlavors.*.signingConfig来为每一个release包指定它们自己的SigningConfig