#android
#Android
Вопрос:
у меня эта странная проблема. При использовании минимизации / запутывания с помощью R8 у меня возникает следующая ошибка
java.lang.IllegalArgumentException: Cannot serialize Kotlin type <omitted>auth.model.ErrorResponse. Reflective serialization of Kotlin classes without using kotlin-reflect has undefined and unexpected behavior. Please use KotlinJsonAdapter from the moshi-kotlin artifact or use code gen from the moshi-kotlin-codegen artifact.
Без минимизации / запутывания все в порядке. Я использую
val moshi = Moshi.Builder()
.add(BigDecimalAdapter)
.add(KotlinJsonAdapterFactory())
.build()
как указано в readme от moshi. Также в gradle я использую
implementation("com.squareup.moshi:moshi-kotlin:1.9.3")
и добавлены правила
-keep class com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
-keep class <omitted>auth.model.ErrorResponse
но все равно есть то же исключение. чего мне не хватает?
Спасибо
обновлено
вот мой BigDecimalAdapter
object BigDecimalAdapter {
@FromJson
fun fromJson(string: String) = BigDecimal(string)
@ToJson
fun toJson(value: BigDecimal) = value.toString()
}
Комментарии:
1. Не могли бы вы, пожалуйста, включить свою
BigDecimalAdapter
реализацию?2. вопрос обновлен с помощью bigdecimaladapter, спасибо!
3. это
BigDecimal
ваш пользовательский класс или тот, что изmath
библиотеки? Мне трудно понять, откуда взялся этотauth.model.ErrorResponse
класс и как он связан с вашими классами Моши. А пока проверьте мой потенциальный ответ.4. я попробую и дам тебе знать
Ответ №1:
попробуйте добавить в свой proguard:
-keepclassmembers class * {
@com.squareup.moshi.FromJson <methods>;
@com.squareup.moshi.ToJson <methods>;
}