Android: 无法更新发布版本,因为 gson 没有添加到 pro guard 异常
Android: Can't update release version as gson was not added exception to pro guard
情况:
- 对象 (.com.package.model) 作为 Gson 字符串存储在 SQLite 数据库中
- 目前没有添加 proguard 异常
- 应用已在 Play 商店发布
- 更新版本后,应用崩溃并出现“预期开始数组但找到字符串”错误
- 禁用 proguard 或向两个版本添加异常可以让错误消失
由于该应用程序已经发布,有谁知道我如何将旧 apk 映射到新 apk?
我愿意请你喝咖啡 ;)
使用的异常:
# 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.** { *; }
根据 ProGuard 为您之前版本生成的映射文件,您可以使用 Gson 的 @SerializedName
手动注释模型 类 的字段并使用 alternate
指定混淆字段名称。 alternate
值仅在反序列化期间被考虑,因此允许您通过 @SerializedName
注释的 value
指定有意义的 属性 名称,这些名称将用于任何新序列化数据。
情况:
- 对象 (.com.package.model) 作为 Gson 字符串存储在 SQLite 数据库中
- 目前没有添加 proguard 异常
- 应用已在 Play 商店发布
- 更新版本后,应用崩溃并出现“预期开始数组但找到字符串”错误
- 禁用 proguard 或向两个版本添加异常可以让错误消失 由于该应用程序已经发布,有谁知道我如何将旧 apk 映射到新 apk? 我愿意请你喝咖啡 ;)
使用的异常:
# 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.** { *; }
根据 ProGuard 为您之前版本生成的映射文件,您可以使用 Gson 的 @SerializedName
手动注释模型 类 的字段并使用 alternate
指定混淆字段名称。 alternate
值仅在反序列化期间被考虑,因此允许您通过 @SerializedName
注释的 value
指定有意义的 属性 名称,这些名称将用于任何新序列化数据。