2012-02-14 13 views
7

L'applicazione Android si arresta in modo anomalo se viene utilizzato proguard per offuscare. Di seguito è riportato lo stacktrace.Proguard Android - IllegalArgumentException in Jackson's TypeReference class

Caused by: java.lang.IllegalArgumentException: Internal error: 
    TypeReference constructed without actual type information 
    at a.b.a.g.b.<init>(TypeReference.java:35) 
    at a.c.d.q.<init>(StdCouchDbInstance.java:22) 
    at a.c.d.p.<clinit>(StdCouchDbInstance.java:22) 

Sto usando la libreria EktorpClient (Per lavorare con il CouchDB) e si riferisce a StdCouchDbInstance.javathis di file e TypeReference.java è in this pacchetto. Qualche suggerimento su quale opzione dovrei usare nel file di configurazione di Proguard per superare questo problema?

+0

Avete mai trovato una soluzione a questo? –

+0

no. non ancora. ho bisogno di vedere come posso saltare Jackson. – 500865

risposta

14

Mi sono appena imbattuto in questo problema utilizzando Proguard con una dipendenza Ektorp. TypeReference è generico e -keepattributes Signature manterrà le informazioni generiche.

In realtà ho utilizzato quanto segue, che ha risolto il mio problema.

-keepattributes Signature,*Annotation*,EnclosingMethod 

Dal Proguard Examples:

la "firma" attributo è richiesto di essere in grado di accedere tipi generici durante la compilazione in JDK 5.0 e versioni successive.

+0

Grazie David ha risolto il mio problema :) – Bojan

+0

grazie, ha risolto anche il mio problema: D – cn123h

0

Suoni come ProGuard è in qualche modo malandato informazioni di tipo generico (passando di parametri di tipo). Non so se questo sarebbe un problema noto di ProGuard; ma potresti controllare la mailing list degli utenti di Jackson se altri lo hanno incontrato. Inoltre, potresti provare diverse versioni di Jackson, anche se non penso che la classe TypeReference sia cambiata molto.