APT(Annotation Processing Tool)是java的註解處理技術,它對源代碼文件進行檢測找出其中的Annotation,根據註解和註解處理器和相應的apt自動生成代碼。 Annotation處理器在處理Annotation時能夠根據源文件中的Annotation生成額外的源文件和其它的文件(文件具體內容由Annotation處理器的編寫者決定)。java
一、什麼是APT?android
android-apt和annotationProcessor功能是同樣的,都是apt的實現,前者比較早,後者是google官方開發的內置在gradle裏的aptapp
APT的處理要素
註解處理器(AbstractProcess)+ 代碼處理(javaPoet)+ 處理器註冊(AutoService)+ apt 框架
使用APT來處理annotation的流程
1. 定義註解(如@automain)
2. 定義註解處理器,自定義須要生成代碼
3. 使用處理器
4. APT自動完成生成新的java文件。maven
二、annotationProcessor和android-apt
annotationProcessor是APT工具中的一種,是google開發的內置框架,不須要引入,能夠直接在build.gradle文件中使用,以下工具
1 dependencies { 2 annotationProcessor project(':xx') 3 annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 4 }
android-apt是由一位開發者本身開發的apt框架,隨着Android Gradle 插件 2.2 版本的發佈,Android Gradle 插件提供了名爲 annotationProcessor 的功能來徹底代替 android-apt ,自此android-apt 做者在官網發表聲明最新的Android Gradle插件如今已經支持annotationProcessor,並警告和或阻止說不在更新android-apt ,並推薦你們使用 Android 官方插件annotationProcessor。gradle
android-apt的使用ui
添加android-apt到Project下的build.gradle中
//配置在Project下的build.gradle中google
1 buildscript { 2 repositories { 3 mavenCentral() 4 } 5 6 dependencies { 7 //替換成最新的 gradle版本 8 classpath 'com.android.tools.build:gradle:1.3.0' 9 //替換成最新android-apt版本 10 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 11 } 12 13 }
在Module中build.gradle的配置spa
一般在使用的時候,使用apt聲明註解用到的庫文件。項目依賴可能分爲多個部分。例如Dagger有兩個組件Dagger-compiler和dagger。dagger-commpiler僅用於編譯時,運行時必需使用dagger。
//配置到Module下的build.gradle中
1 apply plugin: 'com.android.application' 2 apply plugin: 'com.neenbedankt.android-apt' 3 4 dependencies { 5 apt 'com.squareup.dagger:dagger-compiler:1.1.0' 6 compile 'com.squareup.dagger:dagger:1.1.0' 7 }
基本使用就是上面這兩點,想用annotationProcessor替代android-apt。刪除和替換相應部分便可。