Kotlin Symbol Processing (KSP) Alpha 版現已發佈

做者 / 軟件工程師 Ting-Yuan Huang 和產品經理 David Winerhtml

咱們很高興地向您介紹 Kotlin Symbol Processing (KSP) 的 Alpha 版,幫助您在 Kotlin 中構建輕量級編譯器插件的全新工具。KSP 提供的功能相似於 KAPT,但速度提升了 2 倍,能夠直接訪問 Kotlin 編譯器功能,而且開發時充分考慮到了多平臺兼容性。android

KSP 兼容 Kotlin 1.4.30 及更高版本。您能夠在 KSP GitHub repo 中查看開放源代碼和文檔。git

爲什麼推出 KSP?

Kotlin 開發者向咱們反饋最多的需求就是提升構建速度。許多開發者天天都要迭代並部署數十次應用,因此構建速度緩慢會使開發者不得不將大量時間耗費在等待上。編譯 Kotlin 代碼的最大挑戰之一是 Kotlin 沒有原生註釋處理系統。諸如 Room 等註釋處理器在 Android 平臺無處不在,它們依賴於經過 Kotlin 註釋處理工具 (KAPT) 實現的 Java 註釋處理兼容性。可是,KAPT 的運行速度可能會很慢,由於它須要生成中間的 Java 存根,而後 Java 註釋處理系統才能對其進行提取。github

在設計 KSP 時,咱們考慮了若是從頭開始構建,Kotlin 的註釋處理應是怎樣的形式。KSP 提供了一個功能強大且簡單的 API,它能夠直接解析 Kotlin 代碼,所以大大下降了 KAPT 生成存根所帶來的構建速度負擔。實際上,利用 Room 庫執行的初始基準測試代表,KSP 相比 KAPT 速度提升了 2 倍左右。工具

開始使用

要查看 KSP 的實際運行狀況,請從 GitHub 下載 KSP Playground 項目。您能夠從中得到:測試

  • : 將構建器模式做爲 KSP 處理器實現的小型 test-processor 庫
  • 使用項目: 顯示如何在實際 Kotlin 項目中使用構建器處理器的 workload 目錄

實現構建器的全部邏輯所有位於 test-processor 中 - 對於使用者 (workload) 來講,使用 KAPT 和使用 KSP 的惟一區別是更改了兩行構建文件:ui

這是 KSP 的目標: 大多數 Android 應用開發者無需擔憂其內部結構;除了這一行更改之外,支持 KSP 的庫相似於普通的註釋處理器,而速度卻提升了 2 倍。也就是說,在同一模塊中使用 KAPT 和 KSP 最初可能會下降您的構建速度,所以在 Alpha 版期間,最好在單獨的模塊中使用 KSP 和 KAPT。google

隨着愈來愈多的註釋處理器採用 KSP,咱們但願您的大多數模塊都可以使用 KSP 來直接替代 KAPT。如今,您能夠在 表格 中查看哪些註釋處理器提供了 KSP 支持。若是表中缺乏已支持或正在實現 KSP 支持的庫,請將您的寶貴建議反饋給咱們!spa

若是您是當前某個使用註釋處理的庫做者,能夠在 快速入門README 指南中找到有關如何使您的庫與 KSP 兼容的更多信息。開放源代碼

對於庫做者而言,KSP 目前所處的 Alpha 版階段是對其深刻研究的良好契機,歡迎您在 KSP 問題跟蹤器 中向咱們提供有關 API 的反饋。此外,咱們會在谷歌開發者公衆號和 Kotlin Slack 的 #ksp 頻道上按期發佈版本動態。自去年 6 月的開發者預覽版發佈以來,咱們已經解決了超過 100 項錯誤和問題,其中數十項都來自優秀的 Kotlin 庫開發者社區的反饋。但願您能夠繼續將問題經過 KSP 問題跟蹤器 反饋給咱們,或在文章下方進行留言。

Java 是 Oracle 和/或其附屬公司的註冊商標。

相關文章
相關標籤/搜索