Android Moshi Json 转换器导致 kotlin.reflect.jvm.internal.KotlinReflectionInternalError

问题描述 投票:0回答:1

我在 Android 中使用 Moshi 作为 Json 转换器和 Retrofit。

当我将 minifyEnabled 设置为 true 时,对于某些 API 调用它可以工作,但对于其他 API 调用它会抛出此错误:

此可调用不支持默认调用:公共构造函数 ErrorResponse。

请注意,我使用的是自定义 NetworkResponseAdapter 和 NetworkResponseCall。当我尝试将 Json 响应转换为 ErrorResponse 数据类时,NetworkResponseCall 中的这一行抛出异常:errorConverter.convert(error)。

android retrofit moshi android-r8
1个回答
0
投票

当您启用 minify 选项时,编译器会替换您的类名、字段等。它们将不再是 Moshi 序列化的

MyAdapter
类、
execute
方法和
name
内部模型,而是成为
Abc
类、
adcd
方法和
gr
字段。 Thies 包括需要反射和泛型的内部信息。

为了解决此问题,您必须默认在

proguard-rules.pro
文件中编写一组规则,以排除代码的重命名和其他操作。实际上,每个流行的库都会自行添加此类规则。然而,使用自定义类作为适配器或序列化数据类,您需要手动添加规则。

Android 文档简短指南ProGuard 手册

© www.soinside.com 2019 - 2024. All rights reserved.