Proguard - 如何使用共享输入jar创建多个输出罐

时间:2013-07-19 10:03:34

标签: java ant build proguard

因此,举例来说,我希望每个输出jar都包含在它上面的两个主干:

# 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

1 个答案:

答案 0 :(得分:0)

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

你的伎俩恰好工作,多次低效地阅读相同的commons.jar。您可以使用-dontnote来抑制警告。

注意:

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