因此,举例来说,我希望每个输出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
答案 0 :(得分:0)
ProGuard的目的是忽略重复的输入类(除了打印注释)并将每个已处理的类写入一个jar。您可以为commons.jar创建一个单独的输出jar,然后将其合并到其他jar中。
你的伎俩恰好工作,多次低效地阅读相同的commons.jar。您可以使用-dontnote
来抑制警告。
注意:
-optimizations !class/merging/*
),以防止类在jar之间迁移。