2015-11-22 15 views
11

ho creato un'applicazione utilizzando Cling e sta lavorando bene, ma quando creo build di rilascio ottengo seguente messaggio e niente gioca sul renderer:aderisce Android/UPnP Proguard

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 ! 

Sotto è il mio enteries Proguard:

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

si dispone di una "risposta HTTP è stato: 500 Internal Server Error" si fa a controllare l'errore sul vostro server? – LaurentY

+1

Sì, è piuttosto strano che lo stesso server funzioni bene con Chromecast ma non con Upnp dopo aver eseguito proguard Iam è appena bloccato – ingsaurabh

+0

OK ma qual è l'errore sul server? Sono sicuro che l'errore 500 è registrato sul server. Si prega di controllare questo sul server – LaurentY

risposta

8

Ok, dopo aver aver letto il manuale Proguard, e avendo numerosi colpo e prove, infine, l'ho fatto modificando ultima riga del file prguard sopra per

-keepattributes annotazione, InnerClasses, Firma

e ogni cosa funziona bene

da Proguard

Specifica la firma generica della classe, campo, o un metodo.I compilatori potrebbero aver bisogno di queste informazioni per compilare correttamente classi che usano tipi generici da librerie compilate. Il codice può accedere a questa firma per riflessione.

ed emissione è di riflessione

2

Proguard sta corrompendo classi/interfacce cioè toccanti nella lib aderisce ed è necessario per evitare che ...

si potrebbe iniziare here assumendo hai un problema con Proguard che tocca alcune reti correlate nello stack Jetty/Http dal contenuto del tuo errore. L'ipotesi selvaggia è che è come se l'entità o il corpo http non fosse gestita come l'implementazione delle interfacce appropriate ... Si vuole configurare proguard per evitare tutte le interfacce in quella libreria e non si hanno direttive di "mantenere l'interfaccia" nel proguard ..

Ad esempio, stai dicendo a proguard di non toccare nessuna delle interfacce in "org.eclipse.jetty". Non lo stai facendo e potresti volerlo.

vedere here

manuali scansione Proguard per -keepinterface da utilizzare con pacchetti molo attuare il server/http connessioni nel vostro lib.

  1. sapere di più sui 'aggrapparsi' pacchetti/interfaces in tutto il client-server interno e le implementazioni stack di rete interne nella libreria (sembra implementa molo per le connessioni CS su un protocollo come http)

  2. crea un elenco di pacchetti sul jar/archivio di lib per confrontare con la tua proguard config. Prestare particolare attenzione alle interfacce utilizzate dall'implementazione del server di jetty "jar -tf my.jar | sort | uniq" o alcune di tali

  3. guardare ciò che è stato occultato da proguard in "mapping.txt" e in "seeds.txt" 'explain here. intersecano i nomi dei pacchetti da quelle rispettive liste con i pacchetti & liste assemblate sopra che NON volevi che proguard avesse a che fare. 'semi' dovrebbe contenere le tue classi/interfacce jetty. 'mappatura' NON dovrebbe!

+1

Provato ogni combinazione possibile ma ancora lo stesso messaggio di errore, pensando di allontanarsi da aggrapparsi – ingsaurabh

0

Forse si potrebbe provare ad aggiungere -keepclassmembers oltre a -keep class per il pacchetto org.fourthline.cling come questo:

-keep class org.fourthline.cling.** { *;} 
-keepclassmembers class org.fourthline.cling.** { *;} 
+0

Provato non funziona – ingsaurabh