Android开发中,注解平时我们用的比较多,也许我们会比较好奇,注解的背后是如何工作的,这篇文章帮大家一步步创建一个简单的注解处理器。
简介
APT(Annotation Processing Tool)即注解处理器,在编译的时候可以处理注解然后搞一些事情,也可以在编译时生成一些文件之类的。ButterKnife和EventBus都使用了APT技术,如果不会APT技术就很难看懂这两个框架的源码。
作用
使用APT可以在编译时来处理编译时注解,生成额外的Java文件,有如下效果:
- 可以达到减少重复代码手工编写的效果。
如ButterKnife,我们可以直接使用注解来减少findviewbyid这些代码,只需要通过注解表示是哪个id就够了。
- 功能封装。将主要的功能逻辑封装起来,只保留注解调用。
- 相对于使用Java反射来处理运行时注解,使用APT有着更加良好的性能。
APT与AOP简介
- APT是在编译开始时就介入的,用来处理编译时注解。
- AOP(Aspect Oridnted Programming)是在编译完成后生成dex文件之前,通过直接修改.class文件的方式,来对代码进行修改或添加逻辑。常用在在代码监控,代码修改,代码分析这些场景。
APT基本使用
基本使用流程主要包括如下几个步骤:
- 创建自定义注解
- 创建注解处理器,处理Java文件生成逻辑
- 项目中调用
APT 工程
APT 工程创建
一般情况下,APT 大致的的一个实现过程: