首先
两个最常用的项目
Annotation Processor :butterknife
Transform API:Arouter,CC-register(我是看着这个项目学的)
其实Transform 只是一个gradle 的api而已,允许你在编译过程中做一定的处理,配合 ASM/Javasist 才能够实现 Arouter/CC-register 那样的效果
使用流程就不说了,一搜一大把
场景 :
Transform : 操作字节码的操作,比如 路由,埋点,读取/编辑 打包好的 library 中的class文件,这点是 Annotation Processor做不到的
Annotation Processor : 用的更多的事编译期 生成辅助类 吧,源码级操作,无法对现有 打包好的 library(jar/aar)做处理
替换肯定是不能了,看场景吧,如果 字节码级别的,肯定没法替换
其实 Annotation Processor 在某些场景下 可以用 idea插件来替换,如果刷新频率不高的话,也可以用 gradle 插件,比如 =.= 原本想说 greendao 的,但是突然想起来 还没有看过 他的插件的源码=.=有可能是 Annotation 来完成的=.=
Transform API 如果只是监听特定方法,比如:埋点,方法耗时计算,可以用 AOP(Aspectj) 来替换
突然感觉好难啊,,源码就够让人头疼了的,还要知道这些,又得买六个核桃了=.=