2014-01-15 4 views
4

У меня есть простой класс со списком, как показано ниже:GSON ошибки десериализации с ProGuard

public class Foo { 
    @Expose 
    private ClassA classa; 

    @Expose 
    private List<ClassB> list; 
} 

сериализации и десериализации работают отлично. Однако, когда я запутать свой код с ProGurad я получаю следующее исключение:

com.google.gson.JsonParseException: Json десериализатор [email protected]08 не удалось десериализации JSON объект [{...}, {...}, ...] данный тип класс java.util.List

+0

Вы можете разместить свой файл CFG Proguard ? – GhostDerfel

ответ

1

Вы должны на этой линии, чтобы правильно настроить ProGuard с GSON

##---------------Begin: proguard configuration for Gson ---------- 
# Gson uses generic type information stored in a class file when working with fields. Proguard 
# removes such information by default, so configure it to keep all of it. 
-keepattributes Signature 

# For using GSON @Expose annotation 
-keepattributes *Annotation* 

# Gson specific classes 
-keep class sun.misc.Unsafe { *; } 
#-keep class com.google.gson.stream.** { *; } 

# Application classes that will be serialized/deserialized over Gson 
-keep class com.google.gson.examples.android.model.** { *; } 

Как вы можете видеть в этом примере: https://code.google.com/p/google-gson/source/browse/trunk/examples/android-proguard-example/proguard.cfg

+0

Да, образец Gson замечательный, но его отсутствует '-keepattributes * Annotation *' поэтому не забудьте добавить это, если вы используете аннотации Gson. –

1

Вам нужно добавить эти строки в ProGuard так, что класс gson хранятся при подписании приложения ..

##---------------Begin: proguard configuration for Gson ---------- 
# Gson uses generic type information stored in a class file when working with fields. Proguard 
# removes such information by default, so configure it to keep all of it. 
-keepattributes Signature 


# Gson specific classes 
-keep class sun.misc.Unsafe { *; } 
#-keep class com.google.gson.stream.** { *; } 

# Application classes that will be serialized/deserialized over Gson 
-keep class com.google.gson.examples.android.model.** { *; } 

##---------------End: proguard configuration for Gson ---------- 
Смежные вопросы