これらの2つのプロアガードオプションの違いは何ですか?シンプルプロガード保持オプションの相違点
-keep class com.myclass.**
-keep class com.myclass.** { *; }
これらの2つのプロアガードオプションの違いは何ですか?シンプルプロガード保持オプションの相違点
-keep class com.myclass.**
-keep class com.myclass.** { *; }
最初のルールは、クラスを維持します自身(およびデフォルトコンストラクタ)。
二番目のルールは、すべての方法とフィールドクラスでを維持します。
-keep class com.myclass.**
com.myclass
パッケージとすべてのサブパッケージのすべてのクラスを保持します。縮小や最適化の手順でこれらのクラスの構造を変更したり削除したりしても、そうしないでください。
-keep class com.myclass.** { *; }
上記のcom.myclass
パッケージのすべてのクラスと、これらのクラスのすべてのフィールドとメソッドを保持します。
違いの例:最初のコマンドでは、私のエントリーポイントメソッド(main
など)は依然として縮小、最適化、難読化できます。これらのメソッドのシグネチャをそのまま維持するために、私が保持する必要があるメソッドやフィールドを指定することができます(または、ワイルドカード*
)。これは、反射や、署名や名前をそのまま維持する必要があるその他の状況では不可欠です。
-keepnames
などのコマンドでも署名は保持されますが、縮小中にまだ削除されていない場合に限ります。