bootchart是android原生自带的性能分析工具,可以收集android开机过程中的log。再利用jar包能够将开机时各个进程呈现在图表中。可以比较直观的看到开机时哪些比较耗时。
一、启用Bootchart
android中的bootchart源码位于system/core/init目录下,bootchart.cpp中有个do_bootchart_start()函数
static int do_bootchart_start() {
// We don't care about the content, but we do care that /data/bootchart/enabled actually exists.
std::string start;
if (!android::base::ReadFileToString("/data/bootchart/enabled", &start)) {
LOG(VERBOSE) << "Not bootcharting";
return 0;
}
g_bootcharting_thread = new std::thread(bootchart_thread_main);
return 0;
}
代码中时通过判断是否有/data/bootchart/enabled文件来启动bootchart的,所以创建一个这个文件即可启动
二、设置收集数据时间
这个在源码中没有找到相应的说明,按照网上说的6.0之后做法,试了下没看出效果
- 创建/data/bootchart/start文件存储bootchart采样时间(s)
- 2 .adb shell ‘echo 120 > /data/bootchart/start’
三、生成图表
启用bootchart并且设置好时间后,重启机器,会在/data/bootchart下生成log文件,从源码中可以看到当前会生成哪些日志文件。除了这个log文件之外还会生成一个header文件,也是必须的。
static void bootchart_thread_main() {
LOG(INFO) << "Bootcharting started";
// Open log files.
auto stat_log = fopen_unique("/data/bootchart/proc_stat.log", "we");
if (!stat_log) return;
auto proc_log = fopen_unique("/data/bootchart/proc_ps.log", "we");
if (!proc_log) return;
auto disk_log = fopen_unique("/data/bootchart/proc_diskstats.log", "we");
if (!disk_log) return;
......
}
然后利用bootchart工具把这些日志转成png图片。
1.使用系统自带脚本生成png图片
执行 /system/core/init/grab-bootchart.sh 自动生成png图片
(没试过,这个手机要连接服务器电脑才行,看脚本猜测的)
2.使用bootchart.jar处理日志压缩文件
从官网下载bootchart源码,放到ubuntu目录下,执行
# http://www.bootchart.org/download.html bootchart官网地址
ant
生成bootchart.jar
将手机 /data/bootchart/ 下文件 (header proc_diskstats.log proc_ps.log proc_stat.log) pull出来copy到服务器,执行下压缩命令生成bootchart.tgz
1 .busybox tar zcvf bootchart.tgz header proc_diskstats.log proc_ps.log proc_stat.log
使用jar转成png图
1. java -jar bootchart.jar bootchart/bootchart.tgz
最后给大家分享一份非常系统和全面的Android进阶技术大纲及进阶资料,及面试题集
想学习更多Android知识,请加入Android技术开发企鹅交流 7520 16839
进群与大牛们一起讨论,还可获取Android高级架构资料、源码、笔记、视频
包括 高级UI、Gradle、RxJava、小程序、Hybrid、移动架构、React Native、性能优化等全面的Android高级实践技术讲解性能优化架构思维导图,和BATJ面试题及答案!
群里免费分享给有需要的朋友,希望能够帮助一些在这个行业发展迷茫的,或者想系统深入提升以及困于瓶颈的朋友,在网上博客论坛等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我在这免费分享一些架构资料及给大家。希望在这些资料中都有你需要的内容。
网友评论