私はProGuard for Androidビルドの使用についての理解を深めようとしています。何を保持するべきか(難読化されていないか)正確に、何を難読化するべきかについてはあまりよく分かりません。ライブラリのProGuard - Androidで正しく使用するには?どのクラスとライブラリを保持するのですか?
カップルは私のアプリで使用されている、そのうちのいくつかは
com.android.support:appcompat
com.android.support:design
io.reactivex:rxandroid
io.reactivex:rxjava
com.jakewharton.rxbinding
com.trello:rxlifecycle
の下にリストされています。質問1:私は、ライブラリの上
を難読化すべきか?彼らはすでにオープンソース..ですProGuardのルールを使用して、すべてのサポートライブラリを維持するのが賢明ではありません。
keep class android.support.** { *; }
私はio.reactivexとjakewhartonライブラリ
質問2で行うことができ、同様の方法
サポートと外部ライブラリ以外では、このアプリケーション用にコード化されたアプリケーション固有のクラスがあります。 AndroidManifest.xmlに記載されているクラス名、具体的にはパブリックメンバーを保持して、残りのコードを難読化するようにしても構いません。
私が何かを見逃しているか、私の理解が正しくないかどうか教えてください。これを繰り返すことは、技術的にどうやって行うのかという問題ではなく、難読化/最適化/縮小のために何を含めるべきか、さらには除外するべきか、さらに具体的にはその理由です。ビルド。
私はProGuardの縮小オプションを見落としていました... ProGuard設定の関連サイトを参照できるということに同意しますが、Google特定ライブラリについてはどうですか。 com.android.support:appcompatこれらの設定を見つけることができる場所アプリケーション固有コードの質問2の回答について...私たちは自分のコードに対して設定を提供すべきではありませんか?この場合、..アプリケーション固有のコード.. AndroidManifestで言及されているものは、常に逆コンパイル用に開いています.. – Girish
いくつかのライブラリ 'com.android.support:appcompat'は、Android Pluginが指定したデフォルトの設定としてProGuardで動作するための明示的なルールを必要としません。 'rxjava')は明示的な規則を必要とするかもしれません。ケースごとに異なるため、各ライブラリのドキュメントでProGuardルールに関するセクションを確認することをお勧めします。 –
「自分のコード」に関して、Androidプラグインのデフォルト設定では、アプリに適用される多くのルールが既に指定されています。 "minify"を有効にすることで、ProGuardはすでに難解なものになるでしょう。しかし、あなたはAndroidManifestについて正しいです。特定のクラス/メソッド/フィールドを難読化することはできません(例えば、 'Activity.onCreate(Bundle)'は外部から呼び出されるため常に呼び出されます)できるだけコードをあなたの活動/断片/ビューから分離したヘルパーオブジェクトに変換し、ProGuardにそれらを難読化させてください:) –