编写一个编译时注入框架
May 28, 2017
最近在折腾AnnotationProcessor,想着通过学习黄油刀来编写一个自己android编译时注入框架。
这个项目的地址是我的自己编写的一个AnnotationProcessor库
https://github.com/keep2iron/Fast4Android-InjectView
如果觉得这篇文章有点用,请记得给个star哟
学习的过程中发现了一些需要知道的api,在了解了这些api的情况下,那么我相信你可以对这个东西的掌握会更加的熟练和精通。
下面是我用到相关api,请在了解这些api的基础上阅读代码,这样可以事半功倍哟。
javax.annotation.processing
这个包用来声明注释处理器并允许注释处理器与注释处理工具环境通信的工具。
类名 | 说明 |
---|---|
interface ExecutableElement | 表示某个类或接口的方法、构造方法或初始化程序(静态或实例),包括注释类型元素. |
interface PackageElement | 表示一个包程序元素. |
interface TypeElement | 表示一个类或接口程序元素. |
interface TypeParameterElement | 表示一般类、接口、方法或构造方法元素的形式类型参数. |
interface VariableElement | 表示一个字段、enum 常量、方法或构造方法参数、局部变量或异常参数. |
其中还运用到了javapoet的相关api,利用这个库的api进行生成java代码。
使用了@AutoService这个是google的一个类库Auto用来进行生成META-INF信息,这样可以不用我们自己手动去配置了
编译时顺序图点击下图选中的gradle脚本即可生成文件
在代码中调用bind方法的顺序图
生成文件执行的顺序图