Android APT(編譯時(shí)生成代碼)

摘要

APT(Annotation Processing Tool)是一種處理注解的工具,它對(duì)源代碼文件進(jìn)行檢測(cè)找出其中的Annotation,使用Annotation進(jìn)行額外的處理。 Annotation處理器在處理Annotation時(shí)可以根據(jù)源文件中的Annotation生成額外的源文件和其它的文件(文件具體內(nèi)容由Annotation處理器的編寫(xiě)者決定),APT還會(huì)編譯生成的源文件和原來(lái)的源文件,將它們一起生成class文件。

現(xiàn)在很多第三方庫(kù)在使用APT技術(shù),如DBflow、ButterKnife等。APT在編譯時(shí)根據(jù)Annotation生成了相關(guān)的代碼,可以給開(kāi)發(fā)帶來(lái)了很大的便利。

Annoation

如果對(duì)注解不熟悉,請(qǐng)看java基礎(chǔ)

創(chuàng)建APTDemo Project

步驟省略了

創(chuàng)建 Annotation Module

新建一個(gè)名稱(chēng)為annotation的Java Library,主要放置一些項(xiàng)目中需要使用到的Annotation。這里簡(jiǎn)單自定義了一個(gè)注解:

圖1

配置build.gradle,主要是規(guī)定jdk版本

圖2

創(chuàng)建compiler Module

新建compiler的Java Library,這個(gè)module用來(lái)寫(xiě)生成代碼相關(guān)邏輯。這是核心module。

配置build.gradle

圖3

1.定義編譯的jdk版本為1.7,這個(gè)很重要,不寫(xiě)會(huì)報(bào)錯(cuò)。

2.AutoService 主要的作用是注解 processor 類(lèi),并對(duì)其生成 META-INF 的配置信息。

3.JavaPoet 這個(gè)庫(kù)的主要作用就是幫助我們通過(guò)類(lèi)調(diào)用的形式來(lái)生成代碼。

4.依賴(lài)上面創(chuàng)建的annotation Module。

定義Processor類(lèi) 生成代碼相關(guān)的邏輯就放在這里

圖4

配置project build.gradle

dependencies{classpath'com.neenbedankt.gradle.plugins:android-apt:1.8'}

配置app build.gradle

apply plugin:'com.android.application'

apply plugin:'com.neenbedankt.android-apt'

//...dependencies{//..compileproject(':annotation')? ? aptproject(':compiler')}

編譯使用

在隨意一個(gè)類(lèi)添加@Test注解

圖5
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容