如何使用 Gradle 配置 Proguard



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

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

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

但它在任务执行时崩溃

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

在较新版本的 Gradle 'android' 插件中,似乎包含 Proguard,我认为这可能是原因,为什么按照 Proguard 文档中所述配置 Proguard 任务不起作用。但是我没有找到任何关于如何使用较新的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脚本来做到这一点。

最新更新