如何使用Gradle配置Proguard?

我最近切换到Android Studio / Gradle,我想知道如何在build.gradle脚本中配置ProGuard。 我是Gradle的新手,但我认为,配置Proguard任务将是一个好主意(如Proguard项目文档中所述)。

我想配置Proguard使用’printmapping’设置将映射保存在不同文件中,以用于不同的产品风格

task myProguardTask(type: proguard.gradle.ProGuardTask) { printmapping file("test.txt") } 

但它在执行任务时崩溃了

 Gradle: Execution failed for task ':module:proguardFlavorVariant'. > proguard.ConfigurationParser.(Ljava/io/File;Ljava/util/Properties;)V 

在较新版本的Gradle’android‘插件中,似乎包含Proguard,我认为这可能是原因,为什么按照Proguard文档中的说明配置Proguard任务不起作用。 但我没有find关于如何使用较新的android-gradle-plugin执行此操作的任何文档。

谢谢你的帮助!

Proguard内置于Android-Gradle插件中,您无需将其配置为单独的任务。 文档位于:

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard

您的口味是如此不同以至于您真的需要不同的ProGuard配置吗? 我认为在大多数情况下你可以有一个配置可以覆盖它们。

编辑:

如果您确实想要更改不同风格的ProGuard规则,Android Gradle DSL允许您这样做。 文档中的示例显示了如何执行此操作:

 android { buildTypes { release { // in later versions of the Gradle plugin runProguard -> minifyEnabled minifyEnabled true proguardFile getDefaultProguardFile('proguard-android.txt') } } productFlavors { flavor1 { } flavor2 { proguardFile 'some-other-rules.txt' } } } 

这应该处理你的用例,除非你正在寻找一种方法让它根据风味名称自动确定proguardFile值,而不必手动设置; 你可以通过一些自定义的Groovy脚本来做到这一点。