仅针对某些产品风格禁用DexGuard

时间:2017-03-23 20:43:58

标签: android dexguard

我使用DexGuard并为4种构建类型(发布和调试)提供了4种产品风格(prod,qa,dev,mock),我没有为调试版本启用DexGuard,因此我获得了4种变体({{1} } ... dexguardProdRelease)但是,我不想为开发和模拟口味启用DexGuard。

我了解了Gradle提供的dexguardMockRelease但是,在这种情况下,我不知道如何使用与插件DexGuard相关的命令。

1 个答案:

答案 0 :(得分:1)

我能够像这样解决:

//added to filter dexguard for these flavors
variantFilter { variant ->
    def names = variant.flavors*.name

    if(names.contains("mock") && variant.buildType.name == "release") {
        variant.ignore = true
    } else if (names.contains("dev") && variant.buildType.name == "release") {
        variant.ignore = true
    }
}

现在,Gradle不会显示dexguardMockReleasedexguardDevRelease等任务。

我通过查看过滤掉DexGuard而错误地解决了这个问题,而我应该考虑删除某些风格。以下是我build.gradle的相关部分:

apply plugin: 'dexguard'
...
android {
      buildTypes {
          release {
              proguardFile getDefaultDexGuardFile('dexguard-release-aggressive.pro')
              proguardFile 'dexguard-project.pro'
          }
          debug {
              //dontshrink, dontoptimize and dontobfuscate are turned off
          }
     }

     productFlavors {
          prod {
                ...
          }
          qa {
               ...
          }
          dev {
                ...
          }
          mock {
                 ...
          }
    }
    //added to filter dexguard for these flavors
    variantFilter { variant ->
       def names = variant.flavors*.name

       if(names.contains("mock") && variant.buildType.name == "release") {
           variant.ignore = true
       } else if (names.contains("dev") && variant.buildType.name == 
                      "release") {
           variant.ignore = true
       }
    }
}