epic缺少so库,superHandler的gradle插件在哪里看
来源:6-1 学习问题自助手册

慕莱坞7556923
2019-05-26
epic缺少so库,superHandler的gradle插件在哪里看
写回答
2回答
-
buder
2020-02-22
/** * 方案二:可以打印耗时消息以及耗时时间 */ private void methodTwo() { final long[] startTime = {0}; //hook sendMessageAtTime,具体msg消息是谁 DexposedBridge.findAndHookMethod(Handler.class, "sendMessageAtTime", Message.class, long.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { super.beforeHookedMethod(param); sMsgDetail.put((Message) param.args[0], Log.getStackTraceString(new Throwable()).replace("java.lang.Throwable", "")); } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { super.afterHookedMethod(param); } }); //hook dispatchMessage,打印耗时时间 DexposedBridge.findAndHookMethod(Handler.class, "dispatchMessage", Message.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { startTime[0] = System.currentTimeMillis(); super.beforeHookedMethod(param); } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { super.afterHookedMethod(param); long costTime = System.currentTimeMillis() - startTime[0]; String stackMessage = null; //时间阈值可以自己定义,这里是10 if (costTime > 10) { stackMessage = sMsgDetail.get(param.args[0]); Log.i("buder", costTime + "***********"); Log.e("buder", stackMessage); } } }); }
可以使用epic,hook住这两个方法,无需全局替换也可以的。具体见
https://blog.csdn.net/cpcpcp123/article/details/104447490
012020-02-24 -
随风绽放
2019-06-27
同学你好,epic缺少so你可以设置仅使用某个类型的so,handler这个你可以参考下https://github.com/didi/DroidAssist ,这个可以实现我说的替换Handler的功能。
00
相似问题