Android 系统启动流程

Power on:当设备处于关闭状态时,设备接通电源后处理器会开始启动先前嵌入在 ROM (只读存储载体) 中的小型程序,该程序被称为 bootloader。bootloader 负责进行引导加载程序,初始化部分硬件和外设,如 RAM、闪存和 USB 控制器等。

Bootloader:一旦 bootlaoder 初始化完成,它将检查定义在它上面的内核映像 (zImage 或 Image) 文件,并将其载入内存。然后 bootloader 会跳到内核的执行点,并开始了解决定系统进程初始化方法的各种硬件信息。在这个阶段,内核会检测和初始化 RAM、CPU 和其他外围设备(例如 GPU、Wi-Fi 和蓝牙等)。同时,内核还会读取 DTB(Device Tree Blob 设备树)、LDTB(中间二进制格式的DTB)或者硬编码内置在设备启动板子里的配置信息,其中包括其他设备节点、驱动程序信息和开启自消息传递(utilty messages用来底层打印调试信息还可能作为缓存操作系统日志文件的设备节点), 以及与设备本身相关的其它参数和设置。

Kernel:在完成第2步之后,在Android关键环节中一个非常至关重要的组成部分(内核)就被载入。在这个阶段,内核将启用初始化程序,它的主要功能是初始化各种从 bootloader 接收到的硬件信息和设备树中默认配置的硬件参数,以准备启动 init 进程。同时还需要检查文件系统、磁盘分区和其余的存储介质。

Init 进程:每台 Android 设备都有一个 init 进程构成的进程树即 RC(init.rc, 由默认路径 /init.rc 给出) 启动环境,在内核初始化完成之后,Android 的初始化进程 init 将成为第一个用户空间进程。Init 进程有守护进程的角色,它根据 /init.rc 中定义的配置来启动各种系统服务。

System Server 进程:init 进程启动的第一个重要子进程是 System Server,一个包含 Android 设备所有系统级服务的进程。System Server 进程首先创建对 Activity Manager (AM) 类的实例,并注册自身作为系统服务管理器。此后,System Server 进程调用其他系统服务的 addService() 方法,并使其相互绑定和建立依赖关系。

Zygote 进程:Zygote 是运行在 Android 系统上的 Java 虚拟机。具体而言,它是虚拟机的一个特殊实例,可以通过共享面向对象的代码来加速应用程序的启动速度。当一个面向 Android 平台上运行的 Java 应用获取启动信号后,Android 框架内核会通过 zygote 创建应用,从而节省时间和内存。Zygote 进程负责孵化新应用程序进程。

Launchers:设备的 Launcher 负责将 Android 的工具、组件和第三方应用程序组合在一起。Launchers 是应用启动器,可以改变系统的屏幕布局、显示页面等,它消除了用户访问存储在其他不同位置上的应用程序的需要。Launchers 通常是主屏幕或"桌面",其中包括各种快捷图标以及在桌面上对其他重要资源的快速访问。

加载桌面:Launcher 进程负责在启动器上渲染家解直接到输出屏幕上完成显示,启动并创建各种软件窗口,并用于操作符等其它细节级别的 UI 交互部分。界面处理以硬件控制为主导(每个UI帧缓冲区刷新),同时也支持许多显式 API 函数,使普通开发者可以轻松深入访问视图层.presentation layer及相关逻辑模块。

相关推荐
Dovis(誓平步青云)3 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码5 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程5 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程9 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程10 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程10 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓10 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程10 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
supabc12311 小时前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium