Android systrace抓取工具atrace、perfetto的使用

systrace主要用来分析析能问题:应用响应速度慢、动画播放不流畅、卡顿或耗电量过高表示应用存在性能问题。

共有三种方法,一是android studio、二是命令行、三是prefetto。

抓取trace

命令行

atrace -h 可以看到命令的用法

atrace --list_categories 会列出要trace的项目

自动抓6秒

adb shell atrace view am wm freq idle sync sched aidl gfx -a com.test.anddemo -t 6 > anddemo.trace

持续抓取log

adb shell atrace --async_start view am wm freq idle sync sched aidl gfx dalvik binder_lock binder_driver -a com.test.anddemo

停止抓取Trace文件,并取取出trace

adb shell atrace --async_stop -o /sdcard/b.trace
adb pull /sdcard/b.trace

直接用python脚本(SDK 33版本以前有)抓取并用转成html

python /xxx/Android/sdk/platform-tools/systrace/systrace.py -t 10 -o trace.html

/systrace.py 在34版本的 SDK已经被删除了,不推荐了,但如果搞老系统还是得用      

android studio profiler

用android studio的profile,参考 记录轨迹  |  Android Studio  |  Android Developers

prefetto命令行和网页

(android 10,SDK29 以后才支持)

prefetto命令行也可以抓取,直接用​ https://ui.perfetto.dev/ 实际也是用了这个命令
1、关掉所有自动连接adb的软件 如android studio
2、刷新https://ui.perfetto.dev/record 就是首页上点了 record new trace后的页面
3、点add ADB device
4、修改抓取配置,如点CPU tab页面下的所有开关。
5、点Start Recording

这个工具比较复杂,不过Android后续主支持这个工具和android studio了 ,参考
​【快速入门】Perfetto - Android性能追踪、系统分析工具上手文档 - 知乎

设备系统上操作抓取


设备上手操作开关来抓取。参考 捕获设备上的系统跟踪记录  |  App quality  |  Android Developers
系统设置->开发人员选项->系统跟踪->录制 (最下面有个启用通知栏开关) 测试程序复现性能bug 停止录制,然后再

adb pull /data/local/traces/ .

检测自己怀疑的代码块

代码中加入抓指定trace点,注意抓时命令行要带-a 这个app的包名

Trace.beginSection("test_secton")

...//要分析的代码块

Trace.endSection();

抓取的trace中会单独有这个slice,用来分析代码块的性能。

打开trace文件

1、Android studio profiler 

 用android studio的profile,参考 记录轨迹  |  Android Studio  |  Android Developers

把b.trace文件导出到电脑,然后使用sdk(33版本以前有)下的systrace.py程序将分析结果生成html文件,命令如下:

python systrace.py --from-file ~/b.trace -o ~/b.html

然后用chrome浏览器里,chrome://tracing/,load .trace转成的.html即可

prefetto

  https://ui.perfetto.dev/  open trace file,打开.trace文件。

分析systrace

主要看每个16.7ms内的main线程的任务是不是没有完成。是什么原因导致没有完成。

看是否有丢帧、帧延迟,找出影响的代码块,对其进行优化。

参考 Android Systrace 基础知识 -- Systrace 简介 · Android Performance

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值