Kotlin: нужно защитить класс данных Kotlin?

У меня есть класс данных, определенный ниже

package com.mypackage.model

object Model {
    data class News(val photo: String, val title: String, val description: String)
}

Когда я компилирую его с помощью Proguard (т. е. выпускаю сборку), все данные, которые я получил и храню в модели, становятся нулевыми. Они все еще там, т.е. ArrayList listOfNews действительно имеет ожидаемый извлеченный размер. Однако все их содержимое равно нулю.

Отладочная сборка это нормально. Чтобы решить эту проблему, я использую эти правила proguard, и это решает проблему.

-keep class com.mypackage.model.** { *; }

Ожидается ли это? т.е. все классы данных должны быть защищены?


person Elye    schedule 07.04.2016    source источник
comment
Вы получаете java.lang.ClassNotFoundException или java.lang.NoSuchMethodError? Если нет, скорее всего, это не вина Proguard в вашем случае.   -  person miensol    schedule 07.04.2016
comment
Ничего толком не получил. Он просто тихо работает, и моя программа все еще работает. Но данные нулевые. Возможно, мне нужно просмотреть сообщения журнала.   -  person Elye    schedule 07.04.2016
comment
Проверьте журнал, не увидев ни одного такого сообщения. Учитывая, что это релизная сборка, возможно, весь журнал отладки не отображается. Если я перейду на отладочную сборку, эта ошибка больше не будет отображаться, поэтому в отладочной сборке не будет никаких следов проблемы.   -  person Elye    schedule 07.04.2016
comment
Как именно вы храните данные в своей модели? Вы используете отражение?   -  person yole    schedule 12.04.2016


Ответы (1)


насколько я могу судить, такое поведение ожидаемо. Это может быть связано с тем, что они сериализуемы или около того. Я также должен добавить классы моделей в proguard.

person tibbi    schedule 25.08.2016