我在 Android 中使用 Moshi 作为 Json 转换器和 Retrofit。
当我将 minifyEnabled 设置为 true 时,对于某些 API 调用它可以工作,但对于其他 API 调用它会抛出此错误:
此可调用不支持默认调用:公共构造函数 ErrorResponse。
请注意,我使用的是自定义 NetworkResponseAdapter 和 NetworkResponseCall。当我尝试将 Json 响应转换为 ErrorResponse 数据类时,NetworkResponseCall 中的这一行抛出异常:errorConverter.convert(error)。
当您启用 minify 选项时,编译器会替换您的类名、字段等。它们将不再是 Moshi 序列化的
MyAdapter
类、execute
方法和 name
内部模型,而是成为 Abc
类、adcd
方法和 gr
字段。 Thies 包括需要反射和泛型的内部信息。
为了解决此问题,您必须默认在
proguard-rules.pro
文件中编写一组规则,以排除代码的重命名和其他操作。实际上,每个流行的库都会自行添加此类规则。然而,使用自定义类作为适配器或序列化数据类,您需要手动添加规则。