如何使用gradle为味道配置不同的buildType

时间:2019-04-24 15:03:54

标签: android gradle

我有两种口味,分别是 RQT PRD
对于其中之一,我想禁用proguard配置(对于 RQT ,对于两者 buildTypes 禁用 proguard ) 。
喜欢加调理吗?这样的事情有可能吗?

android {
  ...
  flavorDimensions("server")
  productFlavors {
    rqt {
      dimension "server"
      applicationIdSuffix ".rqt"
    }
    prd {
      dimension "server"
      applicationIdSuffix ".prd"
    }
  }
  ...
  buildTypes {
    debug {
      (__if (flavor != RQT) then do proguard config...__)
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      proguardFile 'proguard-debug-project.txt'
    }
    release {
      (__if (flavor != RQT) then do proguard config...__)
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      proguardFile 'proguard-release-project.txt'
    }
  }
  ...
}

1 个答案:

答案 0 :(得分:2)

您可以创建其他构建类型,例如debugNoProguardreleaseNoProguard

android {
  variantFilter { variant ->
    def needed = variant.name in [
      'rqtDebugNoProguard',
      'rqtReleaseNoProguard',       
      'prdDebug',       
      'prdRelease'
    ]

    variant.setIgnore(!needed)
  }

  buildTypes {
    debug {
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      proguardFile 'proguard-debug-project.txt'
    }

    debugNoProguard {
      debuggable true
      minifyEnabled false
      signingConfig signingConfigs.debug
    }
    ....
  }
}

然后,当您想在没有ProGuard的情况下运行调试版本时,可以构建变体rqtDebugrqtDebugNoProguard而不是构建prdDebugNoProguard