Не удается сериализовать тип Kotlin с помощью Moshi И R8

#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>;
}