iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0

運作方式

經過前面這麼漫長的鋪陳,我們終於要來講 annotation processor 了!

image

這張圖是 library 的 annotation processor 運作方式,annotation processor 使用了在前幾篇文章中定義好的 annotation ,透過這些 annotation ,我們可以知道使用者要爬的資料有哪些和他們要被放在什麼樣的資料結構裡,所以我們才會定義了 @RssTag@RssAttribute@RssValue@RssRawData 。接著我們透過 code generator 去產生使用者克制過後的 parser ,這些 parser 的實作方式,可以是我們之前提到的 DOM parser 或是 XmlPullParser 。如果是 Android 平台上使用,可以用 XmlPullParser 產出 Android 專用的客製化 parser 。如果是想要讓任何可以使用 Kotlin 的平台使用,可以用 DOM parser 。Annotation processor 的實作方式也可以用 KAPT 或者 KSP ,KAPT 全名為 Kotlin Annotation Processor Tool 是 Kotlin 用來處理 annotation 的工具,另外一個 KSP ,全名為 Kotiln Symbol Processor ,他的作用跟 KAPT 差不多,但效能據說比 KAPT 好上一倍。Code generator 的部分,我們採用 Kotlin Poet ,它有一系列好用的 API ,讓我們用 Kotlin 程式碼去產生 Kotlin 的程式碼。?

Project Modules

首先我們先切分好 module,以下是專案內有的 module:

  1. :annotation module:只放 library 定義的 annotation。
  2. :processor module:使用 annotation module ,也放一些兩個平台 processor 會用到的共用的 generator 、 constant 和 util 類別。
  3. :android module:純 android 平台的 processor 程式碼,也有含該平台的測試程式碼。
  4. :kotlin module:Kotlin 平台的 processor 程式碼,也有含該平台的測試程式碼。
  5. :testCommon module:專門放一些測試會用得到共用程式碼。
  6. :processorTest module:進行一些客製化格式的測試,主要都是針對自定義 processor 的測試。

上一篇
Annotation 的設計與想法
下一篇
Annotation Processor Setup
系列文
如何使用 Kotlin Annotation Processor 做出自己的 Custom Data Parser Library30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言