Android Cling / Upnp proguard
He creado la aplicación usando Cling y está trabajando muy bien, pero cuando se crea la versión de construcción me sale mensaje siguiente y nada juega en el renderizador:
11-22 16:24:53.341 20172-20172/? I/RendererCommand﹕ TrackMetadata : TrackMetadata [id=1, title=IMG-20151120-WA0007, artist=, genre=, artURI=res=http://192.168.1.4:8089/1.jpg, itemClass=object.item.imageItem] 11-22 16:24:53.345 20172-20172/? V/RendererCommand﹕ Resume 11-22 16:24:53.351 20172-20301/? W/RendererCommand﹕ Fail to stop ! Error: Current state of service prevents invoking that action. Error writing request message. Can't transform message payload: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType. (HTTP response was: 500 Internal Server Error) 11-22 16:24:53.351 20172-20301/? I/RendererCommand﹕ Set uri to http://192.168.1.4:8089/1.jpg 11-22 16:24:53.353 20172-20386/? D/RendererCommand﹕ Update state ! 11-22 16:24:53.354 20172-20264/? W/RendererCommand﹕ Fail to set URI ! Error: Current state of service prevents invoking that action. Error writing request message. Can't transform message payload: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType. (HTTP response was: 500 Internal Server Error) 11-22 16:24:53.354 20172-20262/? W/RendererCommand﹕ Fail to get position info ! Error: Current state of service prevents invoking that action. Error writing request message. Can't transform message payload: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType. (HTTP response was: 500 Internal Server Error) 11-22 16:24:54.354 20172-20386/? D/RendererCommand﹕ Update state !
Abajo está mi proguard enteries:
- Cómo obtener el archivo apk de la versión de liberación usando proguard
- Ejecutar espresso después de proteger la aplicación pero no probar
- Android Studio - Creación incremental de Gradle
- Generación APK firmada con Android: Proguard excepción para la clase / método referenciado no encontrado
- Error: Error de ejecución para la tarea ': app: transformClassesWithMultidexlistForDebug'
-dontoptimize -dontshrink -dontskipnonpubliclibraryclasses -dontpreverify -allowaccessmodification -verbose -dontwarn org.fourthline.cling.** -dontwarn org.seamless.** -dontwarn org.eclipse.jetty.** -dontwarn android.support.v4.app.** -dontwarn android.support.design.widget.** -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keep class javax.** { *; } -keep class org.** { *; } -keep class org.fourthline.cling.** { *;} -keep class org.seamless.** { *;} -keep class org.eclipse.jetty.** { *;} -keep class org.slf4j.** { *;} -keep class javax.servlet.** { *;} -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keepattributes *Annotation*
- Respuestas de ajuste retro se bloquean con pro guard
- Android ProGuard: no se puede encontrar la clase referenciada
- ¿Cómo actualizar ProGuard para Android?
- Varios Proguard nuevas publican los servicios de Google Play v10.2.6 a v11.0.0 en un proyecto Multidex
- Kotlin y Proguard
- ¿Cómo sé las clases de probIem Proguard se refiere a
- Retrofit2 proguard remove param
- (Entrada zip duplicada ))
Ok después de haber leyendo proguard manual, y tener numerosos éxito y ensayos que finalmente lo hizo mediante la modificación de la última línea de arriba prguard archivo a
-keepattributes Anotaciones , InnerClasses, Firma
Y todo funciona bien
De proguard
Especifica la firma genérica de la clase, el campo o el método. Los compiladores pueden necesitar esta información para compilar correctamente clases que utilizan tipos genéricos de bibliotecas compiladas. Código puede acceder a esta firma por reflexión.
Y la cuestión es de reflexión
Proguard está dañando, es decir, tocando las clases / interfaces en el lib de Cling y es necesario evitar que …
Usted podría comenzar aquí asumiendo que usted tiene un problema con el Proguard que toca un cierto establecimiento de una red relacionado en la pila de Jetty / Http que conjeturo del contenido de su error. Wild supongo que es como si la entidad http o cuerpo no se puede manejar como la implementación de las interfaces adecuadas … Usted desea configurar proguard para evitar todas las interfaces en esa biblioteca y usted no tiene ninguna "mantener interfaz" directivas en su proguard .. .
Por ejemplo, le está diciendo a proguard que no toque ninguna de las interfaces en 'org.eclipse.jetty'. Usted no está haciendo eso y puede que lo desee.
Ver aquí
Escanee los manuales de proguard para -keepinterface para usar con paquetes de jetty implementando las conexiones de servidor / http en su lib.
-
Saber más acerca de los paquetes / interfaces 'cling' alrededor de las implementaciones internas de cliente-servidor y de pila de red interna en su biblioteca (parece que implementa jetty para conexiones CS en algún protocolo como http)
-
Construye una lista de paquetes en el jar / archive de la biblioteca para compararla con tu configuración proguard. Preste especial atención a las interfaces que están siendo utilizadas por la implementación del servidor de jetty "jar -tf my.jar | sort | uniq" o algunas de estas
-
Mira lo que ha sido ofuscado por proguard en 'mapping.txt' y en 'seeds.txt' explica aquí . Intersecan los nombres de los paquetes de esas listas respectivas con los paquetes y las listas reunidas por encima de lo que no quería proguard con el lío. Las "semillas" deben contener las clases / interfaces del embarcadero. 'Mapeo' no debe!
Tal vez podrías intentar agregar -keepclassmembers
además de -keep class
para el paquete org.fourthline.cling
como esto:
-keep class org.fourthline.cling.** { *;} -keepclassmembers class org.fourthline.cling.** { *;}
- ¿Cómo utilizar la cámara para tomar la foto en un servicio de fondo en Android?
- Android – Google Maps API v2 – NoClassDefFoundError