在开机logcat中,查找一下事件打印:可以看到个流程的耗时信息:
boot_progress_start: 4927 android虚拟机开始启动
boot_progress_preload_start: 7037 ZygoteInit class preload start
boot_progress_preload_end: 8837 ZygoteInit class preload end
boot_progress_system_run: 9154 SystemServer.run() start
boot_progress_pms_start: 9770 pms开始扫描package
boot_progress_pms_system_scan_start: 10012 pms开始扫描system目录下的package
boot_progress_pms_data_scan_start: 10208 pms开始扫描data目录下的package
boot_progress_pms_scan_end: 10214 pms扫描结束
boot_progress_pms_ready: 10361 pms.systemReady()
boot_progress_ams_ready: 11578 ams.systemReady()
boot_progress_enable_screen: 13233 ams调用enableScreenAfterBoot()
sf_stop_bootanim: 17042 设置service.bootanim.exit属性值为1
wm_boot_animation_done: 17044 开机动画结束
【通过安卓自带工具bootchart来分析开机时间方法】
在adb或者串口命令行下输入:
adb shell touch /data/bootchart/enabled
reboot
直接开机起来后可以看到/data/bootchart目录下,已经有数据生成了
console:/data/bootchart # ls -l
total 2300
-rw------- 1 root root 0 2020-10-17 15:28 enabled
-rw-rw-rw- 1 root root 1037 2020-10-17 15:28 header
-rw-rw-rw- 1 root root 83673 2020-10-17 15:28 proc_diskstats.log
-rw-rw-rw- 1 root root 1868517 2020-10-17 15:28 proc_ps.log
-rw-rw-rw- 1 root root 24478 2020-10-17 15:28 proc_stat.log
console:/data/bootchart #
然后打包成tgz包:
tar -czf bootchart.tgz enabled header proc_diskstats.log proc_ps.log proc_stat.log
然后通过adb pull出来放到编译服务器的随便一个目录下:
adb pull /data/bootchart/bootchart.tgz D:\temp
在编译服务器下输入命令生成图片:
mark@ubuntu:~$ bootchart bootchart.tgz
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
parsing 'bootchart.tgz'
parsing 'enabled'
parsing 'header'
parsing 'proc_diskstats.log'
parsing 'proc_ps.log'
warning: no parent for pid '2' with ppid '0'
parsing 'proc_stat.log'
merged 0 logger processes
pruned 67 process, 0 exploders, 6 threads, and 0 runs
False
bootchart written to 'bootchart.png
如图,即为开机各阶段耗时: