天天看点

android-apt和annotationProcessor的使用以及互换

Android Gradle插件2.2版本发布后,官方(Android)提供了annotationProcessor来代替android-apt。同时android-apt作者宣布不再维护,目前android-apt还能正常运行,如果你没支持 jack 编译方式的话,可以继续使用 android-apt。

1、android-apt

1.1、概述

APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。

1.2、 android-apt的使用

1.2.1、在Project下的build.gradle中添加android-apt配置
buildscript {
 dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}
           
1.2.2、 在Module中build.gradle中添加android-apt配置
apply plugin: 'com.neenbedankt.android-apt'
// 或
// apply plugin: 'android-apt'
           

使用apt

dependencies {
     compile 'com.google.dagger:dagger:2.0'
     apt 'com.google.dagger:dagger-compiler:2.0'
 }
           

Moudle中完整的配置

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

dependencies {
     compile 'com.google.dagger:dagger:2.0'
     apt 'com.google.dagger:dagger-compiler:2.0'
 }
           

《android-apt 配置结束》

2、annotationProcessor

2.1、概述

Android Gradle插件2.2版本发布后,Android 官方提供了annotationProcessor来代替android-apt,annotationProcessor支持 javac 和 jack 编译方式,而android-apt只支持 javac 编译方式。

2.2、annotationProcessor的使用

1、不需要在Project的build.gradle中配置

dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3' // 2.2+
    }
}
           

2、直接在Module中使用

dependencies {
     compile 'com.google.dagger:dagger:2.0'
     annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
 }
           

注:annotationPorcessor比起android-apt使用要简单方便些,javac 和 jack 编译方式,而android-apt只支持 javac 方式。

《annotationProcessor配置结束》

3、android-apt 转 annotationProcessor

3.1、去掉Project中build.gradle中的android-apt配置

buildscript {
 dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        // classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}
           

3.2、去掉Module中build.gradle中的android-apt的配置(必须)

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

dependencies {
     compile 'com.google.dagger:dagger:2.0'
    // apt 'com.google.dagger:dagger-compiler:2.0'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
 }
           

4、annotationProcessor 转 android-apt

这就比较简单了,就是第3小节的逆转。