close

作者 / 軟件工程師 Ting-Yuan Huang 和 Jiaxiang Chen

Kotlin Symbol Processing (KSP)——用於在 Kotlin 中構建輕量級編譯器插件的全新工具現已推出穩定版本!其與 Kotlin 注釋處理工具 (KAPT) 的功能相似,但速度提高了 2 倍,同時還可以直接訪問 Kotlin 語言結構並支持多個平台目標。

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

KAPThttps://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軟件工程師YigitBoyar

為何 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 開發

☟ 即刻了解課程詳情 ☟



推薦閱讀



如頁面未加載,請刷新重試


點擊屏末|閱讀原文|即刻獲取快速入門指南


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()