Десериализация объекта в релизной сборке на андроид - PullRequest
1 голос
/ 04 октября 2019

Я разрабатываю приложение для Android, которое должно взаимодействовать с сервером (оба написаны на Java). Чтобы общаться, я использую пользовательские сериализованные объекты (ObjectStream's). Дело в том, что когда я создаю свое приложение для Android с отладочной конфигурацией, все работает нормально, но если я использую конфигурацию выпуска, я получаю следующую ошибку во время десериализации на стороне сервера.

java.lang.ClassNotFoundException: dabdd

Как я могу исправить эту проблему? Это вообще возможно?

1 Ответ

0 голосов
/ 05 октября 2019

Добавьте это в конец вашего /app/proguard-rules.pro файла:

-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();
}

Это должно помешать proguard присвоить имена Serializable классам.

...