4

アプリの新しい APK をビルドすると、古いシリアル化された保存データが読み込まれなくなり、次の例外が発生します。

java.io.InvalidClassException: org.myapp.b.b; Incompatible class (SUID): org.myapp.b.b: static final long serialVersionUID =1L; but expected org.myapp.b.b: static final long serialVersionUID =0L;

私はこれをproguard.cfgに持っています:

-keepnames class * implements java.io.Serializable

-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    !private <fields>;
    !private <methods>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

私の serialVersionUID はコードで変更されていません。デバッグするとすべてが機能しますが、新しい apk をテストすると、古いデータが読み込まれません。

何か案は?

4

0 に答える 0