【问题标题】:Proguard - How to create multiple output jars with shared input jarsProguard - 如何使用共享输入 jar 创建多个输出 jar
【发布时间】:2013-07-19 10:03:34
【问题描述】:

例如,我希望每个输出 jar 都包含其上方的两个 injar:

# Windows Client
-injars common.jar
-injars windowsClient.jar
-outjar windowsClient.jar

# Mac Client
-injars common.jar
-injars macClient.jar
-outjar macClient.jar

# Windows Server 
-injars common.jar
-injars windowsServer.jar
-outjar windowsServer.jar

# Mac Server 
-injars common.jar
-injars macServer.jar
-outjar macServer.jar

所以这是可行的,并且只包含每个 jar 特定的代码。问题是我还从 proguard 收到大量“程序类定义重复”警告。我认为这是因为重复的-injars common.jar,但我不知道如何解决。如果我从每个分组中删除 -injars common.jar,则会收到关于必须使用过滤器的错误。

有没有办法例如说:

# Windows Server (3 step)
-removeJars macClient.jar
-injars ...
-outjars windowsServer.jar

【问题讨论】:

    标签: java ant build proguard


    【解决方案1】:

    ProGuard 的目的是忽略重复的输入类(除了打印出注释)并将每个已处理的类写入单个 jar。您可以为 commons.jar 创建一个单独的输出 jar,然后将其合并到其他 jar 中。

    通过多次读取同一个 commons.jar 的效率有点低,您的技巧恰好奏效。您可以使用-dontnote 禁止警告。

    注意事项:

    • 输入 jar 和输出 jar 的名称必须不同。
    • 您可能希望禁用类合并 (-optimizations !class/merging/*),以防止类在 jar 之间迁移。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2014-06-02
    相关资源
    最近更新 更多