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 に固有のコードのみが含まれます。問題は、プロガードから「プログラムクラスの定義の重複」という警告も大量に表示されることです。重複したため-injars common.jarだと思いますが、それを解決する方法がわかりません。-injars common.jar各グループから削除すると、フィルターを使用する必要があるというエラーが表示されます。

たとえば、次のように言う方法はありますか:

# Windows Server (3 step)
-removeJars macClient.jar
-injars ...
-outjars windowsServer.jar
4

1 に答える 1

0

ProGuard の意図は、重複する入力クラスを無視し (メモの出力は別として)、処理された各クラスを 1 つの jar に書き込むことです。commons.jar 用に別の出力 jar を作成し、後でそれを他の jar にマージすることができます。

同じ commons.jar を何度も非効率的に読み取ることで、たまたまうまくいきます。で警告を抑制することができます-dontnote

ノート:

  • 入力 jar と出力 jar の名前は異なる必要があります。
  • クラスのマージ ( ) を無効-optimizations !class/merging/*にして、クラスが jar 間で移行されないようにすることができます。
于 2013-07-19T22:45:55.557 に答える