21年的时候我写了一篇基于 Mac OS 的应用卡顿分析 其中就提到了 systrace 简单使用,时隔三年公司重新配置了 Windows 的电脑又遇到了分析 systrace 的场景,起始工作没想到有点磕磕绊绊,踩坑过程记录一下方便自己也方便他人。
systrace 去哪儿了
\Android\Sdk\platform-tools\ 找到这个目录发现这个目录之前存在过的 systrace 文件夹已不存在了,原本是高版本的 Android 已经不再推荐我们使用 systrace ,所以我们需要单独再去下载一个。
下载地址: dl.google.com/android/rep… 下载完之后呢,有一些冗余文件,我们只需要提取 systrace 文件到原来自己 sdk/platform/ 下,建议是放置在这
Python 2x & Python 3x
python 目前2x的版本已经停止了维护,大部分时候我们使用的是 3x 版本但是 systrace 比较特殊,你去执行 systrace.py 脚本,如果使用的是 3x 版本的 python 则会提示你用 2x ,所以我们还需要在 Windows 里装一个 2x 的版本,下载地址如下:
环境变量
直接使用 setup 安装完毕之后去 terminal(CMD) 里面去执行 python 是找不到命令或者还是使用的 3x 的版本的,这里还需要做下环境变量的配置
PS:除了python的环境变量,这里其实还需要 Java 和 adb 的环境变量,因为默认你已经是个 Androider 大部分情况下你在看到这篇文章的时候这个已经配置好了。
同时兼容两个版本
py2 py3 我都想要咋办,环境变量中我们配置两个变量如何做区分,只需要找到对应版本的 python 的可执行文件重名命即可, 例如下:
win32con & six
在执行 systrace 前我们还会遇到一些报错,例如:
解决方案也如图上: pip install pipwin32
解决方案也如图上:
pip uninstall six
pip install six
systrace 命令
python2 systrace.py -t 5 -o trace.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res
我们执行这样一个命令就抓到了 5 s 的 trace 文件,这么多命令看起来是不是有点烧脑,我们只需要记住几个关键信息即可:
- -a 指定包名
- -t 指定 dump 时间,默认 5s
- -o 输出到哪个目录下以什么文件格式输出
剩下的其他的都是一些输出 trace 的细节,例如 am wm 代表 ActivityManager 和 WindowManager , gfx 则代表图形图像绘制相关
perfetto
通过 Google 浏览器我们可以使用两个工具来打开我们生成的 trace 文件
chrome://tracing/
但是 chrome://tracing/ 已经推荐使用 perfetto
perfetto 的使用不再在本篇做介绍,感兴趣的同学可自行查阅资料学习