jaop

Project Url: ltshddx/jaop
Introduction: Jaop is a gradle plugin base on javassist for android aop
More: Author   ReportBugs   
Tags:
javassist-gradle plugin-

jaop 是一个基于 javassist 和 asm 的 gradle aop 插件,可以在特定的方法调用处或方法体内 编程
javassist 做简单的代码插入,asm 做操作数栈分析和字节码的转录
不会新增任何方法,秒杀 aspectj
兼容性更好
不支持 instant run

配置

repositories {
  jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0' // 需要 1.5 及以上的 plugin
    classpath 'jaop.gradle.plugin:gradle-plugin:1.0.4'
}

apply plugin: 'jaop'

用法

@Jaop  //配置文件的开关
public class JaopDemo {
    @After("demo.jaop.sample.MainActivity.onCreate")  // hook 掉 onCreate 方法的方法体
    public void replace1(MethodBodyHook hook) {
        Button button = (Button) ((Activity) hook.getTarget()).findViewById(R.id.button);
        button.setText("text replace by jaop");
    }

    @Replace("android.widget.Toast.makeText") // hook Toast makeText 方法的调用处, 替换 toast 的文本
    public void replace2(MethodCallHook hook) {
        Object[] args = hook.getArgs();
        hook.setResult(Toast.makeText((Context)args[0], "hook toast", Toast.LENGTH_LONG)); // 设置返回值
    }
}

详情请看 sample

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools