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
.
- ¿Qué hace ciertas clases de android "debe-mantener"?
- Proguard Google Analytics
- Android: Cómo quitar el registro de depuración de SLF4J con ProGuard
- No se puede habilitar Proguard en un proyecto de Android que contenga jsch lib
- Cómo obfucate dependiente .jar en Proguard?
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?
- Configurar proguard para excluir jar biblioteca que se extiende android.content.Context
- Android obfuscate aplicación utilizando proguard mantiene obfuscating frascos de la biblioteca - o es?
- La ejecución falló para la tarea ': app: transformClassesAndResourcesWithProguardForRelease
- Advertencias de Proguard "no se puede escribir recurso (entrada de zip duplicado)"
- Field.getGenericType () devuelve la instancia de java.lang.Class en lugar de Type
- Error al trabajar con Jackson library post-obfuscation usando Proguard
- GoogleAnalyticsV2 y Proguard
- Android: onClic no funciona con ProGuard
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.
- TranslateAnimación en posición inversa?
- AppCompatDrawableManager.get () vs VectorDrawableCompat.create ()