添加kotlinx-serialization-json 1.9.0后出现Kotlin版本不兼容编译错误
看起来你遇到的是典型的Kotlin版本依赖冲突问题,核心原因是你的项目里几个关键组件的版本没有对齐:Android Gradle Plugin(AGP)、Kotlin语言本身、还有kotlinx-serialization库。我来帮你一步步解决:
问题根源拆解
你用的是Android Studio Otter(2025.2.1),对应的AGP版本是8.13.0,这个版本的AGP要求使用Kotlin 2.2.0或更高版本。但你的项目在libs.versions.toml里指定了Kotlin 1.9.0,同时又引入了和Kotlin 1.9.x绑定的kotlinx-serialization-json 1.9.0。这就导致了编译时的版本冲突:AGP会自动拉取它需要的Kotlin 2.2.0标准库,但你的Kotlin编译器还是1.9.0,无法识别2.2.0的元数据格式,从而报错。
而且你还漏掉了一个关键步骤:没有添加kotlinx-serialization的Gradle插件,这也是使用序列化库必不可少的配置。
解决方案:对齐所有版本(二选一)
方案一:升级Kotlin到AGP要求的版本(推荐,因为你已经用了最新的Android Studio)
这个方案让你继续使用最新的Android Studio和AGP,同时调整其他依赖版本来匹配:
更新Kotlin版本
打开你的libs.versions.toml文件,把Kotlin版本改成2.2.0:[versions] kotlin = "2.2.0"使用兼容的kotlinx-serialization版本
Kotlin 2.2.0对应的kotlinx-serialization-json版本是1.8.0(序列化库的版本和Kotlin的小版本对齐),修改app/build.gradle.kts里的依赖:// 替换原来的序列化依赖 implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0")添加序列化插件
这是你之前漏掉的关键步骤!- 先在
libs.versions.toml里添加插件版本配置:[versions] # 新增这一行,版本和序列化库保持一致 kotlinSerialization = "1.8.0" [plugins] # 新增这一行 jetbrains-kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinSerialization" } - 然后在
app/build.gradle.kts的plugins区块里添加插件:plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.jetbrains.kotlin.serialization) // 新增这一行 }
- 先在
同步并重建项目
- 点击Android Studio右上角的"Sync Project with Gradle Files"按钮
- 执行
Build > Clean Project,然后Build > Rebuild Project - 最后再做一次
File > Invalidate Caches... > Invalidate and Restart,确保所有缓存都被清理
方案二:降级AGP到兼容Kotlin 1.9.0的版本
如果你不想升级Kotlin,也可以把AGP降级到支持Kotlin 1.9.0的版本(比如AGP 8.5.2):
降级AGP版本
修改libs.versions.toml里的AGP版本:[versions] agp = "8.5.2"添加序列化插件
同样需要补全插件配置:- 在
libs.versions.toml里添加:[versions] kotlinSerialization = "1.9.0" [plugins] jetbrains-kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinSerialization" } - 在
app/build.gradle.kts的plugins里添加:plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.jetbrains.kotlin.serialization) }
- 在
同步并重建
同样执行同步、清理重建、 invalidate缓存重启的操作。
额外检查
如果你做完以上步骤还是有问题,可以通过以下命令查看依赖树,确认有没有其他库在偷偷拉取不兼容的Kotlin版本:
./gradlew app:dependencies
搜索kotlin-stdlib,看看有没有版本不一致的条目,如果有,可以在app/build.gradle.kts里强制统一Kotlin版本:
configurations.all { resolutionStrategy.force("org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.2.0") }
按照上面的步骤来,应该就能解决你的版本冲突问题了!




