@808f45a19048
public class MyMethodVisitor extends MethodVisitor {
public MyMethodVisitor(MethodVisitor methodVisitor) {
super(Opcodes.ASM4, methodVisitor);
}
//每個(gè)字節(jié)碼指令都會(huì)回調(diào)一次該方法
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
super.visitMethodInsn(opcode, owner, name, desc, itf);
}
//訪問(wèn)開(kāi)始
@Override
public void visitCode() {
super.visitCode();
System.out.println("visitCode visitCode visitCode visitCode");
mv.visitLdcInsn("修改的數(shù)據(jù)");
mv.visitVarInsn(Opcodes.ASTORE, 2);
}
//訪問(wèn)結(jié)束
@Override
public void visitMaxs(int maxStack, int maxLocals) {
super.visitMaxs(maxStack, maxLocals);
}
}
兩種形式的安卓字節(jié)碼插樁字節(jié)碼插樁發(fā)生時(shí)機(jī) 首先需要編寫(xiě)gradle插件 由上圖可知,gradle插件可以由三種方式編寫(xiě): 直接在.gralde文件??梢栽谶@個(gè)文件中 以腳本文件的方式 實(shí)現(xiàn)字節(jié)碼插...