2016-07-07 3 views
0

Я включил Proguard и добавил правильные правила proguard для всех библиотек, которые я использую.После применения Proguard, Джексон пропустил для разбора ответа json с корнем

Я использую Retrofit для сетевых вызовов и конвертер Jackson для анализа ответов.

Мои ответы Json имеют значения корня, чтобы разобрать это, используя Jackson I, используйте настройки SerializationFeature.WRAP_ROOT_VALUE и DeserializationFeature.UNWRAP_ROOT_VALUE. Все работало, пока я не применил пролога.

Без каких-либо исключений синтаксического анализа поля анализируются как нулевые значения.

правило Proguard я использую для Джексона является

-keepnames class com.fasterxml.jackson.** { *; } 

-dontwarn com.fasterxml.jackson.databind.* 

-keepattributes *Annotation*,EnclosingMethod,Signature 

-keep class org.codehaus.** { *; } 

-keepclassmembers public final enum 
org.codehaus.jackson.annotate.JsonAutoDetect$Visibility { 
    public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; 
} 

-keepclasseswithmembers class com.jombay.vger.rx.resources.** { 
    public protected private <init>(...); 
    public void set(*); 
    public ** get*(); 
} 

-keepclasseswithmembers public class com.jombay.vger.retrofit.resources.** { 
    public protected private <init>(...); 
    public void set(*); 
    public ** get*(); 
} 

-keepclasseswithmembers public class com.jombay.vger.utils.** { 
    public protected private <init>(...); 
} 

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

-keep class com.fasterxml.jackson.databind.ObjectMapper {*;} 

-keep class com.fasterxml.jackson.databind.ObjectWriter {*;} 

Я пришел с этой конфигурацией после решения много других вопросов.

Невозможно отладить и понять проблему здесь.

ответ

0

В вашей конфигурации, чтобы сохранить свои классы домена, вам не хватает некоторых подстановочных знаков. Вместо этого

-keepclasseswithmembers class com.jombay.vger.rx.resources.** { 
    public protected private <init>(...); 
    public void set(*); 
    public ** get*(); 
} 

это должно скорее быть:

-keepclasseswithmembers class com.jombay.vger.rx.resources.** { 
    <init>(...); 
    public void set*(***); 
    public *** get*(); 
} 
+0

@ т-Neidhart: Большое спасибо, что работал как шарм –

 Смежные вопросы

  • Нет связанных вопросов^_^