iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
Mobile Development

如何使用 Kotlin Annotation Processor 做出自己的 Custom Data Parser Library系列 第 26

使用 KSP 來改善 annotation processor?

就在我們用 KAPT 開發完這個 RSS library 後幾個月 KSP 就發佈了!

KSP 的全名是 Kotlin Symbol Processing ,是除了 KAPT 另一個開發 annotation processor 的新選擇,官方宣稱它的速度比 KAPT 快上兩倍!因為在 KAPT build 的階段,會先生成 java stub ,而 KSP 改善了這個流程,還有全面支援跨平台的功能。據說現在Moshi 和 Room 都改用 KSP 來 build code ,build time 的部分也快上了不少。如果要使用 KSP 第一步要先把 project 改成使用 KTS 會比較方便,因為官方的範例程式碼也都全面使用 KTS ,不過使用 KSP 產生出來的 parser 的使用者,不一定要使用 KTS 就是了,也可以用 gradle script 的寫法去宣告。

Migrate Gradle Scripts to KTS

首先,我們先準備好哪些 gradle 語法要轉成 KTS ,KTS 其實就是用 Kotlin 來寫 build script ,我自己使用後覺得其實就只是語法改變了而已,舉幾個例子比較好了解。

原本的 flavor :

// Gradle
buildTypes
  release {
    ...
  }

會變成:

// Kotlin
buildTypes
	getByName("release") {
    ...
  }

還有 plugin 的 apply 方式從:

// Gradle
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

變成:

plugins {
		id("kotlin-android")
    id("kotlin-kapt")
}

如果想要知道更多怎麼樣去改 gradle script 成 KTS ,可以參考這裡。我覺得更快的方式是直接去看官方的範例程式碼,比方說 google 的 iosched 裡面就完整地展現了 android 內 KTS 的寫法,像是 buildSrc 和一些整理 version 的方式都很值得參考,如果不知道某個原本的 groovy 語法要怎麼改成 KTS ,直接到 iosched 裡面搜尋該關鍵字,應該 80% 都可以找得到用法,如果你是一開始就打算用 KSP 的話,那我會建議直接用 KTS 寫。

參考資料:

Announcing Kotlin Symbol Processing (KSP) Alpha

Accelerated Kotlin build times with Kotlin Symbol Processing 1.0

GitHub - google/iosched: The Google I/O Android App


上一篇
Reader 的 MockK 測試
下一篇
KSP Setup
系列文
如何使用 Kotlin Annotation Processor 做出自己的 Custom Data Parser Library30

尚未有邦友留言

立即登入留言