Home > Blockchain >  Android: Can't update release version as gson was not added exception to pro guard
Android: Can't update release version as gson was not added exception to pro guard

Time:03-11

The situation:

  1. Objects (.com.package.model) are stored inside a SQLite Database as Gson strings
  2. currently no proguard exceptions were added
  3. app is released on the play store
  4. after updating the release, app crashes with "Expected begin array but found String" error
  5. disabling proguard or adding the exceptions to both releases lets the error disappear As the app is already released, does anyone know how I can map the old apk to the new one? I am willing to pay you a coffee ;)

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.** { *; }

CodePudding user response:

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.

  • Related