美文网首页Android Framework
深入理解Android Framework(二) - Andro

深入理解Android Framework(二) - Andro

作者: 林栩link | 来源:发表于2020-04-08 20:15 被阅读0次

    前言

    本篇是学习笔记,并非原创。

    正文

    Android设备的启动过程

    在上一节的Android架构与源码概览中列出了Google给出的一张自上而下的Android系统的架构图,Android设备启动过程则正好相反。

    Android设备的启动过程分为
    BootLoader -> Linux Kernel -> Android Native -> Android Framework -> APP


    • 1.Boot Loader

    Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境 。

    作为非嵌入式软件层的开发者,我们当然不必过于深究Boot Loader的具体工作原理,了解即可。

    • 2.Linux Kernel

    众所周知,开发一个操作系统非常的困难,涉及到系统安全、进程通信、内存管理等等都是非常复杂,需要耗费巨大的开发成本,所以Android一开始就复用了开源的Linux内核。
    Linux Kernel主要完成硬件设置、驱动加载,并根据BootLoader中设置的参数启动系统,同时启动Android的“始祖进程” - init进程

    • 3.Android Native

    当init进程启动后,整个系统的启动过程就来到了AndroidNative层中,在这一层中,init进程通过解析init.rc脚本,来构建整个Android系统的雏形。

    init进程在解析init.rc脚本,启动了一个Android中最重要的进程-Zygote,Zygote是Android系统的第一个Java进程,所有的Java进程都是Zygote进程的子进程。

    init.rc脚本是我们个性化定制Android系统,控制Android系统启动状态的重要工具,关于init.rc脚本我们以后再介绍。

    • 4.Android Framework

    Zygote进程启动后,系统的启动流程继续向上来到了AndroidFramework层。

    Zygote进程作为Android中最重要的进程,它负责加载Android虚拟机、启动SystemServer、ServiceManger以及MediaServer等Android系统的关键进程,这些进程我们以后再详细介绍,现在只需要有个简单的认知即可。

    System Server进程:负责启动和管理整个Java framework,包含ActivityManager,PowerManager等服务。

    Media Server进程:负责启动和管理整个C++ framework,包含AudioFlinger,Camera Service等服务。

    • 5.APP

    Zygote进程完成各个系统的内部服务后,就该启动用户界面了(Launcher),我们看到的系统主界面其实就是一个系统级的APP,还有其他的例如Email、Phone、Browser、Message等等都是由Zygote启动的。

    总结

    本篇简略的讲解了Android设备的启动流程,在此基础上我们先建立一个简单的认识,对于其中的关键点例如init.rc、Zygote、SystemServer等等以后再做介绍。

    参考文献

    Boot Loader - 百度百科
    Linux Kernel - 百度百科
    Android系统启动过程从下往上的一个过程
    深入理解Android内核设计思想(第二版)

    相关文章

      网友评论

        本文标题:深入理解Android Framework(二) - Andro

        本文链接:https://www.haomeiwen.com/subject/axibphtx.html