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



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

你的技巧碰巧奏效了,因为你多次低效地阅读同一篇文章。您可以使用-dontnote抑制警告。

注:

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

最新更新