APT、annotationProcessor、android-apt、Provided、自定义注解

1、什么是APT?
APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注释自动生成代码。Annotation处理器在出来Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。
2、annotationProcessor
annotationProcessor是APT工具中的一种,他是google开发的内置框架,不需要引入,可以直接在build.gradle文件中使用
3、android-apt
android-apt是由一位开发者自己开发的apt框架,源代码托管在这里,随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt ,自此android-apt 作者在官网发表声明最新的Android Gradle插件现在已经支持annotationProcessor,并警告和或阻止android-apt ,并推荐大家使用 Android 官方插件annotationProcessor。
4、Provided
Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。
Provided是间接的得到了依赖的Library,运行的时候必须要保证这个Library的存在,否则就会崩溃,起到了避免依赖重复资源的作用。
5、annotationProcessor 和android-apt区别
annotationProcessor同时支持 javac 和 jack 编译方式,而android-apt只支持 javac 方式。同时android-apt作者宣布不在维护,当然目前android-apt仍然可以正常运行,如果你没有想支持 jack 编译方式的话,可以继续使用 android-apt。
6,annotationProcessor 和Provided区别
annotationProcessor
只在编译的时候执行依赖的库,但是库最终不打包到apk中,
编译库中的代码没有直接使用的意义,也没有提供开放的api调用,最终的目的是得到编译库中生成的文件,供我们调用。
Provided
Provided 虽然也是编译时执行,最终不会打包到apk中,但是跟apt/annotationProcessor有着根本的不同。
7、Compile
compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。
8、Test compile
Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。
9、Debug compile
Debug compile 仅仅针对debug模式的编译和最终的debug apk打包。
10、Release compile
Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。
11、APK
只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错

1,你必须知道的APT、annotationProcessor、android-apt、Provided、自定义注解
2,Android注解使用之注解编译android-apt如何切换到annotationProcessor
3,Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架
4,Android APT及基于APT的简单应用
5,AndroidButterKnifeProcessor 工作流程分析

你可能感兴趣的:(APT、annotationProcessor、android-apt、Provided、自定义注解)