因此,例如,我希望每个输出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

最佳答案

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

通过多次低效率地读取同一commons.jar,您的技巧就起作用了。您可以使用-dontnote禁止显示警告。

笔记:


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

09-29 22:33