RestTemplate, Jackson y proguard

Estoy tratando de obtener la aplicación de trabajo después de la ofuscación. Tengo dos clases simples:

public class ApiUrlResponseData { @JsonProperty( "@links" ) List<Link> links; public List<Link> getLinks() { return links; } } public class Link { @JsonProperty( "url" ) String url; @JsonProperty( "name" ) String name; @JsonProperty( "mobile" ) Boolean mobile; public Link() { } public Link( String url, String name, Boolean mobile ) { this.url = url; this.name = name; this.mobile = mobile; } public String getUrl() { return url; } public String getName() { return name; } public Boolean isMobile() { return mobile; } } 

Desafortunadamente después de la ofuscación y la ejecución de la petición ApiUrlResponseData.getLinks() devuelve null .

Aquí es cómo estoy tratando de evitar ofuscación de objetos de datos:

  -keepclasseswithmembernames class com.companyname.android.network.data.** { public <fields>; protected <fields>; <fields>; @org.codehaus.jackson.annotate.* <fields>; @org.codehaus.jackson.annotate.* <init>(...); } 

¿Qué me estoy perdiendo?

Las opciones -keepclasseswithmembernames nombres de -keepclasseswithmembernames es bastante exótica: guarda los nombres de las clases (y de sus campos y métodos), si las clases tienen todos los campos y métodos especificados. Es útil principalmente para preservar las clases y los métodos JNI.

Puede mantener los campos y métodos anotados:

 -keepclassmembers class * { @org.codehaus.jackson.annotate.* *; } 

Desafortunadamente, entonces usted tiene que asegurarse de que todos los campos y métodos están anotados.

Puede ser más fácil mantener todos los campos y métodos de clases serializadas como estas:

 -keepclassmembers class com.example.ApiUrlResponseData, com.example.Link { *; } 

Puede utilizar caracteres comodín o también anotaciones para especificarlos.

  • Configuración de Android Proguard para la v7 Support Library ActionBar
  • Usar Proguard sólo para deshabilitar el registro y para reducir recursos
  • Proguard devuelto con el código de error 1. Después de la actualización de ADT 16 a 18
  • Gradle release build con proguard: java.lang.IncompatibleClassChangeError y java.lang.NoSuchMethodError
  • Exportar aplicación de Android con ProGuard da error de ParseException
  • Proguard ignora el archivo de configuración de la biblioteca
  • Firmado apk obtener se estrelló en proguard habilitar
  • Proguard con google-play-services
  • Cómo excluir archivos R * .class de una compilación proguard
  • Cómo activar proguard en mi proyecto?
  • Crashlytics: Usando el servidor de compilación para hacer una versión y cargar la distribución de una aplicación para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.