systrace打印

转载至https://blog.****.net/wtbee/article/details/97929078, 亲测有效,补充2点:

  1. systrace.py脚本可以在windows命令窗口执行,也可以在ubuntu等linux系统执行;并不一定如本文转载所说的在systrace.py所在目录打开Powershell窗口才可以;
  2. pip install pywin32后,我这边执行systrace.py脚本,提示还需要安装six模块,继续pip install six即可。

另外记录下本人常用的systrace打印命令:

python D:\SDK\platform-tools\systrace\systrace.py -t 10 -o trace.html sched gfx input view wm am webview

atrace -b 20000 -z gfx input view wm am res dalvik sched freq idle -t 10 > /data/trace.out,python D:\SDK\platform-tools\systrace\systrace.py --from-file F:\trace.out-o trace.html

以下是转载内容:

如何用命令行抓取Systrace

预备环境

  1. Android SDK
    • 首先需要安装配置好Android SDK
  2. Python环境
    1. 从如下链接下载Python安装程序

https://www.python.org/downloads/windows/

注意,由于SDK中的python脚本不支持3.x后的版本,建议下载如下版本

systrace打印

1.  安装完成后、需要配置环境变量如下(根据个人安装路径来配置) 

systrace打印

2.  需要安装pywin32模块(解决:ImportError: No module named 'win32com'报错),在Python安装、配置完成之后,在命令行中敲入如下命令进行安装:

systrace打印                       

3.  设备连接电脑、adb root \adb remount 成功。 

抓取systrace

方法1:直接用python脚本命令抓取systrace

1.  进入SDK中systrace.py脚本的路径

systrace打印

 

2.  Shift + 鼠标右键,打开Powershell窗口

systrace打印

3.  在Powershell窗口中敲入如下命令即可抓取Systrace

systrace打印

python systrace.py --time=10 -b 48000 -o systrace.html gfx view wm am

其中:-time表示抓取的时长,-b表示buffer size,-o表示输出的文件名,gfx\view\wm\am\等表示要抓取Systrace的Module的名字。具体还有一些其它参数请自行百度。

生成的systrace.html文件在systrace.py脚本所在的路径中

systrace打印

方法2: adb命令抓取Systrace、并用python脚本转换为html

  1. adb root
  2. adb remount
  3. adb shell
  4. 执行如下命令:

atrace -z -b 96000 gfx input view wm am hal res dalvik rs sched freq idle disk mmc -t 15 > /data/local/tmp/trace_output

systrace打印

敲入命令之后,开始复现问题,等抓取的时长到了之后会自动退出。

命令的含义如之前的说明,其中输出的trace raw data在手机的/data/local/tmp/trace_output文件中

5.  将trace_output pull出来,拷贝到systrace.py脚本的路径下面。

6.  Shift + 鼠标右键,打开Powershell窗口,输入如下命令将trace_output转换成可以用Chrome浏览器查看的output.html。

 

systrace打印

python systrace.py --from-file trace_output -o output.html

输出的output.html就是我们要的systrace文件。

systrace打印

systrace打印

参考文档:https://www.jianshu.com/p/79e89a414b92