首页 > 解决方案 > 将系统属性与 proguard 配置文件一起传递给 gradle proguardFile 属性

问题描述

我正在尝试在我的 gradle 项目中调用 proguard。

方法1:

使用 ant.java 并传递 proguard.jar 及其配置,如下所示

    ant.java(jar:"c:/proguard5.1/lib/proguard.jar",fork:true){
     arg(value: "@./proguardconf-splitjars.pro")
     sysproperty( key : "jar.dir",value : "codegen/libs")                
     sysproperty( key : "target",value : "android-28")               
     sysproperty( key : "sdk.dir",value : "C:\\android-sdk-windows")                 
    } 

方法2:

如https://developer.android.com/studio/build/shrink-code.html中所述,在 gradle 文件中使用 proguardFile 属性

buildTypes {
     debug {
        minifyEnabled true
        proguardFile 'proguardconf-splitjars.pro'
    }
   }

我在 proguard 文件中有不同的属性变量,我必须在调用 proguard 时传递它们。我能够传递属性并使用 Approach1 调用 proguard。

有什么方法可以通过 Approach2 传递属性变量。我参考了下面的链接,但没有找到任何与我的要求有关的信息。

https://www.guardsquare.com/en/products/proguard/manual/gradle https://developer.android.com/studio/build/shrink-code.html

标签: androidandroid-gradle-pluginbuild.gradleproguard

解决方案


Gradle 支持不同的方式来设置系统属性。对我来说,最方便的方法是在 gradle.properties 文件中指定它们,如下所示:

systemProp.jar.dir=codegen/libs

例如,对于您的 ant 示例中的属性之一。

另请参阅Gradle 文档


推荐阅读