Kotlin Symbol Processing (KSP) Alpha 版现已发布

image

作者 / 软件工程师 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 的唯一区别是更改了两行构建文件:

image

这是 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 和/或其附属公司的注册商标。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容