目標:通過面向切面編程來實現對源代碼無侵入的埋點。
方式 | 能力 | 缺點 | 學習曲線 | ||
XPosed | 運行期hook |
能hook自己應用進程的方法;
能hook別的應用的方法;
能hook系統方法;
|
1,手機需要root;
2, 依賴三方包的支持,碎片化嚴重兼容性差;
|
一般 | |
DexPosed | 運行期hook | 能hook自己應用進程的方法; | 1,目前不支持4.4以及5.1以上的系統; 2, 依賴三方包的支持,碎片化嚴重兼容性差; |
一般 | |
AspectJ | 編譯期字節碼注入 |
可以在編譯成字節碼的過程中插入代碼;
|
官方有Eclipse插件,但沒有Android Studio插件,需要替換編譯器,環境不好部署; | 一般 | |
ASM | 編譯期或者運行期字節碼注入 | 可以在字節碼中文件或者ClassLoader加載字節碼的時候插入代碼; | 需要熟悉字節碼語法; | 陡峭 | |
最終我選擇了ASM...