Android 中使用 AOP 织入代码
在Android平台,常用的是 hujiang 的: AspectJX
一个基于 AspectJ 并在此基础上扩展出来可应用于 Android 开发平台的 AOP 框架,可作用于 Java 源码,class 文件及 jar 包,同时支持 kotlin 的应用。
原理:
通过Gradle Transform,在 class 文件生成后至 dex 文件生成前,遍历并匹配所有符合 AspectJ 文件中声明的切点,然后将事先声明好的代码在切点前后织入。
整个过程发生在编译期,是一种静态织入方式,所以会增加一定的编译时长,但几乎不会影响程序的运行时效率。
一. 插件引用
- 在项目根目录的
build.gradle
里依赖 AspectJX
dependencies {
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.8'
}
- 在需要支持 AspectJ 的 module 的
build.gradle
里应用插件
apply plugin: 'android-aspectjx'