Lancet

2022-02-17  本文已影响0人  雷根儿

官方文章:https://github.com/eleme/lancet/blob/develop/README_zh.md
Lancet 是一个轻量级Android AOP框架。

开始使用

安装

工程的build.gradle中加入:(注意使用最新版本)
dependencies {
    classpath 'me.ele:lancet-plugin:1.0.6'
}

主module的build.gradle中加入:
apply plugin: 'me.ele.lancet'

使用到Lancet的module的build.gradle中加入:
provided 'me.ele:lancet-base:1.0.6'

示例1

@Proxy("i")
@TargetClass("android.util.Log")
public static int anyName(String tag, String msg){
    msg = msg + "lancet";
    return (int) Origin.call();
}

关键点

所以这个示例Hook方法的作用就是 将代码里出现的所有 Log.i(tag,msg)代码替换为Log.i(tag,msg + "lancet")

示例2

public static void evilCode() {
    int a = 1 / 0;
}
//我们把里面的这个代码给去掉,让它变成空方法
public class ToolsLancet {
    @TargetClass("com.zhou.blogdemo.blog04.Tools")
    @Insert("evilCode")
    public static void evilCode() {

    }
}

关键点

还可以加个try-cash提示

public class ToolsLancet {
    @TargetClass("com.zhou.blogdemo.blog04.Tools")
    @Insert("evilCode")
    public static void evilCode() {
        try {
            Origin.callVoid();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

更多参考:https://blog.csdn.net/qq_37658380/article/details/117002958

上一篇下一篇

猜你喜欢

热点阅读