java.lang.IllegalArgumentException: Cannot serialize Kotlin type XX. 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.
というエラーが出て parse に失敗しました。
ちゃんと以下のように KotlinJsonAdapterFactory をセットしているので、関係ないエラー文言であり紛らわしいです。
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
問題は moshi-kotlin を使うときに追加する proguard 設定にあります。
https://github.com/square/moshi/blob/master/kotlin/reflect/src/main/resources/META-INF/proguard/moshi-kotlin.pro
は 1.9.2 の時点で
-keep class kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoaderImpl
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
になっていますが、これを
-keep class kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoaderImpl
-keep class kotlin.Metadata {
public <methods>;
}
にすれば正しく parse されるようになりました。