2012-02-14 9 views
7

La aplicación Android se bloquea si proguard se utiliza para ofuscar. A continuación se muestra la stacktrace.Android Proguard - IllegalArgumentException en la clase TypeReference de Jackson

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) 

estoy usando la biblioteca EktorpClient (Para trabajar con el couchdb) y StdCouchDbInstance.java se refiere a this archivo y TypeReference.java está en this paquete. ¿Alguna sugerencia sobre qué opción debería usar en el archivo de configuración de Proguard para superar este problema?

+0

¿Alguna vez encontró una solución a esto? –

+0

no. aún no. necesito ver cómo puedo saltarme a Jackson. – 500865

Respuesta

14

Acabo de encontrarme con este problema usando Proguard con una dependencia de Ektorp. TypeReference es genérico y -keepattributes Signature guardará información genérica.

De hecho, utilicé lo siguiente, que resolvió mi problema.

-keepattributes Signature,*Annotation*,EnclosingMethod 

Desde el Proguard Examples:

la "firma" se requiere el atributo de ser capaz de acceder a los tipos genéricos cuando se compila en el JDK 5.0 y superior.

+0

Gracias David resolvió mi problema :) – Bojan

+0

gracias, resolvió mi problema también: D – cn123h

0

Parece que ProGuard está manejando mal la información de tipo genérico (paso de los parámetros Tipo) de alguna manera. No sé si esto sería un problema conocido de ProGuard; pero puede consultar la lista de correo de los usuarios de Jackson si otros se han encontrado con esto. Además, puedes probar diferentes versiones de Jackson, aunque no creo que la clase TypeReference haya cambiado mucho.

Cuestiones relacionadas