を使用して私たちはproguard-rules.proに我々は、シリアライズデータオブジェクトを保持Androidのは、ProGuardのとシリアライズ
-keep class com.thecompany.theapp.datamodel.** { *; }
ラインを、欠落していたことに気づきました。これは、未使用のセッター/ゲッターを削除して(フィールドを削除しないで)変更したシリアル化されたUserオブジェクトを解析する際に、アプリケーションがクラッシュする原因となりました。私たちはこれで大丈夫だと理解しているhttp://docs.oracle.com/javase/7/docs/platform/serialization/spec/version.html#6678
私たちはproguard-rules.proに-keep行を追加し、まだ分かりにくいフィールド(a、b、cなど)でserializedUser文字列をデバッグした後も、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();