我們注意到,在我們的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();