- 线程
- 删除打印语句,例如:println、Log
Label的使用可以分成三个步骤:
- 创建Label对象
- 确定Label位置,
mv.visitLabel
- 使用跳转方法,建立联系,例如:
mv.visitJumpInsn
- core api用法示例,可参考:CORE-API-CASE
- tree api用法示例,可参考:TREE-API-CASE
线程替换,将系统线程替换成自定义的线程。
- new Thread
aop的简单示例,详细的可以参考Mixin
例如:替换TestAop
的sayHello
方法中的Log.e
语句
public abstract class TestAop {
/**
* 替换Log.e方法
*/
public static void sayHello() {
Log.e("TAG-TestAop", "sayHello, 测试");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
替换之后,如下:
public abstract class TestAop {
public static void sayHello() {
Logger.ee("TAG-TestAop", "sayHello, 测试");
try {
Thread.sleep(100L);
} catch (InterruptedException var1) {
var1.printStackTrace();
}
}
}