【问题标题】:proguard as ant taskproguard 作为蚂蚁任务
【发布时间】:2011-12-29 07:57:16
【问题描述】:

我其实有两个相关的问题:

  1. 可以在任务声明中将预定义的常量扩展为<injar file="${build}/myjar.jar" />吗?
  2. 如何在 proguard 中重用类路径定义?我想要实现的不是指定整套必需的库。它们很多,并且已经包含在具有特定 ID 的 ant 类路径中。

非常感谢。

马丁

【问题讨论】:

    标签: java ant proguard


    【解决方案1】:

    当然你可以使用 Ant 变量。但是从我的角度来看,将所有命令行选项写入 proguard 任务的主体会更容易:

    <taskdef resource="proguard/ant/task.properties" classpath="lib/proguard.jar" />
    <proguard>
        -libraryjars "${java.home}/lib/rt.jar"
        -injars     "${jar.name}"
        -outjars    build/temp.jar
        -keep class test.Main { public static void main(java.lang.String[]); }
        -dontwarn
        -dontoptimize 
        -dontobfuscate
    </proguard>
    

    要将已定义的类路径转换为可包含在 proguard 定义中的字符串,您可以使用 Ant 任务 PathConvert。链接页面上的第一个示例应该是您需要的。

    更新:如何获取路径条目周围的引号已在此处得到解答:How to properly quote a path in an ant task?

    【讨论】:

    • 感谢您的回答。感谢您的帮助。
    • PathConvert 不会像 ProGuard 所期望的那样在带空格的文件名周围添加引号(至少到 4.6 版),因此常规 XML 元素对于路径规范可能更安全。其他选项在嵌入式 ProGuard 样式中确实更紧凑且更具可读性。
    • 我在我的回答中添加了一个链接,该链接描述了报价问题的解决方案。
    【解决方案2】:

    回答你的第一个问题,是的。像在构建文件中那样扩展变量是 Ant 的一个特性。它适用于您使用的任何任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-09
      • 2011-04-17
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2015-05-30
      相关资源
      最近更新 更多