产品定制的配置

每个 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 都可以重写这些配置的值。在前面的例子中,最终的配置结果将会是:

  • flavor1
    • applicationId: com.example.flavor1
    • minSdkVersion: 8
    • versionCode: 20
  • flavor2
    • applicationId: com.example.flavor2
    • minSdkVersion: 14
    • versionCode: 10

通常情况下,Build Type 的配置会覆盖其它的配置。例如,Build TypeapplicationIdSuffix 会被追加到 Product FlavorapplicationId 上面。但有部分属性可以同时在 Build TypeProduct Flavor 中设置。在这种情况下,按照个别为主的原则决定。例如,通过设置 android.buildTypes.release.signingConfig 来为所有的 release 包共用相同的 SigningConfig。也可以通过设置 android.productFlavors.*.signingConfig 来为每个 release 包指定它们自己的 SigningConfig