ひし形パターンの依存関係を持つ jar ファイルのコレクションがあります。
base.jar
/ \
dep1.jar dep2.jar
\ /
dep3.jar
ProGuard でそれらを難読化し、依存関係を保持したいと考えています。たとえば、base.jar と dep2.jar の難読化されたバージョンは、dep1.jar と dep3.jar の難読化されたバージョンなしで (ちょうど同じように) 分離して実行できます。可、難読化されていない)。同じパッケージ名の jar に分散されたクラスと、難読化したいメソッド (さまざまなクラスの) を呼び出す依存 jar 内のメソッドが、それらが依存する jar 内にあります。
一度にすべての jar を難読化しようとすると、ProGuard はそれらの依存関係を「理解」しません。また、base.jar のクラスから静的メソッドを取得し、それを dep1.jar の難読化されたクラスに移動します。dep1.jar がクラスパスにない場合、base.jar 内のそのメソッドを「予期する」 dep2.jar の難読化されたバージョンのコードは、実行時に失敗します。
難読化された jar の依存関係が確実に保持されるようにするにはどうすればよいですか?
ドキュメントでは段階的な難読化を使用することを提案していますが、-applymapping
必要と思われるスイッチは、依存する jar を呼び出す際に使用する難読化された名前を依存メソッドに伝える引数を1 つしか取ることができず、最初に難読化されます。dep1.jar の難読化では、そのようなマッピング ファイルの引数が 1 つ生成され、dep2.jar の難読化では別のマッピング ファイルが生成されますが、dep3.jar の難読化では、引数にこれらのマッピング ファイルの両方(および base.jar のファイル) が必要です。dep1.jar と dep2.jar を一緒に難読化することはできません (またはできますか? ) が、コードが一方から他方に再配置される可能性があるため、1 つのマッピング ファイルを生成できません。自分でマッピング ファイルをマージする必要がありますか?-applymapping