sy007 / DebouncePlugin

Android点击事件防抖动插件

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

proxyClassName类使用kotlin配置类不生效

wen-carl opened this issue · comments

commented

版本:2.0.3
android gradle:7.2.2
gradle:7.3.3-bin

gradle配置:

debounce {
    generateReport = true
//    proxyClassName = "com.example.utils.DebounceProxy"
    proxyClassName = "com.example.utils.ClickMethodProxy"
    excludes = [
            "androidx/**/*", //排除官方组件插桩
            "android/**/*",  //排除官方组件插桩
            "com/google/android/**/*", //排除官方组件插桩
    ]
}

使用kotlin(结果不能生效,生成的报告:modified 0 classes and 0 methods):

@InterfaceMethodProxy(
        ownerType = View.OnClickListener::class,
        methodName = "onClick",
        parameterTypes = [View::class],
        returnType = Unit::class
    )
    fun onClickProxy(param: MethodHookParam): Boolean {
        /**
         * [View.OnClickListener.onClick]只有一个参数View,所以直接取
         */
        if (param.args[0] is CheckBox) {
            return false
        }
        val view = param.args[0] as View
        val isBounce = checker.checkView(param.owner, param.methodName, view, CHECK_TIME)
        return isBounce
    }

使用java(结果可以生效,生成报告:modified 90 classes and 138 methods):

@InterfaceMethodProxy(
            ownerType = View.OnClickListener.class,
            methodName = "onClick",
            parameterTypes = {View.class},
            returnType = void.class)
    public boolean onClickProxy(MethodHookParam param) {
        /**
         * {@link View.OnClickListener#onClick(View)}只有一个参数View,所以直接取
         */
        if (param.args[0] instanceof CheckBox) {
            return false;
        }
        View view = (View) param.args[0];
        boolean isBounce = checker.checkView(param.owner, param.methodName, view, CHECK_TIME);
        return isBounce;
    }
commented

@wen-carl 麻烦发下kt完整的类信息

commented

你直接把这个java类转换成kotlin就好了,没有其他改动
就是你的demo(simple)中的代理类转换成kotlin,删除了其他没有用到的,只留了这一个

commented

你直接把这个java类转换成kotlin就好了,没有其他改动

ok

commented

@wen-carl 2.0.4版本修复kotlin写法的代理类插桩无效问题

commented

@wen-carl 2.0.4版本修复kotlin写法的代理类插桩无效问题

ok,神速呀