私はコードを縮小するためにProguardを使用しています。私の戦略は、それを有効にして、警告に従って、それが何かを残しておくことです。外部の図書館がある場合は、著者が利用可能なProguardの指示に従います。多くの指示には-dontwarn
フラグが含まれています。 -dontwarn
フラグを無効にすると、警告が表示されます。 -keep
フラグを使用してほとんどのクラスを維持している場合、なぜ警告が表示されるのですか? 例:クラスを保持しているにもかかわらずProguardの警告
-keep class javax.** { *; }
# for butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.AbstractProcessor
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.ProcessingEnvironment
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.Element
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.annotation.processing.Filer
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.tools.JavaFileObject
...
です。次に、外部ライブラリをコンパイルするときに '-injars'と' -libraryjars'を使用する必要がありますか? – Vas
AndroidプロジェクトにGradleビルドを使用すると、プロジェクトの依存関係に基づいてすべての '-injars'と' -libraryjars'が設定されます。特別なセットアップの必要はありません。 – Tomik
ああ意味します。ありがとう! – Vas