1

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

1 回答 1

0

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

通过多次读取相同的 commons.jar 效率低下,您的技巧恰好奏效。您可以使用 抑制警告-dontnote

笔记:

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