暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Android性能工具——Systrace

拖地先生 2020-04-13
1799

yogaJ好文: 

Android卡顿是什么?

七招教你优化Android滚动页面的性能

Android瘦身大法--资源混淆压缩

Apk瘦身之图片资源大小检测


近期Android同学做了一系列的启动优化,近两周会集中整理过程中的总结。




Android运行app的过程中,对于手机具体的运行各方法的耗时和手机硬件的状态,google给我们提供了一个轻量级的工具:Systrace。


说它轻量级,是因为Android底层本身对systrace提供了数据收集,而且systrace本身的性能消耗几乎可以忽略不计。


前期准备:1. java环境  这个不多解释。
                  2. python 2.7

这里有一个小坑,刚开始我下了个python3.6,然后执行脚本的时候 :

Systrace does not support Python 3.6,Please use Python 2.7

然后就去androidsdk目录下platform-tools/systrace/systrace.py看了一眼脚本,第三行就是:

version = sys.version_info[:2]
if version != (2, 7):
sys.stderr.write('Systrace does not support Python %d.%d. '
'Please use Python 2.7.\n' % version)
sys.exit(1)



使用:

首先在自己的代码里找到想要查看的代码块,在之前加入:Trace.beginSection("begin"); 在之后加入 Trace.endSection();

之后 在androidStudio中的terminal里,cd 到 systrace 文件夹内 执行脚本:

./systrace.py -t 10 sched gfx view wm am app -a <package-name>

该脚本命令一般用法:systrace.py[options][category1[category2]]...


google官网上对命令的相关说明:`[options]` 是一些命令参数,`[category]` 等是你感兴趣的系统模块,比如view代表view系统(包含绘制流程),am代表ActivityManager(包含Activity创建过程等)。


分析不同问题的时候,可以选择不同你感兴趣的模块。需要重复的是,尽可能缩小需要Trace的模块,其一是数据量小易于分析;其二,虽然systrace本身开销很小,但是缩小需要Trace的模块也能减少运行时开销。比如你分析卡顿的时候,`power`, `webview` 就几乎是无用的。


自建一个项目,使用systrace获取应用启动信息:

 生成了一个trace.html文件,用chrome打开

第一行是cpu使用情况,还有我手机里的各种进程,这里看一下我们的com.example.sunny.myapplication  frames 的 UI thread 里,选中要查看的部分:

有measure,layout各方法执行的统计,startActivity,bindApplication相关统计。点击每个item可具体查询那里耗时严重。


在实际的使用中,可以通过多次trace不断缩小目标范围。卡顿如果定位到问题,修改就会好很多。



拖地先生,从事互联网技术工作,在这里每周两篇文章,聊聊日常的实践和心得。往期推荐:

说说这个公众号

平均响应1000ms到200ms,PHP和Go那家强?

崩溃率从1%到0.02%,iOS稳定性解决之道

七招优化Android包体减少30%

技术产品职业瓶颈?29份腾讯通道材料教你成长

低头赶路,也别忘了抬头看天

加班能解决交付的期望么?

如果对你有帮助,让大家也看看呗~

文章转载自拖地先生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论