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及相关逻辑模块。

相关推荐
小书房4 小时前
Kotlin的by
android·开发语言·kotlin·委托·by
jinanwuhuaguo5 小时前
(第二十八篇)OpenClaw成本与感知的奇点——从“Token封建制”到“全民养虾”的本体论地基
android·人工智能·kotlin·拓扑学·openclaw
xxjj998a6 小时前
Laravel4.x核心特性全解析
android·mysql·laravel
JoshRen6 小时前
2026教程:在Android Termux中集成Gemini 3镜像站实现移动端文档自动处理与摘要生成(附国内免费方案)
android
诸神黄昏EX7 小时前
Android Google KEY
android
一起搞IT吧7 小时前
Android性能系列专题理论之十一:block IO问题分析思路
android·嵌入式硬件·智能手机·性能优化
小妖6668 小时前
怎么用 tauri 创建编译 android 应用程序
android·tauri
鸟儿不吃草9 小时前
安卓实现左右布局聊天界面
android·开发语言·python
xxjj998a10 小时前
Laravel 1.x:PHP框架的原始魅力
android·php·laravel
formula1000010 小时前
在iOS/安卓上远程连接任何 Agent!Claude、Codex、Copilot、Gemini、OpenCode 等
android·copilot