Android AOP 三剑客:APT AspectJ Javassist

概述

AOP三剑客各自作用的位置
这里写图片描述

APT 注解处理器(Java5 中的Annotation Processing Tool),注解现在已经比较常见,使用广泛,可以为我们提供准确的切入点。教程参见

代表框架:DataBinding、Dagger2、EventBus3、DBFlow、AndroidAnnotation等

AspectJ主要任务是在编译期注入代码

代表框架:Hugo(Jake Wharton)

拓展介绍:通过AOP编程来实现对源代码无侵入埋点的工具有

工具 方式 能力 缺点
XPosed 运行期hook 能hook自己应用进程的方法
能hook其他应用的方法
能hook系统的方法
手机需要root
依赖三方包的支持,碎片化严重兼容性差
DexPosed 运行期hook 能hook自己应用进程的方法 目前不支持4.4以上的系统
依赖三方包支持,碎片化严重兼容性差
AspectJ 编译期字节码注入 可以在编译成字节码的过程中插入代码 官方有Eclipse插件;Android Studio没有,需要替换编译器,环境不好部署
ASM 编译期或运行期字节码注入 可以在字节码中文件或者ClassLoader加载字节码的时候插入代码 需要熟悉字节码语法

Javassist可以在编译期间修改class二进制文件(ASM也有同样的功能),一般利用gradle建task在打包成dex之前进行class的修改

安卓AOP三剑客:APT,AspectJ,Javassist

AspectJ

环境搭建

下载aspectj.jar并点击安装

项目的build.gradle配置

buildscript {
    
    repositories {
        google()
        jcenter()
        maven
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值