我是程序员小小叶,为大家带来原创精彩技术内容。
BootChart启用:生成日志文件
方法一:在Android10模拟器上实测可行
在 Android 6.0 以上系统默认已经编译了 bootchart, 使用adb shell 命令进入文件系统,可以看到 data 下面已经有 bootchart 的目录。再输入:
touch /data/bootchart/enabled
或者连续按两次exit,退出到外面再执行:
adb shell 'touch /data/bootchart/enabled'
两者效果是一样的。
然后关闭手机重启,此时再打开/data/bootchart目录,可以看到已经生成了开机启动的log文件:
这里需要注意的是: 由于之前执行了命令’touch /data/bootchart/enabled’,导致出现了enabled文件,这个enabled文件会导致后面的图片生成失败;建议将其他的4个文件(header, proc_diskstats.log, proc_ps.log, proc_stat.log)复制到其他文件夹进行保存。
然后执行:
tar -zcf bootchart.tgz *
将4个文件打包,最后用adb pull 命令将bootchart.tgz放到电脑中。
adb pull /data/bootchart/bootchart.tgz
方法二:在实机上实测可行
在旧版Android中(6.0之前版本)需要修改一些文件,重新编译boot.img才可以开启bootchart,这个修改方法可以上网搜索一下。现在的Android系统已经配置好bootchart,只需要做以下操作就可以启动:
//在data/bootchart/目录中新建start文件
adb shell 'touch /data/bootchart/start'
/*
* 在start文件中写入采用时间timeout=120s
* 这里的时间可以自定义,通过查看源代码可知最长时间不能超过10*60 s
*/
adb shell 'echo 120 > /data/bootchart/start'
//在data/bootchart/目录中新建stop文件
adb shell 'touch /data/bootchart/stop'
//在stop文件中写入1标记,用于停止采集数据
adb shell 'echo 1 > /data/bootchart/stop'
重启之后,看到/data/bootchart/目录下文件为:
那可以看到stop文件消失了。所以这里需要注意把start文件也删除,不然下次重启手机又会启动bootchart,而启动它是要耗费资源的。
这里需要注意的是: stop文件会在timeout=120s时间到之后自动删除,start文件建议手动删除,避免bootchart生成png时出现警告
然后执行:
tar -zcf bootchart.tgz *
将4个文件打包,最后用adb pull 命令将bootchart.tgz放到电脑中。
adb pull /data/bootchart/bootchart.tgz
环境配置:Mac下安装BootChart
下载
通过下面链接下载bootchart源码:
bootchart-0.9.tar.bz2
安装
解压缩,因为是ant构建的,需要安装ant
brew install ant
进入源码目录,执行
ant
目录会生成bootchart.jar
使用
然后手机开启bootchart的过程最终会生成bootchart.tgz的文件,这个文件就是要处理的源文件,通过下面命令,可以在当前目录生成png图片。
java -jar bootchar.jar bootchart.tgz
注意
如果使用过bootchart,每次开机都会进行信息采集,会大约占用7%的开销,如果不想进行收集,需要把目录bootchart从手机上删除
注:要重新收集数据时,需做以下步骤:
cd /data
rm –r bootchart
rm bootchart-start
效果图
后续
将继续整理完成bootchart的分析过程。
同系列文章:
【第一章-知识】2、性能优化-Bootchart 分析之Android 7.1 版本Bug
【第二章-工具】【开机性能分析】BootChart
结语
欢迎关注我的公众号(程序员小小叶),如果你觉得本篇内容有帮助到你,可以转载转发但记得要关注,要标明原文哦,谢谢您的支持,您的支持是我最大的动力~