zoukankan      html  css  js  c++  java
  • Android启动过程_大致流程

    Android大致启动过程如图(基于O版本  使用draw.io画的)。

    注:这是通过查询结合自己了解的,还有不少不明确的,后续有进展完善,欢迎指正。

    说明:绿色是主要几个的阶段。其他围绕这几个阶段的重要过程。

    启动过程(绿色的):

    1.按下电源,引导芯片从预定义的地方(固化在ROM中),加载引导程序到RAM。

    2.引导程序:BootLoader,Android内核启动前的程序,为内核运行提供必要的条件。a,检测外部的RAM以及加载对第二阶段有用的程序;b,引导程序设置网络、内存等。

    3.内核:内核的启动后,设置缓存,受保护的内存,调度和加载驱动程序。 当内核完成系统设置时,它会在系统文件中查找“init”。

    4.init进程:两个主要责任(1)挂在目录(2)运行init.rc脚本。

    5.Zygote:虚拟器进程,预加载和初始化核心库。

    Zygote会执行一个app_process可执行文件,在这个文件中首先添加了Android运行时环境,在Android运行时中调用了ZygoteInit.java,这就从c++代码跳到了java代码。
    在ZytofeInit.java代码中首先设置了Java虚拟机的堆内存空间,然后启动一个类加载器加载Android启动依赖的类比如Activity等四大组件,dialog等UI的类,然后分出一个子进程启动SystemServer系统服务

    6.系统服务:如电源管理器,电话注册,上下文管理器等。

    7.引导完成:ACTION_BOOT_COMPLETED开机启动广播发出。

    开机过程的关键log[串口log]

    • "Preparing for EL3 exit to normal world, LK"

    如果串口log里面没有走到这里,说明在PL就卡住了,这句表示进入LK

    • "lk finished --> jump to linux kernel"

    如果串口log里面没有走到这里,但是上面走到了,说明在lk卡住了,这句表示进入kernel

    • "Kernel_init_done"

    这句表示kernel初始化完成了,正准备启动init进程,如果这就没有走到:请搜索关键字initcall,
    initcall是顺序执行例如module_init注册的init函数,看看卡在哪个call back上

    • "BOOTPROF"

    这是开机过程中,每走过一个重要阶段都会打印的标志,例如上面Kernel_init_done这一句就会打上这个标志

    • "init: init first stage started"

    这句表示init进程正常起来执行

    • "fs_mgr" 和"e2fsck"

    这里标志是在检查和mount 文件系统,如果失败会有如下log:fs_mgr_mount_all returned an error                           fs_mgr_mount_all returned unexpected error 255

    • "zygote"

    Starting service 'zygote':这里表示要启动zygote,如果没有这一句表示zygote还没启动,则要检查之前的initrc                 执行情况,文件系统mount情况

    • "SysServerInit_START"

    启动system_server

    • "system_server"

    这里表示system_server有起来

    • "BOOT_Animation:END"

    表示开机动画正常结束,进入安卓

  • 相关阅读:
    和类的初识
    IIFE
    闭包的二次理解
    5分钟搞懂ECE雾计算
    机智云推出设备联动API,打造智能家居场景化
    神奇的【设备联动API】,助力智能家居/家电场景化
    STM32峰会2017:半小时开发基于STM32的室内智能环境监测仪
    STM32峰会:机智云MCU代码开发工具降低智能硬件开发成本
    广和通G510联网固件首发,支持连接机智云
    各种STM32连接机智云案例汇总(不定期更新,欢迎补充)
  • 原文地址:https://www.cnblogs.com/fanglongxiang/p/10690249.html
Copyright © 2011-2022 走看看