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
属性中似乎只允许一个文件。已编辑
并且仅在 <proguard>
元素上允许使用属性。我有另一个可能的解决方案。尝试使用 Ant concat-task 将您的配置文件连接成一个并将这个临时文件传递给 <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 任务部署战争文件未反映在服务器配置工具中
无法创建任务以上传 Proguard 映射 File.java.lang.IllegalStateException:解析配置“androidTestAnnotationProcessor”