知乎 Android 客户端组件化实践
安卓AOP三剑客:APT,AspectJ,Javassist
AOP:APT,AspectJ,Javassist/Asm
aop工具:ASM、APT、AspectJ、Javassist
一、组件化思想:
1、对架构分层,使用注解,定义接口,和对接口的实现,进行解耦
2、Gradle Transform 扫描项目所有代码、包括二进制
3、使用aop工具在编译期间(扫描类注解),在class生成dex之前,找到带有注解的class,进行生成对应的类class。
**二、AOP工具:**ASM、APT、AspectJ、Javassist
执行阶段:
APT在compile任务前,修改java文件;
AspectJ在java --> class阶段,修改java代码;
Javassist和asm,都是修改的.class
发生的具体函数
APT Processor -> process{…}
AspectJ javaCompile.doLast{ … }
Javassist和asm MyTransform -> transform{ … }