Android - 体系结构与系统启动流程

325 阅读2分钟

Android 体系结构

image.png

Android也采用分层的架构设计,从高到低分别是

  • 系统应用层(System Apps)

    所有安装在手机上的系统应用都属于这一层,用户自己开发的应用也属于这一层。

  • Java API 框架层(Java API Framework)

    这一层主要提供了构建应用程序时可能用到的各种API,开发者通过这一层的API构建自己的APP,这一层也是APP开发人员必须要掌握的内容。

  • Android系统运行层(包括Android Runtime和原生态的C/C++库 Native C/C++ Libraries)

    这一层包括Android Runtime和原生态的C/C++库

  • 硬件抽象层(Hardware Abstraction Layer)

    Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。

  • Linux内核层(Linux Kernel)

    Android是基于Linux内核的(Linux内核提供了安全性、内存管理、进程管理、网络协议和驱动模型等核心系统服务),Linux内核层为各种硬件提供了驱动程序,如显示驱动、相机驱动、蓝牙驱动、电池管理等等

Android系统启动

image.png

  1. 当电源键按下时引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader到RAM中,然后执行。
  2. 引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。
  3. 当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找init.rc文件,并启动init进程。
  4. 初始化和启动属性服务,并且启动Zygote进程。
  5. 创建java虚拟机并为java虚拟机注册JNI方法,创建服务器端Socket,启动SystemServer进程。
  6. 启动Binder线程池和SystemServiceManager,并且启动各种系统服务。
  7. 被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。