#java #android #serialization
Вопрос:
Я сталкиваюсь с очень странной проблемой при работе с serialVersionUID в сериализуемом классе. Когда я запускаю в режиме отладки, приведенный ниже код возвращает значение -3853729081041647708, заданное в классе сеанса:
public class Session implements Cloneable, Serializable {
private static final long serialVersionUID = -3853729081041647708L;
Код:
ObjectStreamClass sess = ObjectStreamClass.lookup(Session.class);
long stu = sess.getSerialVersionUID();
Но когда я запускаю в режиме выпуска, однако, он возвращает совершенно не связанное значение, а именно -5810130834168560095
Это приводит к неправильной работе приложения при установке пользователями. Как такое может быть?
Ответ №1:
Проблема в том, что Proguard меняет serialVersionUID на что-то другое. С
-keep public class com.xxx.Session
-keep public class * extends com.xxx.Session
-keepclassmembers class com.xxx.Session { *; }
все работает так, как и ожидалось