Moshi 1.12.0搭配Kotlin 1.6.0执行kapt报元数据解析错误如何解决
问题根因
该报错核心原因是Moshi 1.12.0 内置依赖的 kotlinx-metadata 版本与 Kotlin 1.6.0 输出的元数据格式不匹配。Moshi 1.12.x 版本默认绑定适配 Kotlin 1.5.x 的 kotlinx-metadata 依赖,无法解析 Kotlin 1.6 新增的元数据字段,即使显式指定了项目 Kotlin 版本,依赖传递逻辑仍会拉取低版本的 kotlinx-metadata 执行解析,最终抛出这个不符合预期的「Kotlin <1.1」错误提示。
修复方案
- 方案1:升级 Moshi 到适配 Kotlin 1.6 的版本
直接将 moshi 版本升级到1.13.0及以上即可,该版本已默认内置适配 Kotlin 1.6+ 的 kotlinx-metadata 依赖,无需额外修改其他配置。 - 方案2:显式强制指定 kotlinx-metadata 版本(暂无法升级 Moshi 时使用)
如果项目存在兼容性约束无法升级 Moshi 版本,可以在项目根 build.gradle 的依赖约束块中强制指定 kotlinx-metadata 的兼容版本,配置如下:
allprojects { configurations.all { resolutionStrategy { force "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0" } } }
- 方案3:排查全局 Kotlin 版本一致性
检查项目所有模块的 build.gradle 配置,确认所有模块使用的 Kotlin 版本、kotlin-kapt插件版本完全一致,没有子模块单独指定低于 1.6 的版本,清理本地构建缓存后重新编译:
./gradlew clean build
如果仍报错可执行全量缓存清理后重试:
./gradlew clean build --no-build-cache --no-configuration-cache
内容的提问来源于stack exchange,提问作者Tom Darious
相关产品推荐
相关产品推荐

