proxyClassName类使用kotlin配置类不生效
wen-carl opened this issue · comments
Carl 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;
}
Carl commented
你直接把这个java类转换成kotlin就好了,没有其他改动
就是你的demo(simple)中的代理类转换成kotlin,删除了其他没有用到的,只留了这一个
sy007 commented
你直接把这个java类转换成kotlin就好了,没有其他改动
ok