将系统属性与 proguard 配置文件一起传递给 gradle proguardFile 属性

Posted

技术标签:

【中文标题】将系统属性与 proguard 配置文件一起传递给 gradle proguardFile 属性【英文标题】:Passing system properties along with proguard configuration file to gradle proguardFile property 【发布时间】:2019-12-08 21:54:27 【问题描述】:

我正在尝试在我的 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")                 
     

方法二:

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

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

【问题讨论】:

【参考方案1】:

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

systemProp.jar.dir=codegen/libs

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

另见Gradle documentation

【讨论】:

以上是关于将系统属性与 proguard 配置文件一起传递给 gradle proguardFile 属性的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf视图不会将实体ID传递给Spring @Controller,而是将其与其他属性一起传递

将 ProGuard / Dexguard 与多个 Android Studio 模块一起使用

Java Ant - 如何传递 ProGuard 任务参数并在配置文件中使用它们?

将 proguard 与 Hyperledger Iroha 一起使用时,我的应用程序崩溃了

如何将系统属性传递给 jar 文件

将 NSData 与 NSDictionary 参数一起传递给 Web 服务