Systrace 是用于收集和检测设备在运行过程中的时序信息的一个脚本工具,它结合了来自Android内核的数据,例如CPU调度程序,磁盘活动和应用程序线程,最终会以HTML的形式报告。
使用USB连接要测试的手机,并打开USB调试开关。
完成以上步骤,就可以进入android-sdk/platform-tools/systrace使用systrace了,下面来看看运行systrace时的一些命令。
systrace运行的命令格式如下:
python systrace.py [options] [category1 [category2 ...]]options表示选项,category表示需要抓取的trace类别,默认抓取所有的类别,也可以进行指定。
常用options有:
Global optionsDescription-h |–help获取帮助信息.-l | --list-categories列出连接设备上所有的trace category.-o file.html指定一个报告结果的html文件-t N设定一个时间(秒),到达时间后,自动结束,不指定时按Enter键结束如:
$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \ binder_driver hal dalvik camera input res可以通过如下命令查看所有的category:
$ python systrace.py -l gfx - Graphics input - Input view - View System webview - WebView wm - Window Manager am - Activity Manager sm - Sync Manager audio - Audio video - Video camera - Camera hal - Hardware Modules res - Resource Loading dalvik - Dalvik VM rs - RenderScript bionic - Bionic C Library power - Power Management pm - Package Manager ss - System Server database - Database network - Network adb - ADB vibrator - Vibrator aidl - AIDL calls pdx - PDX services sched - CPU Scheduling irq - IRQ Events i2c - I2C Events freq - CPU Frequency idle - CPU Idle disk - Disk I/O load - CPU Load sync - Synchronization workq - Kernel Workqueues memreclaim - Kernel Memory Reclaim regulators - Voltage and Current Regulators binder_driver - Binder Kernel driver binder_lock - Binder global lock trace NOTE: more categories may be available with adb root其他的选项使用较少,就不列举了。 通过以上的这些命令,最终将会获得html类型的报告结果,下面我们就看看如何分析该HTML报告。
通过chrome浏览器打开html报告,将会出现类似如下图的结果: 左侧这一栏表示各个进程中trace的TraceName,中间则是各个Trace对应的时间轴,可以看到由各种颜色标记。其中绿色表示正常,其他颜色如红色、黄色则表示需要优化。
正常情况下,大约以每秒60帧,一帧约16.6ms的速率渲染,如果超过这个时间,F圆圈就会变成红色或者黄色.这时可以点击F圆圈,会给出详细信息,以及可能的解决方案,如下图所示:
对于Android 5.0(API level 21)或者更高的设备,渲染帧的工作在UI Thread和Render Thread这两个线程当中。对于更早的版本,则所有工作在UI Thread上进行.
当点击较慢的渲染后(红色F圆圈),会在报告的底部窗格中看到Alert.此外还可以通过点击右侧栏"Alerts"查看所有的警报,通常,一个区域的微小变化或改进可以消除应用程序中的整个警报类别。
在Alert一栏中,列出了所有的Alert,点击后可以查看详细的信息: 点击单个Alert后:
以下是操作HTML报告的快捷键,通过这几个键,可以对整个报告进行放大,缩小,搜索,高亮等操作,可以快速的查看测试过程中哪里耗时较多。
KeyDescriptionW放大时间线S缩小时间线A左移时间线D右移时间线f放大当前所选部分0恢复缩放和平移E时间轴置于当前鼠标位置的中心G从所选任务端的开始处显示网格Shift + G从所选任务端的结束处显示网格->在当前选定的时间轴上选择下一个事件<-在当前选定的时间轴上选择上一个事件m高亮显示所选部分?显示帮助/搜索字段Enter逐步搜索结果官方文档
