使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间

KotlinSymbolProcessing(KSP)已推出稳定版本,作为新一代注释处理工具,它比KAPT速度快2倍,且支持Kotlin/Native和Kotlin/JS。KSP通过避免存根生成提升构建速度,允许直接访问Kotlin语言结构。目前,KSP已在多个版本中修复了大量社区反馈的错误。开发者可以开始尝试将应用从KAPT迁移到KSP,体验更快的构建速度和更佳的性能,例如在使用Room时。KSP Playground项目提供了快速入门指南和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cc5183b3a6e06f61eb9628909bbcf3a3.png

作者 / 软件工程师 Ting-Yuan Huang 和 Jiaxiang Chen

Kotlin Symbol Processing (KSP)——用于在 Kotlin 中构建轻量级编译器插件的全新工具现已推出稳定版本!其与 Kotlin 注释处理工具 (KAPT) 的功能相似,但速度提高了 2 倍,同时还可以直接访问 Kotlin 语言结构并支持多个平台目标。

  • Kotlin Symbol Processing (KSP)
    https://github.com/google/ksp

  • KAPT
    https://kotlinlang.org/docs/reference/kapt.html

在过去的几个月里,KSP 共发布了 32 个版本,超过 162 个来自社区反馈的错误问题被修复。如果您正期待着应用该工具,那现在是时候去尝试了。

为何要构建 KSP

在 Android 团队中,我们经常会向开发者提出这样一个问题: 就现阶段而言,开发应用时遇到的最大痛点是什么?其中出现最频繁的问题就是构建速度。多年来,我们一直在稳步优化 Android 构建工具链,现在我们非常高兴能够通过 KSP 来实现这些优化。KSP 是使用 Kotlin 进行注释处理的新一代工具: 它将大幅提高 Kotlin 开发者的构建速度,而且不同于 KAPT,该工具提供了对 Kotlin/Native 和 Kotlin/JS 的支持。

为 Room 添加 KSP 支持不仅能提升编译速度,还能让 Room 更好地理解 Kotlin 代码,比如使用 KAPT 无法实现的泛型的可空性。KSP 还解锁了如生成 Kotlin 代码等全新可能性,这让 Room 在将来会有更棒的 Kotlin 用户体验。

 - Android 软件工程师 Yigit Boyar

为何 KSP 速度更快?

Kotlin 注释处理工具 (KAPT) 通过与 Java 注释处理基础架构相结合,让大部分 Java 语言注释处理器能够在 Kotlin 中开箱即用。为此,KAPT 将 Kotlin 代码编译进 Java 存根,这些存根中保留了 Java 注释处理器关注的信息。但是创建这些存根的成本很高,这意味着编译器必须多次解析程序中的所有符号 (一次生成存根,另一次完成实际编译)。

  • KAPT

    https://kotlinlang.org/docs/reference/kapt.html

KSP 不使用存根生成模型,而是作为 Kotlin 编译器插件运行。其允许注释处理器使用 Kotlin 读取并分析源程序和资源,让您无需依赖 Java 注释处理基础架构。此举大幅提升了构建速度 (对于 Room 的 Kotlin 测试应用而言速度提高了 2 倍),同时也意味着 KSP 可以在非 Android 以及非 JVM 环境 (如 Kotlin/Native 和 Kotlin/JS) 中使用。

  • Kotlin 测试应用

    https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:room/integration-tests/kotlintestapp/

开始使用 KSP

要开始使用 KSP,您可以从 GitHub 下载 KSP Playground 项目,从中您将了解如何将 KSP 用作注释处理器以及使用应用/库:

  • 注释处理器: 将构建器模式作为 KSP 处理器实现的小型 test-processor 库

  • 使用库: 显示如何在实际 Kotlin 项目中使用构建器处理器的 workload 目录

如果您是应用开发者,请查看支持库列表以及快速入门指南,了解如何将模块从 KAPT 转移至 KSP。

  • KSP Playground 项目

    https://github.com/google/ksp/releases/download/1.5.30-1.0.0/artifacts.zip

  • 支持库列表

    https://github.com/google/ksp#supported-libraries

  • 快速入门

    https://github.com/google/ksp/blob/main/docs/quickstart.md

使用带 KSP 的 Moshi 或 Room

如果您在项目中使用 Moshi 或 Room,您只需快速修复模块的构建文件即可体验 KSP。例如,要在 Gradle 模块中使用 KSP 版 Room,您只需将 KAPT 插件替换为 KSP 并替换 KSP 依赖项:

9dbb697d7feb1bb4194e94c39ed6f8d2.png

您可以查看 Room 版本说明以了解更多信息。

  • Room 版本说明

    https://developer.android.google.cn/jetpack/androidx/releases/room#2.3.0-beta02

最后

通过使用 KSP 1.0 版,您可以发现 Kotlin 项目的构建速度得到了提升,因为您将不再使用基于 KAPT 的库。同时,我们也更新了一些特定的 Android 库,您可以立即尝试,体验改进后的强大性能。也欢迎您持续关注官方微信公众账号,随时获取最新资讯。

欢迎您通过下方二维码向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!

37dd4aa65323d131c3a40a5db5378c6c.png


免费中文系列课程下载

系统地学习使用 Kotlin 进行 Android 开发

☟ 即刻了解课程详情 ☟

ef261c7adafda4786a6d3d355de44139.png

cc8ef3575fd1076225e26de36eff3d97.gif

推荐阅读

如页面未加载,请刷新重试

ef9d194b4270209bfa23052e64abe0d8.gif 点击屏末  | 即刻获取快速入门指南


d6e9ea8cd04c0bb62bde07b311251668.png

3e1a608636c0b7a8524f47a84c92ea37.gif

e99960117673c640026c82f5a117178f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值