exposed hook视图组崩溃的所有方法

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

我想钩住ViewGroup的所有方法,因此请编写以下代码:

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]`