Android Proguard混淆序列化对象

标签 android serialization proguard

我有一个保存在数据库中的序列化对象。这是以前的版本。

public class Book implements Serializable{

  String id;

}

在我当前的版本中,我已将 id 的数据类型更改为 int。当我更新我的应用程序时,我从数据库中取回了反序列化的对象,但 id0

我曾尝试使用 applymapping 映射到旧版本。但是没用。

我还在我的 progaurd.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 void writeObject(java.io.ObjectOutputStream);
  private void readObject(java.io.ObjectInputStream);
  java.lang.Object writeReplace();
  java.lang.Object readResolve();
}

有人可以帮我吗?谢谢。

最佳答案

覆盖 readObject 方法并尝试逐字段读取新格式,并在出错时回退到旧格式。

这里的这个人有一个验证读取数据的例子,还有:http://www.javapractices.com/topic/TopicAction.do?Id=45

关于Android Proguard混淆序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28720588/

相关文章:

php - 动态代理类的自定义 foreach 结果 - 魔术方法?

java - 将内部接口(interface)方法名称保留在 proguard 中

android - 无法从R8配置中删除 “-ignorewarnings”(Android Proguard问题)

android - java.lang.IllegalArgumentException : column'_data' does not exist 异常

android - 完成尚未停用或关闭的 Cursor

java - 序列化器无法找到我的业务类并抛出 HazelcastSerializationException/ClassNotFoundException

.net - .NET中非常简单的JSON序列化

android - 阻止 Pro-Guard 将 "compiled from:"添加到类中

java - 通过intent解析onclicklistener中的变量数据

javascript - 使用 frida 在运行时从方法获取变量值