跳转到正文
YGJoon 技术博客

KSP 2 与 Kotlin 2.x:旧工程迁移前要核对什么

发布于:
·970 字 · 约 2 分钟·作者:
KSP1 的 Kotlin 1.9 配置不能直接代表 Kotlin 2.x 工程。本文整理 KSP2 实现变化、版本选择、处理器兼容和迁移检查步骤。
KSP 2 与 Kotlin 2.x:旧工程迁移前要核对什么文章封面
目录

旧文章中的 1.9.24-1.0.20 是 Kotlin 1.9 / KSP 1.x 时期的配置。升级 Kotlin 2.x 后,应该先确认项目使用的 KSP 实现和处理器兼容性,再处理生成代码与增量编译;不要只把旧版本号改成另一个数字。

KSP2 改变了什么

KSP2 是 KSP API 的新实现。它不再作为 Kotlin 编译器插件运行,而是基于 Kotlin 与 IntelliJ 等工具共用的编译器 API。这个方向与 K2 编译器迁移有关,处理器作者和使用者都需要重新核对处理行为、Gradle 任务和兼容矩阵。

这不意味着所有 KSP1 处理器都必然失效。是否能直接迁移,取决于处理器使用的 API、依赖版本、项目的 Kotlin/Gradle/Android Gradle Plugin 组合,以及生成代码有没有依赖旧实现的行为。

更新 Gradle 插件和处理器依赖

先查看 KSP 官方 Releases 中与你项目工具链匹配的版本。以本文核对日期为准,官方 Releases 页面列出的最新版本是 2.3.12;具体项目仍要按该版本说明检查最低 Android Gradle Plugin、Gradle 和 Kotlin 要求,不能把“最新”当成兼容性保证。

版本目录示例:

[versions]
ksp = "2.3.12"

[plugins]
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

在 Android 模块中应用插件,并把代码生成器依赖放到 ksp configuration:

plugins {
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.ksp)
}

dependencies {
    implementation(libs.moshi)
    ksp(libs.moshi.codegen)
}

上面只是 Gradle 写法示意。Kotlin Gradle Plugin、AGP、Gradle Wrapper 与处理器库都要按各自发布说明核对;不要继续照抄旧文中的 Kotlin 1.9 和 KSP1 版本组合。

检查处理器与生成结果

升级后先确认处理器可以解析工程里的 Kotlin 符号,再查看生成目录和编译错误。重点检查:

迁移验证可按这个顺序执行:

  1. 用项目当前选定的 KSP2 版本运行 ./gradlew :app:kspDebugKotlin。
  2. 检查生成代码,再运行对应模块的 assembleDebug 和已有测试。
  3. 修改或删除一项带处理器注解的源码,确认增量构建能更新或清理对应生成文件。
  4. 用 CI 中实际使用的 Gradle Wrapper 和 JDK 重跑,避免本机与构建环境差异。

这些是建议的检查步骤;本文没有在某个仓库或设备上执行迁移。

Kotlin Multiplatform 项目要单独检查

KMP 项目的 KSP 配置也在演进。KSP Release notes 已提示将通用的 ksp(...) 配置迁移到 target-specific configuration。若工程包含多个 target,不要直接复制 Android 单模块示例;按当前 KSP 项目文档 和所用版本的发布说明逐个核对需要处理的 target。

何时保留旧 KSP1 文档

仍在维护 Kotlin 1.9 / KSP1 工程时,旧文中的 Processor API 示例可以作为历史参考。新工程或升级中的工程应以当前 KSP2 文档为准。遇到构建失败时,先记录 Kotlin、AGP、Gradle、KSP 和处理器版本,再根据错误定位版本兼容或处理器 API 问题。

参考资料


分享这篇文章:


相关文章

上一篇
Kotlin/JS 系列文章索引