ProGuard Ant 任务的多个配置文件

Posted

技术标签:

【中文标题】ProGuard Ant 任务的多个配置文件【英文标题】:Multiple configuration files for the ProGuard Ant task 【发布时间】:2012-05-15 17:35:30 【问题描述】:

我正在使用 ProGuard ant 任务,一切都很好,除了我的 ProGuard 配置文件很大。此外,不同的任务使用不同的 ProGuard 配置文件,还有很多我想重构为单独的 .pro 文件的复制粘贴。

<taskdef resource="proguard/ant/task.properties" classpath="C:/Program Files/proguard4.7/lib/proguard.jar"/>
<target name="obfuscated_jar" depends="raw_jar">
    <proguard configuration="core.pro lib1.pro lib2.pro">
        <outjar path="prog_obfuscated.jar"/>
    </proguard>
</target>

上述方法不起作用,因为它将多个 .pro 文件视为一个大文件名。我是一个众所周知的白痴w.r.t。蚂蚁,我错过了什么明显的东西吗?谢谢!

【问题讨论】:

【参考方案1】:

您可以创建一个主 .pro 文件,其中包含指向实际 .pro 文件的 -include 选项。

【讨论】:

非常感谢 ProGuard 顺便说一句,太棒了!【参考方案2】:

这个答案不是很好,但它有效......

<taskdef resource="proguard/ant/task.properties" classpath="C:/Program Files/proguard4.7/lib/proguard.jar"/>
<target name="obfuscated_jar" depends="raw_jar">
    <concat destfile="proguard_temp.pro">
        <filelist dir="." files="core.pro,lib1.pro,lib2.pro"/>
    </concat>
    <proguard configuration="proguard_temp.pro">
        <outjar path="prog_obfuscated.jar"/>
    </proguard>
    <delete file="proguard_temp.pro"/>
</target>

【讨论】:

【参考方案3】:

configuration 属性中似乎只允许一个文件。已编辑 并且仅在 &lt;proguard&gt; 元素上允许使用属性。我有另一个可能的解决方案。尝试使用 Ant concat-task 将您的配置文件连接成一个并将这个临时文件传递给 &lt;proguard configuration=""> 属性。


另外,可以修改ProGuardTask-class 以接受多个文件作为参数并在以后将它们连接起来。 Ant macrodef 也可以达到同样的效果。

【讨论】:

试过了,没有运气。 proguardconfiguration doesn't support the "configuration" attribute 是的。我们想过同样的事情。 :-) 哈!我想伟大的思想是一样的,同时也是一样的。谢谢您的帮助!控制台上的 Proguard 接受多个命令,所以我猜想它也会在 ant 任务中接受多个命令,但是 concat 的东西工作正常。

以上是关于ProGuard Ant 任务的多个配置文件的主要内容,如果未能解决你的问题,请参考以下文章

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

用于 Android Proguard 混淆的 ANT 构建

在 MobileFirst 中使用 ant 任务部署战争文件未反映在服务器配置工具中

如何将 JUnit Ant 任务配置为仅在失败时生成输出?

build.xml是啥

无法创建任务以上传 Proguard 映射 File.java.lang.IllegalStateException:解析配置“androidTestAnnotationProcessor”