APT(Annotation Processing Tool)是java的注解處理技術,它對源代碼文件進行檢測找出其中的Annotation,根據注解和注解處理器和相應的apt自動生成代碼。 Annotation處理器在處理Annotation時可以根據源文件中的Annotation生成額外的源文件和其它的文件(文件具體內容由Annotation處理器的編寫者決定)。
1、什么是APT?
android-apt和annotationProcessor功能是一樣的,都是apt的實現,前者比較早,后者是google官方開發的內置在gradle里的apt
APT的處理要素
注解處理器(AbstractProcess)+ 代碼處理(javaPoet)+ 處理器注冊(AutoService)+ apt
使用APT來處理annotation的流程
1. 定義注解(如@automain)
2. 定義注解處理器,自定義需要生成代碼
3. 使用處理器
4. APT自動完成生成新的java文件。
2、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。
android-apt的使用
添加android-apt到Project下的build.gradle中
//配置在Project下的build.gradle中
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的配置
通常在使用的時候,使用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。刪除和替換相應部分即可。