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:

 -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* 

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.

  1. 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)

  2. 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

  3. 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.** { *;} 
  • Crash en getDeclaredAnnotation cuando se utiliza Proguard
  • El tema predeterminado no funciona después de habilitar el archivo Proguard (minifyEnabled true)
  • ProGuard: ¿duplicado definición de biblioteca clase?
  • ProGuard - ¿Cómo usar correctamente para Android? ¿Qué clases y bibliotecas conservar?
  • Error de android.support.v8.renderscript en ProGuard
  • Decoración de artículos Proguard y RecyclerView
  • Advertencia de Android Proguard: no se puede escribir recurso (entrada de zip duplicada)
  • Error: Error de ejecución para la tarea ': android: transformClassesAndResourcesWithProguardForRelease'
  • ProGuard causa retraso en la aplicación
  • Usar Proguard sólo para deshabilitar el registro y para reducir recursos
  • Progaurd issue "Advertencia: Ignorar el atributo InnerClasses para una clase interna anónima"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.