使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间
Posted 谷歌开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间相关的知识,希望对你有一定的参考价值。
作者 / 软件工程师 Ting-Yuan Huang 和 Jiaxiang Chen
Kotlin Symbol Processing (KSP)——用于在 Kotlin 中构建轻量级编译器插件的全新工具现已推出稳定版本!其与 Kotlin 注释处理工具 (KAPT) 的功能相似,但速度提高了 2 倍,同时还可以直接访问 Kotlin 语言结构并支持多个平台目标。
Kotlin Symbol Processing (KSP)
https://github.com/google/kspKAPT
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 依赖项:
您可以查看 Room 版本说明以了解更多信息。
Room 版本说明
https://developer.android.google.cn/jetpack/androidx/releases/room#2.3.0-beta02
最后
通过使用 KSP 1.0 版,您可以发现 Kotlin 项目的构建速度得到了提升,因为您将不再使用基于 KAPT 的库。同时,我们也更新了一些特定的 Android 库,您可以立即尝试,体验改进后的强大性能。也欢迎您持续关注官方微信公众账号,随时获取最新资讯。
欢迎您通过下方二维码向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!
免费中文系列课程下载
系统地学习使用 Kotlin 进行 Android 开发
☟ 即刻了解课程详情 ☟
推荐阅读
如页面未加载,请刷新重试
点击屏末 | 阅读原文 | 即刻获取快速入门指南
以上是关于使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间的主要内容,如果未能解决你的问题,请参考以下文章