Xposed遇到的坑

来源:互联网 发布:餐厅排队叫号软件 编辑:程序博客网 时间:2024/06/05 08:34

如果某个APP的dex有多个在安卓5,0以上ART会合成一个oat文件。那么5.0以下会存在多个dex。
所以在5.0以下hook一个某个方法,而这个方法不在主dex,而存在分包dex。此时xposed会在没有加载分包dex的时候进行回调handleLoadPackage().此时类加载器并没有加载分包里面的类 会导致 XposedHelpers.findAndHookMethod 抛出异常。

解决办法:
(大家可以以下参考文献,这里不制作车轮子)

 XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {                @Override                protected void afterHookedMethod(MethodHookParam param) throws Throwable {                    ClassLoader cl = ((Context)param.args[0]).getClassLoader();                    Class<?> hookclass = null;                    try {                        hookclass = cl.loadClass("xxx.xxx.xxx");                    } catch (Exception e) {                        Log.e("jyy", "寻找xxx.xxx.xxx报错", e);                        return;                    }                    Log.i("jyy", "寻找xxx.xxx.xxx成功");                    XposedHelpers.findAndHookMethod(hookclass, "xxx", new XC_MethodHook(){                        //进行hook操作                    });                }            });

参考1
参考2
参考3

原创粉丝点击