Proguardを有効にしましたが、APKをビルドしようとしていますが、多くの警告が表示され、それらを解決する方法がわかりません。
Retrofit、Jsoup、およびその他のストックライブラリを使用していますが、次の警告が表示されます。
Warning:okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning:okio.Okio: can't find referenced class Java.nio.file.Files
Warning:okio.Okio: can't find referenced class Java.nio.file.Path
Warning:okio.Okio: can't find referenced class Java.nio.file.OpenOption
Warning:okio.Okio: can't find referenced class Java.nio.file.Path
Warning:okio.Okio: can't find referenced class Java.nio.file.OpenOption
Warning:okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning:okio.Okio: can't find referenced class Java.nio.file.Path
Warning:okio.Okio: can't find referenced class Java.nio.file.OpenOption
Warning:okio.Okio: can't find referenced class Java.nio.file.Path
Warning:okio.Okio: can't find referenced class Java.nio.file.OpenOption
Warning:okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning:retrofit2.Platform$Java8: can't find referenced method 'boolean isDefault()' in library class Java.lang.reflect.Method
Warning:retrofit2.Platform$Java8: can't find referenced class Java.lang.invoke.MethodHandles$Lookup
Warning:retrofit2.Platform$Java8: can't find referenced class Java.lang.invoke.MethodHandle
Warning:retrofit2.Platform$Java8: can't find referenced class Java.lang.invoke.MethodHandles
Warning:retrofit2.Platform$Java8: can't find referenced class Java.lang.invoke.MethodHandle
Warning:retrofit2.Platform$Java8: can't find referenced class Java.lang.invoke.MethodHandles$Lookup
Warning:retrofit2.Platform$Java8: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Note: the configuration keeps the entry point 'Android.support.v7.widget.FitWindowsLinearLayout { void setOnFitSystemWindowsListener(Android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener); }', but not the descriptor class 'Android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener'
Note: the configuration keeps the entry point 'Android.support.v7.widget.RecyclerView { void setAccessibilityDelegateCompat(Android.support.v7.widget.RecyclerViewAccessibilityDelegate); }', but not the descriptor class 'Android.support.v7.widget.RecyclerViewAccessibilityDelegate'
Note: the configuration keeps the entry point 'Android.support.v7.widget.RecyclerView { void setAdapter(Android.support.v7.widget.RecyclerView$Adapter); }', but not the descriptor class 'Android.support.v7.widget.RecyclerView$Adapter'
Note: the configuration keeps the entry point 'Android.support.v7.widget.RecyclerView { void setRecyclerListener(Android.support.v7.widget.RecyclerView$RecyclerListener); }', but not the descriptor class 'Android.support.v7.widget.RecyclerView$RecyclerListener'
Note: the configuration keeps the entry point 'Android.support.v7.widget.RecyclerView { void setLayoutManager(Android.support.v7.widget.RecyclerView$LayoutManager); }', but not the descriptor class 'Android.support.v7.widget.RecyclerView$LayoutManager'
Note: the configuration keeps the entry point 'Android.support.v7.widget.RecyclerView { void setRecycledViewPool(Android.support.v7.widget.RecyclerView$RecycledViewPool); }', but not the descriptor class 'Android.support.v7.widget.RecyclerView$RecycledViewPool'
Note: the configuration keeps the entry point 'Android.support.v7.widget.RecyclerView { void setViewCacheExtension(Android.support.v7.widget.RecyclerView$ViewCacheExtension); }', but not the descriptor class 'Android.support.v7.widget.RecyclerView$ViewCacheExtension'
Warning:there were 22 unresolved references to classes or interfaces.
Warning:there were 1 unresolved references to library class members.
Warning:Exception while processing task Java.io.IOException: Please correct the above warnings first.
ここに私のプロガードがあります:
-keep class * implements Android.os.Parcelable {
public static final Android.os.Parcelable$Creator *;
}
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# Gson specific classes
-keep class com.abohani.tdroms.SharedPreferencesTools { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.abohani.tdroms.** { *; }
ProGuardを使用するときは、常にすべての警告を解決するにする必要があります。
これらの警告は、ライブラリがいくつかのコードを参照しており、そのソースがないことを示しています。それは大丈夫かもしれません。問題のあるコードが呼び出されるかどうかによります。
この場合、OkioおよびRetrofit2の警告は無視できます。パッケージ Java.nio.*
はAndroidでは利用できず、呼び出されることはありません。これらの警告を無視しても問題ありません。また、Java 8クラスは使用されません。
これをProGuard構成に追加すると、問題が修正されます。
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8
レトロフィットページでは、プロガードビルドについて次のように記載されています。
プラットフォームは、Androidに存在しない型でClass.forNameを呼び出して、プラットフォームを決定します。
-dontnote retrofit2。プラットフォーム
Java 8 VMで実行するときに使用されるプラットフォーム。実行時には使用されません。
-dontwarn retrofit2.Platform $ Java8
コンバーターおよびアダプターによるリフレクションで使用するための汎用タイプ情報を保持します。
-keepattributes署名
Proxyインスタンスで使用するために、宣言されたチェック済み例外を保持します。
-keepattributes例外
ここで確認してください: http://square.github.io/retrofit/