The situation:
Used exceptions:
# 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.** { *; }
Based on the mapping files generated by ProGuard for your previous release, you could manually annotate the fields of your model classes with Gson's @SerializedName
and use alternate
to specify the obfuscated field names. The alternate
values are only considered during deserialization, and therefore allow you to specify meaningful property names through the value
of the @SerializedName
annotations, which will be used for any newly serialized data.