Android开发经验谈Android技术知识Android知识

systrace

2018-01-25  本文已影响284人  richy_

一.介绍systrace

一般来说,我们的机器以60帧/秒显示时(也就是16.6 millisecond),用户会感觉机器会流畅。如果出现显示时出现丢帧的情况,我们要知道系统在做什么。
systrace是Android4.1版本之后推出的,对系统Performance分析的工具。
systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等。在Android平台中,它主要由3部分组成:

二.抓取systrace

google systrace说明
有三种方式抓取systrace:

2.1 systrace.py工具

cd android-sdk/platform-tools/systrace
python systrace.py --app=sectionName --time=10 -o mynewtrace.html sched gfx view wm

2.1.1 options

其中options可取值:

options 描述
-o < FILE > 输出的目标文件
-t N, –time=N 执行时间,默认5s
-b N, –buf-size=N buffer大小(单位kB),用于限制trace总大小,默认无上限
-k < KFUNCS >,–ktrace=< KFUNCS > 追踪kernel函数,用逗号分隔
-a < APP_NAME >,–app=< APP_NAME > 追踪应用包名,用逗号分隔
–from-file=< FROM_FILE > 从文件中创建互动的systrace
-e < DEVICE_SERIAL >,–serial=< DEVICE_SERIAL > 指定设备
-l, –list-categories 列举可用的tags , You can run systrace with the -l command to see a list of services available to your connected device.

2.2 Device Monitor(DDMS)

可以使用Android Studio集成开发工具,切换到DDMS,点击devices,点击Systrace按钮

2.3 自定义systrace

2.3.1 app层

import android.os.Trace;
Trace.beginSection(String sectionName)
Trace.endSection()

2.3.2 Java Framework

import android.os.Trace;
Trace.traceBegin(long traceTag, String methodName)
Trace.traceEnd(long traceTag)

抓取systrace分析。

2.3.3 Native framework层

#include <cutils/trace.h>
ATRACE_CALL()

抓取systrace分析。

三. 分析systrace

Google Chrome浏览器可以打开systrace,如果打不开,可以通过chrome://tracing/,然后load systrace。

3.1 快捷操作

3.1.1 导航操作

导航操作 作用
w 放大,[+shift]速度更快
s 缩小,[+shift]速度更快
a 左移,[+shift]速度更快
d 右移,[+shift]速度更快

3.1.2 快捷操作

常用操作 作用
f 放大当前选定区域
m 标记当前选定区域
v 高亮VSync
g 切换是否显示60hz的网格线
0 恢复trace到初始态,这里是数字0而非字母o
一般操作 作用
h 切换是否显示详情
/ 搜索关键字
enter 显示搜索结果,可通过← →定位搜索结果
` 显示/隐藏脚本控制台
? 显示帮助功能

对于脚本控制台,除了能当做记事本的功能,目前还不清楚有啥功能,或许还在开发中。

3.1.3 模式切换

可通过按数字1~4,用于切换鼠标模式; 另外,按住alt键,再滚动鼠标滚轮能实现放大/缩小功能。

3.2 样例分析

最好不过google官方文档
https://source.android.com/devices/tech/debug/systrace

四. 不错的参考

刘望舒的Android绘制优化
Android App优化之性能分析工具
Google Android UI 性能优化

上一篇下一篇

猜你喜欢

热点阅读