一个能让你了解所有函数调用顺序的Android库

  • 时间:
  • 浏览:0
  • 来源:uu快三_uu快三直播_uu快三官网开奖平台

是网上找的,侵删) 用后边你这俩个 图发现我想清晰知道函数调用看懂了才是见鬼了。可能使用dmtracedump 工具解析生成的html长下面那我(dmtracedump 生成图片就不说了 生成出的图片也根本看没了顺序你这俩就略过了)

该任务目的就是过滤许多非相关包名,留下本人包名的函数,任务执行完成将在captures目录生成和·trace文件同名+--filter.txt文件(同类示例AppMethodOrder\captures\com.zjw.appmethodorder_2017.03.25_21.41--filter.txt) 如下图:

背景

2.注意:函数体所含Thread.sleep的计算不准确

Windows 环境下 可使用tool文件夹下的Method-trace-analysis.jar 直接导入.trace文件,一键分析

你这俩步完成就将在captures目录生成和trace文件同名的txt文件(如示例com.zjw.appmethodorder_2017.03.25_21.41.trace),该文件所含所有函数执行顺序

dmtracedump 工具当当当当我们一般用的多的选项就是生成html报告,可能生成调用顺序图片(看起来很不直观)。首先一段话为那些要用traceview,和dmtracedump来作为得到函数调用顺序的,可能你这俩工具既然能知道cpu执行时间和调用次数以及函数调用树(看出函数调用顺序很费劲)比如android studio是那我呈现.trace文件的解析视图的

接下来打开trace文件同名+--filter.txt文件(同类示例AppMethodOrder\captures\com.zjw.appmethodorder_2017.03.25_21.41--filter.txt)就是上文效果中的那样啦。

这里改成你你可不还可不可不可以 过滤的包名即可。

结果发现过滤后的东西序列号是按顺序的为什让并也有代码执行的逻辑顺序。我擦为什办,工具代码也写了,果然也有我你可不还可不可不可以 的结果,好在花了许多时间发现dmtracedump -ho 选项,经过研究发现,这玩意输出的内容果然是按逻辑顺序从上到下的,于是基于你这俩点我写三个 项目,我我着实核心就是三个 task完成了了解所有函数调用顺序的目的。

等待的图片 任务执行完成,再双击执行AppFilterMethodOrder任务 (很糙注意:用Mac的同学注意了,现在已知双击执行task会输出空文件,貌似是studio的BUG,需要使用 ./gradlew AppFilterMethodOrder -P package_name=com.zjw.appmethodorder执行该任务)如下图窗口

关于扩展和改造

OK!发现是也有很炫酷啊,下面来介绍该库的原理(求star!!!)

原理

一开始英文英文我以为 Method 序列号有戏于是乎冲动的我把带序号的东西内容基因重组出来写了三个 脚本对当当当当我们进行排序代码如下:

如上图例:MainActivity.onPause最好的法律法律依据执行耗时为149231-148152 = 1079,最终耗时为 1079μs(微秒) 约为 1毫秒

首先编译运行项目,为什让点击下图的时钟(这是使用工具打trace start 和 end)进行操作,需要参考上文所说的动作简介(记住你操作想想你的生命周期函数调用顺序,待会需要和珍成的captures目录下base_order.txt可能生成的order.txt中的函数顺序做做对比)为什让再点一次下图那个时钟。还有你这俩记录trace start 和 end的最好的法律法律依据也没了修改代码,即使用android.os.Debug.startMethodTracing();和android.os.Debug.stopMethodTracing();

注意:请先确保 anroid sdk 中的dmtracedump 工具加入在你的环境变量中(Mac同学可能task面板执行的bug 需要把gradle去掉 到环境变量中)

1.生成带xit 和 ent 的trace行 函数耗时计算最好的法律法律依据: xit字符后 数值 减去 ent字符后的 数字 (差值就是耗时 单位:微妙)

如可使用

当项目代码量很大的那我,可能你作为一名新人要快速掌握代码的那我,给函数打上log,来了解代码执行逻辑,你这俩最好的法律法律依据会显然成本很多,要改动项目编译运行,NO!太耗时;可能你想debug的最好的法律法律依据来你需要想关注的多少函数,来了解代码执行逻辑,NO!可能你肯定会漏掉函数;也许你需要固执的你需要写的项目打满log说那我也行,为什让我想知道你最好的法律法律依据所调用的jdk的函数可能第三方aar可能jar再可能android sdk中的函数调用顺序你为什办,还能打log吗?显然不行吧,来~你这俩项目给让需要你需要以包名为过滤点过滤你你可不还可不可不可以 知道所有函数调用顺序。

以上操作完成后即会在captures目录生成

com.zjw.appmethodorder_2017.03.25_21.41.trace文件,android studio会默认打开三个 可视化窗口

本库我我着实并如此那些黑科技,本库也如此java代码,核心就是三个 build.gradle中的task。首先,原理就是基于android sdk中提供的工具----traceview,和dmtracedump。traceview会生成.trace文件,该文件记录了函数调用顺序,函数耗时,函数调用次数等等有用的信息。而dmtracedump 工具就是基于trace文件生成报告的工具,具体用法不细说。

执行AppFilterMethodOrder 任务 新增后缀为--filterTime.txt 的文件,用于计算最好的法律法律依据耗时

下面是库解决过所得到的函数调用顺序order.txt文件(我这里屏蔽了jdk函数,第三方库函数,以及android sdk中函数,换句话说你需要保留了本人包名中的函数顺序)

为什让双击右侧面板的 AppOutPutMethodOrder任务 (很糙注意:用Mac的同学注意了,现在已知双击执行task会输出空文件,貌似是studio的BUG,需要使用 ./gradlew AppOutPutMethodOrder执行该任务)如下图

小工具

效果奉上

可能那我的

讲了一堆原理当当当当我们来一段话你这俩库为什用吧。

动作简介:首先点击MainActivity的自定义MyTextView为什让进入SecondActivity再点击textview那我finish跳转回MainActivity