乐趣区

关于android:Kotlin-Symbol-Processing-KSP-Alpha-版现已发布

作者 / 软件工程师 Ting-Yuan Huang 和产品经理 David Winer

咱们很快乐地向您介绍 Kotlin Symbol Processing (KSP) 的 Alpha 版,帮忙您在 Kotlin 中构建轻量级编译器插件的全新工具。KSP 提供的性能相似于 KAPT,但速度进步了 2 倍,能够间接拜访 Kotlin 编译器性能,并且开发时充分考虑到了多平台兼容性。

KSP 兼容 Kotlin 1.4.30 及更高版本。您能够在 KSP GitHub repo 中查看凋谢源代码和文档。

为何推出 KSP?

Kotlin 开发者向咱们反馈最多的需要就是进步构建速度。许多开发者每天都要迭代并部署数十次利用,所以构建速度迟缓会使开发者不得不将大量工夫消耗在期待上。编译 Kotlin 代码的最大挑战之一是 Kotlin 没有原生正文解决零碎。诸如 Room 等正文处理器在 Android 平台无处不在,它们依赖于通过 Kotlin 正文解决工具 (KAPT) 实现的 Java 正文解决兼容性。然而,KAPT 的运行速度可能会很慢,因为它须要生成两头的 Java 存根,而后 Java 正文解决零碎能力对其进行提取。

在设计 KSP 时,咱们思考了如果从头开始构建,Kotlin 的正文解决应是怎么的模式。KSP 提供了一个功能强大且简略的 API,它能够间接解析 Kotlin 代码,因而大大降低了 KAPT 生成存根所带来的构建速度累赘。实际上,利用 Room 库执行的初始基准测试表明,KSP 相比 KAPT 速度进步了 2 倍左右。

开始应用

要查看 KSP 的理论运行状况,请从 GitHub 下载 KSP Playground 我的项目。您能够从中取得:

  • : 将构建器模式作为 KSP 处理器实现的小型 test-processor 库
  • 应用我的项目 : 显示如何在理论 Kotlin 我的项目中应用构建器处理器的 workload 目录

实现构建器的所有逻辑全副位于 test-processor 中 – 对于使用者 (workload) 来说,应用 KAPT 和应用 KSP 的惟一区别是更改了两行构建文件:

这是 KSP 的指标: 大多数 Android 利用开发者无需放心其内部结构;除了这一行更改以外,反对 KSP 的库相似于一般的正文处理器,而速度却进步了 2 倍。也就是说,在同一模块中应用 KAPT 和 KSP 最后可能会升高您的构建速度,因而在 Alpha 版期间,最好在独自的模块中应用 KSP 和 KAPT。

随着越来越多的正文处理器采纳 KSP,咱们心愿您的大多数模块都可能应用 KSP 来间接代替 KAPT。当初,您能够在 表格 中查看哪些正文处理器提供了 KSP 反对。如果表中短少已反对或正在实现 KSP 反对的库,请将您的贵重倡议反馈给咱们!

如果您是以后某个应用正文解决的库作者,能够在 疾速入门 和 README 指南中找到无关如何使您的库与 KSP 兼容的更多信息。

对于库作者而言,KSP 目前所处的 Alpha 版阶段是对其深入研究的良好契机,欢迎您在 KSP 问题跟踪器 中向咱们提供无关 API 的反馈。此外,咱们会在谷歌开发者公众号和 Kotlin Slack 的 #ksp 频道上定期公布版本动静。自去年 6 月的开发者预览版公布以来,咱们曾经解决了超过 100 项谬误和问题,其中数十项都来自优良的 Kotlin 库开发者社区的反馈。心愿您能够持续将问题通过 KSP 问题跟踪器 反馈给咱们,或在文章下方进行留言。

Java 是 Oracle 和 / 或其从属公司的注册商标。

退出移动版