Android开机简要流程

169 阅读2分钟

Android开机简要流程如下

image.png

其中部分关键过程的打印

Bootloader start count

LK 启动(Little Kernel)

Bootloader end count

LK 结束

Kernel MPM timestamp

bootloader运行完成

|boot_progress_start|

系统进入用户空间,标志着kernel启动完成

|boot_progress_preload_start|

Zygote启动

|boot_progress_preload_end|

Zygote结束

|boot_progress_system_run|

SystemServer ready,开始启动Android系统服务,如PMS,APMS等

|boot_progress_pms_start|

PMS开始扫描安装的应用

|boot_progress_pms_system_scan_start|

PMS先行扫描/system目录下的安装包

|boot_progress_pms_data_scan_start|

PMS扫描/data目录下的安装包

|boot_progress_pms_scan_end|

PMS扫描结束

|boot_progress_pms_ready|

PMS就绪

|boot_progress_ams_ready|

AMS就绪

|boot_progress_enable_screen|

AMS启动完成后开始激活屏幕,从此以后屏幕才能响应用户的触摸,它在WindowManagerService发出退出开机动画的时间节点之前,而真正退出开机动画还会花费少许时间,具体依赖animation zip 包中的desc.txt。wm_boot_animation_done才是用户感知到的动画结束时间节点

|sf_stop_bootanim|

SF设置service.bootanim.exit属性值为1,标志系统要结束开机动画了,可以用来跟踪开机动画结尾部分消耗的时间

|wm_boot_animation_done|

开机动画结束,这一步用户能直观感受到开机结束

tips:假如系统有多次重启,通过判断Bootloader start count和boot_progress_preload_start的时间戳差值,可以大致确定是整机重启还是上层重启

其中部分关键过程的打印

Bootloader start count

LK 启动(Little Kernel)

Bootloader end count

LK 结束

Kernel MPM timestamp

bootloader运行完成

|boot_progress_start|

系统进入用户空间,标志着kernel启动完成

|boot_progress_preload_start|

Zygote启动

|boot_progress_preload_end|

Zygote结束

|boot_progress_system_run|

SystemServer ready,开始启动Android系统服务,如PMS,APMS等

|boot_progress_pms_start|

PMS开始扫描安装的应用

|boot_progress_pms_system_scan_start|

PMS先行扫描/system目录下的安装包

|boot_progress_pms_data_scan_start|

PMS扫描/data目录下的安装包

|boot_progress_pms_scan_end|

PMS扫描结束

|boot_progress_pms_ready|

PMS就绪

|boot_progress_ams_ready|

AMS就绪

|boot_progress_enable_screen|

AMS启动完成后开始激活屏幕,从此以后屏幕才能响应用户的触摸,它在WindowManagerService发出退出开机动画的时间节点之前,而真正退出开机动画还会花费少许时间,具体依赖animation zip 包中的desc.txt。wm_boot_animation_done才是用户感知到的动画结束时间节点

|sf_stop_bootanim|

SF设置service.bootanim.exit属性值为1,标志系统要结束开机动画了,可以用来跟踪开机动画结尾部分消耗的时间

|wm_boot_animation_done|

开机动画结束,这一步用户能直观感受到开机结束

tips:假如系统有多次重启,通过判断Bootloader start count和boot_progress_preload_start的时间戳差值,可以大致确定是整机重启还是上层重启