exposed hook视图组崩溃的所有方法
我想钩住ViewGroup的所有方法,因此请编写以下代码:exposed hook视图组崩溃的所有方法,xposed,Xposed,我想钩住ViewGroup的所有方法,因此请编写以下代码: final Class<?> mViewGroup = XposedHelpers.findClass("android.view.ViewGroup", lpparam.classLoader); for (final Method method : mViewGroup.getDeclaredMethods()) { if (true == Modifier.isAbstract(method.getModifi
final Class<?> mViewGroup = XposedHelpers.findClass("android.view.ViewGroup", lpparam.classLoader);
for (final Method method : mViewGroup.getDeclaredMethods()) {
if (true == Modifier.isAbstract(method.getModifiers())){
XposedBridge.log("skip abstract:" + method.getName());
continue;
}
XposedBridge.log("----" + method.getName());
XposedBridge.hookMethod(method, methodHook);
}
final StringBuilder sb = new StringBuilder();
XC_MethodHook methodHook = new XC_MethodHook() {
@Override
protected void beforeHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
dumpParams(param);
}
@Override
protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
//param.setResult(false);
XposedBridge.log("after:" + param.getResult());
}
};
private void dumpParams(XC_MethodHook.MethodHookParam param) {
sb.setLength(0);
sb.append(param.method.getName()).append("(");
for (Object o:param.args) {
String typnam = "";
String value = "null";
if (o != null) {
typnam = o.getClass().getName();
value = o.toString();
}
sb.append(typnam).append(":").append(value).append(", ");
}
XposedBridge.log(sb.toString());
}
钩住方法或执行钩住的方法时是否会发生错误。您知道哪些ViewGroup方法会导致此问题吗?执行时会发生错误,错误日志中的方法是AttachInfo。AttachInfo是类而不是方法。有多个方法具有AttachInfo类型的参数。因此,不清楚错误发生在何处。此外,您发布的代码不包含
methodHook
实现,因此无法猜测您执行的是什么命令导致了此问题。@Robert使用methodHook更新,它只打印一个日志,其中包含输入到方法中的参数信息。您是否尝试将dumpParams代码放入try{}(捕获异常e)
阻止并记录stacktrace,以查看哪个方法导致此错误?
am_crash: `java.lang.IllegalAccessError,Illegal class access: 'EdHooker45' attempting to access 'android.view.View$AttachInfo' (declaration of 'EdHooker45' appears in /data/user_de/0/.../1129433416.jar),NULL,120]`