标签:Android ASM插桩,ASM插桩经验
Android ASM插桩操作手册
https://blog.csdn.net/u010976213/article/details/105293195
使用ASM完成编译时插桩
https://zhuanlan.zhihu.com/p/158758613
ASM官网:
ASM官网指导手册:
代码示例,自测可以跑得通!
https://github.com/Gavin-ZYX/asmDemo
https://github.com/isJoker/ASM_Demo
插桩的位置:
插柱细节流程:
修改了插件的代码,重新生成插件
工程要Clean Project,再Build APK
插桩后,函数执行顺序一清二楚
参考示例代码:
https://github.com/achirand/asmDemo2022
https://github.com/achirand/CircleProgressWithASM
ASM插桩经验
经验一:函数名称有特殊字符,例如<或$,这些函数给除掉,不然编译APK报错误
经验二:
安卓各module里的build.gradle文件里的targetSdkVersion ,compileSdkVersion值保持一致,不然有时编译也会报错。
经验三:
如果编译使用gradle 7.0以上版本,没有uploadArchives函数了,须使用publishing函数。生成本地jar时,点击右边PublishToMavenLocal。
publishing {
publications {
maven(MavenPublication) {
groupId = 'com.gavin.plugin'
artifactId = 'sample'
version = "0.0.1"
from components.java
pom {
name = 'My Library'
description = 'A description of my library'
}
}
}
}
参考链接:
伪字节相关知识:
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.dup
https://gitlab.ow2.org/asm/asm 源码,ASM是开源的
https://asm.ow2.io/developer-guide.html ASM指导手册
作者简介:https://shimo.im/docs/rp3OVwxle2fJn7Am/
上海徐汇
2022年4月17日