android註解處理技術APT

  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。刪除和替換相應部分便可。

相關文章
相關標籤/搜索