我使用DexGuard,有4个产品版本(prod,qa,dev,mock)用于2个构建类型(发布和调试),我没有为调试版本启用DexGuard,因此我得到了4个变体(dexguardProdRelease...dexguardMockRelease),但是,我不想为开发和模拟版本启用DexGuard。
我了解了Gradle提供的variantFilter,但是我不知道如何在这个例子中使用与插件DexGuard相关的命令。
发布于 2017-04-11 02:05:36
我可以像这样解决:
//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不再显示像dexguardMockRelease或dexguardDevRelease这样的任务。
我通过过滤掉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
}
}
}https://stackoverflow.com/questions/42986599
复制相似问题