You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Kotlin到1.5.20开启Proguard后Moshi1.12.0反射报错如何解决

故障修复方案
  • 升级Moshi依赖至1.12.0及以上版本
    Kotlin 1.5.x修改了Kotlin元数据的存储结构,低于1.12.0版本的Moshi无法正确识别新版元数据,是该类报错的高频诱因
  • 补全Proguard混淆规则
    原有官方规则基础上新增Kotlin元数据保留规则,避免反射时无法读取类信息:
    # 保留Kotlin元数据供反射使用
    -keep class kotlin.Metadata { *; }
    # 保留所有标注了JsonClass的类及其成员
    -keep @com.squareup.moshi.JsonClass class * {
        <fields>;
        <init>(...);
    }
    
  • 优先启用Moshi代码生成模式(推荐)
    给所有用于JSON序列化/反序列化的Kotlin数据类添加@JsonClass(generateAdapter = true)注解,完全规避反射依赖,既可以避免该类反射错误,也能提升序列化性能:
    @JsonClass(generateAdapter = true)
    data class YourDataClass(
        val field1: String,
        val field2: Int
    )
    
    同步确认build.gradle中已添加Moshi代码生成的依赖配置:
    // kapt 配置
    kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshi_version"
    
  • 排查特殊类场景
    如果存在嵌套内部类、匿名类用作数据结构的场景,需单独给这些类添加保留规则,避免混淆后类名篡改导致反射无法识别。

内容的提问来源于stack exchange,提问作者Alan Lu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:06:04