摘要
APT(Annotation Processing Tool)是一種處理注解的工具,它對(duì)源代碼文件進(jìn)行檢測(cè)找出其中的Annotation奥邮,使用Annotation進(jìn)行額外的處理谤绳。 Annotation處理器在處理Annotation時(shí)可以根據(jù)源文件中的Annotation生成額外的源文件和其它的文件(文件具體內(nèi)容由Annotation處理器的編寫者決定),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è)名稱為annotation的Java Library,主要放置一些項(xiàng)目中需要使用到的Annotation薪丁。這里簡(jiǎn)單自定義了一個(gè)注解:
配置build.gradle,主要是規(guī)定jdk版本
創(chuàng)建compiler Module
新建compiler的Java Library馅精,這個(gè)module用來(lái)寫生成代碼相關(guān)邏輯严嗜。這是核心module。
配置build.gradle
1.定義編譯的jdk版本為1.7洲敢,這個(gè)很重要漫玄,不寫會(huì)報(bào)錯(cuò)。
2.AutoService 主要的作用是注解 processor 類压彭,并對(duì)其生成 META-INF 的配置信息睦优。
3.JavaPoet 這個(gè)庫(kù)的主要作用就是幫助我們通過(guò)類調(diào)用的形式來(lái)生成代碼。
4.依賴上面創(chuàng)建的annotation Module壮不。
定義Processor類 生成代碼相關(guān)的邏輯就放在這里
配置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è)類添加@Test注解