我们注意到,在我们的proguard-rules.pro我们缺少的的Android,使用ProGuard和系列化
-keep class com.thecompany.theapp.datamodel.** { *; }
线,这使我们的序列化的数据对象。这导致应用程序在解析序列化的User对象时崩溃,这些对象通过删除未使用的setter/getters(未删除字段)而更改。据我们了解,这可以根据http://docs.oracle.com/javase/7/docs/platform/serialization/spec/version.html#6678
在我们将-keep行添加到proguard-rules.pro并调试serializedUser字符串并且字段仍然被模糊处理(a,b,c等)后,Gson解析器仍然设法解析序列化的字符串(yay!)。但为什么?! Gson解析器不希望这些字段是否被模糊处理?
当我们从混淆的数据转到非混淆数据时,这是否意味着后面的问题?任何人都可以提供一些有关proguard和Gson解析序列化对象之间的交互如何工作的清晰度?
这是我们如何使用解析的GSON数据对象:
String serializedUser = EncPrefUtil.decryptStringPref(context, R.string.pref_key_user);
User user = !TextUtils.isEmpty(serializedUser) ? new Gson().fromJson(serializedUser, User.class) : new User();