studio - librería de compatibilidad android
Obtención de advertencias con Proguard(con bibliotecas externas) (2)
Cuando utiliza ProGuard, siempre debe resolver todas las advertencias .
Estas advertencias le indican que las bibliotecas hacen referencia a algún código y que no hay fuentes para eso. Eso podría y no podría estar bien. Depende si alguna vez se llama al código problemático.
En este caso, las advertencias para Okio y Retrofit2 pueden ignorarse.
El paquete
java.nio.*
No está disponible en Android y nunca se llamará.
Puede ignorar esas advertencias de manera segura.
Tampoco se utilizarán las clases Java 8.
Agregue esto a su configuración de ProGuard, debería solucionar su problema:
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8
He habilitado Proguard, y estoy tratando de construir el APK, y recibo muchas advertencias y no sé cómo resolverlas.
Estoy usando Retrofit, Jsoup y otras bibliotecas de valores, recibo las siguientes advertencias:
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.
Aquí está mi guardia:
-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.** { *; }
La página de actualización ha notado sobre la compilación proguard:
Platform llama a Class.forName en tipos que no existen en Android para determinar la plataforma.
-dontnote retrofit2.Platform
Plataforma utilizada cuando se ejecuta en máquinas virtuales Java 8. No se utilizará en tiempo de ejecución.
-dontwarn retrofit2.Platform $ Java8
Conserve la información de tipo genérico para su uso por reflexión por convertidores y adaptadores.
-keepattributes Signature
Conserve las excepciones comprobadas declaradas para que las use una instancia de Proxy.
-keepattributes Excepciones
compruébalo aquí: http://square.github.io/retrofit/