Android app AOP添加埋点技术总结
目标:通过面向切面编程来实现对源代码无侵入的埋点。
方式 | 能力 | 缺点 | 学习曲线 | ||
XPosed | 运行期hook |
能hook自己应用进程的方法;
能hook别的应用的方法;
能hook系统方法;
|
1,手机需要root;
2, 依赖三方包的支持,碎片化严重兼容性差;
|
一般 | |
DexPosed | 运行期hook | 能hook自己应用进程的方法; | 1,目前不支持4.4以及5.1以上的系统; 2, 依赖三方包的支持,碎片化严重兼容性差; |
一般 | |
AspectJ | 编译期字节码注入 |
可以在编译成字节码的过程中插入代码;
|
官方有Eclipse插件,但没有Android Studio插件,需要替换编译器,环境不好部署; | 一般 | |
ASM | 编译期或者运行期字节码注入 | 可以在字节码中文件或者ClassLoader加载字节码的时候插入代码; | 需要熟悉字节码语法; | 陡峭 | |
最终我选择了ASM...