Kotlin Symbol Processing (KSP) Alpha 版現(xiàn)已發(fā)布

image

作者 / 軟件工程師 Ting-Yuan Huang 和產(chǎn)品經(jīng)理 David Winer

我們很高興地向您介紹 Kotlin Symbol Processing (KSP) 的 Alpha 版,幫助您在 Kotlin 中構(gòu)建輕量級編譯器插件的全新工具诚啃。KSP 提供的功能類似于 KAPT淮摔,但速度提高了 2 倍,可以直接訪問 Kotlin 編譯器功能始赎,并且開發(fā)時充分考慮到了多平臺兼容性和橙。

KSP 兼容 Kotlin 1.4.30 及更高版本。您可以在 KSP GitHub repo 中查看開放源代碼和文檔极阅。

為何推出 KSP胃碾?

Kotlin 開發(fā)者向我們反饋最多的需求就是提高構(gòu)建速度涨享。許多開發(fā)者每天都要迭代并部署數(shù)十次應(yīng)用筋搏,所以構(gòu)建速度緩慢會使開發(fā)者不得不將大量時間耗費在等待上。編譯 Kotlin 代碼的最大挑戰(zhàn)之一是 Kotlin 沒有原生注釋處理系統(tǒng)厕隧。諸如 Room 等注釋處理器在 Android 平臺無處不在奔脐,它們依賴于通過 Kotlin 注釋處理工具 (KAPT) 實現(xiàn)的 Java 注釋處理兼容性。但是吁讨,KAPT 的運行速度可能會很慢髓迎,因為它需要生成中間的 Java 存根,然后 Java 注釋處理系統(tǒng)才能對其進行提取建丧。

在設(shè)計 KSP 時排龄,我們考慮了如果從頭開始構(gòu)建,Kotlin 的注釋處理應(yīng)是怎樣的形式翎朱。KSP 提供了一個功能強大且簡單的 API橄维,它可以直接解析 Kotlin 代碼,因此大大降低了 KAPT 生成存根所帶來的構(gòu)建速度負(fù)擔(dān)拴曲。實際上争舞,利用 Room 庫執(zhí)行的初始基準(zhǔn)測試表明,KSP 相比 KAPT 速度提高了 2 倍左右澈灼。

開始使用

要查看 KSP 的實際運行情況竞川,請從 GitHub 下載 KSP Playground 項目。您可以從中獲得:

  • : 將構(gòu)建器模式作為 KSP 處理器實現(xiàn)的小型 test-processor 庫
  • 使用項目: 顯示如何在實際 Kotlin 項目中使用構(gòu)建器處理器的 workload 目錄

實現(xiàn)構(gòu)建器的所有邏輯全部位于 test-processor 中 - 對于使用者 (workload) 來說叁熔,使用 KAPT 和使用 KSP 的唯一區(qū)別是更改了兩行構(gòu)建文件:

image

這是 KSP 的目標(biāo): 大多數(shù) Android 應(yīng)用開發(fā)者無需擔(dān)心其內(nèi)部結(jié)構(gòu)委乌;除了這一行更改以外,支持 KSP 的庫類似于普通的注釋處理器荣回,而速度卻提高了 2 倍福澡。也就是說,在同一模塊中使用 KAPT 和 KSP 最初可能會降低您的構(gòu)建速度驹马,因此在 Alpha 版期間革砸,最好在單獨的模塊中使用 KSP 和 KAPT除秀。

隨著越來越多的注釋處理器采用 KSP,我們希望您的大多數(shù)模塊都能夠使用 KSP 來直接替代 KAPT∷憷現(xiàn)在册踩,您可以在 表格 中查看哪些注釋處理器提供了 KSP 支持。如果表中缺少已支持或正在實現(xiàn) KSP 支持的庫效拭,請將您的寶貴建議反饋給我們暂吉!

如果您是當(dāng)前某個使用注釋處理的庫作者,可以在 快速入門README 指南中找到有關(guān)如何使您的庫與 KSP 兼容的更多信息缎患。

對于庫作者而言慕的,KSP 目前所處的 Alpha 版階段是對其深入研究的良好契機,歡迎您在 KSP 問題跟蹤器 中向我們提供有關(guān) API 的反饋挤渔。此外肮街,我們會在谷歌開發(fā)者公眾號和 Kotlin Slack 的 #ksp 頻道上定期發(fā)布版本動態(tài)。自去年 6 月的開發(fā)者預(yù)覽版發(fā)布以來判导,我們已經(jīng)解決了超過 100 項錯誤和問題嫉父,其中數(shù)十項都來自優(yōu)秀的 Kotlin 庫開發(fā)者社區(qū)的反饋。希望您可以繼續(xù)將問題通過 KSP 問題跟蹤器 反饋給我們眼刃,或在文章下方進行留言绕辖。

Java 是 Oracle 和/或其附屬公司的注冊商標(biāo)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末擂红,一起剝皮案震驚了整個濱河市仪际,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昵骤,老刑警劉巖树碱,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荆虱,死亡現(xiàn)場離奇詭異捆姜,居然都是意外死亡,警方通過查閱死者的電腦和手機箕憾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門伴栓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伦连,“玉大人,你說我怎么就攤上這事钳垮』蟠荆” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵饺窿,是天一觀的道長歧焦。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么绢馍? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任向瓷,我火速辦了婚禮,結(jié)果婚禮上舰涌,老公的妹妹穿的比我還像新娘猖任。我一直安慰自己,他們只是感情好瓷耙,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布朱躺。 她就那樣靜靜地躺著,像睡著了一般搁痛。 火紅的嫁衣襯著肌膚如雪长搀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天鸡典,我揣著相機與錄音源请,去河邊找鬼。 笑死轿钠,一個胖子當(dāng)著我的面吹牛巢钓,可吹牛的內(nèi)容都是我干的病苗。 我是一名探鬼主播疗垛,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼硫朦!你這毒婦竟也來了贷腕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咬展,失蹤者是張志新(化名)和其女友劉穎泽裳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體破婆,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡涮总,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了祷舀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瀑梗。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖裳扯,靈堂內(nèi)的尸體忽然破棺而出抛丽,到底是詐尸還是另有隱情,我是刑警寧澤饰豺,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布亿鲜,位于F島的核電站,受9級特大地震影響冤吨,放射性物質(zhì)發(fā)生泄漏蒿柳。R本人自食惡果不足惜饶套,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垒探。 院中可真熱鬧凤跑,春花似錦、人聲如沸叛复。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褐奥。三九已至咖耘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撬码,已是汗流浹背儿倒。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呜笑,地道東北人夫否。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像叫胁,于是被迫代替她去往敵國和親凰慈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容