使用 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


<<:  15. 做对事是不够的,你还必须要有影响力。

>>:  全天下最愚蠢的事就是,每天不断地重复做相同的事,却期待有一天会出现不同的结果。

[今晚我想来点 Express 佐 MVC 分层架构] DAY 29 - node.js 与线程 (下)

上一篇提到有工具可以做到丛集 (Cluster) 的功能,以使用多线程,今天就要来简单介绍一下这个强...

Day 13 运算宝石:【Lab】EC2储存资源 EBS Volume 建立与使用 (下)

今天,我们继续【Lab】EC2储存资源 EBS Volume 建立与使用下半部分。 连进 EC2 ...

[Day15] Wasm 简介跟 Yew 环境介绍 && 配置

好 ok 终於进入专案篇了,希望我的文多一点人看,这样也比较有动力写 虽然我写得很烂 那事不宜迟,让...

[Day14] - Django Admin 介绍

Django 框架一个强大的特色,就是他自备後台管理系统(拍手)! 虽然说开发者习惯惯用程序去修改和...

Day 17 | 今天是Coroutiones的 Dispatcher

读到Dispatcher有种越来越难的感觉QQ 这些太高深的东西对於小萌新来说真的好杀热情阿 估计今...