返回

Android 手机开机到 APP 启动流程解析

Android

Android 手机从开机到 APP 启动的过程

开机启动

当 Android 手机开机后,CPU 会执行预设代码,加载 ROM 中的引导程序 Bootloader 和 Linux 内核到 RAM 内存中。

系统初始化

引导程序初始化各种软硬件环境,包括:

  • 启用内存管理单元 (MMU)
  • 设置时钟和内存控制器
  • 初始化显示和输入设备
  • 加载驱动程序

挂载根文件系统

内核挂载根文件系统,它包含了 Android 操作系统的核心组件。

执行 init 进程

内核执行 init 进程,它负责启动 Android 系统服务和应用程序。

启动 Android 系统服务

init 进程启动以下系统服务:

  • Zygote:负责创建和管理应用程序进程。
  • SurfaceFlinger:管理显示系统。
  • AudioFlinger:管理音频系统。

启动应用程序

当用户打开应用程序时,Android 系统会:

  1. 在 Zygote 中创建一个新的应用程序进程。
  2. 加载应用程序代码到新的进程中。
  3. 执行应用程序的 main() 函数。
  4. 创建应用程序的 Activity 并显示在屏幕上。

详细步骤

从开机到应用程序启动的详细步骤如下:

  1. 开机 :按下电源按钮,为手机供电。
  2. 执行预设代码 :CPU 执行预设代码,它位于手机的 ROM 中。
  3. 加载引导程序 :预设代码加载引导程序到 RAM 内存中。
  4. 加载内核 :引导程序加载 Linux 内核到 RAM 内存中。
  5. 初始化硬件 :内核初始化各种硬件设备,包括显示、输入和存储。
  6. 加载驱动程序 :内核加载驱动程序,以便与硬件设备进行通信。
  7. 挂载根文件系统 :内核挂载根文件系统,它包含了 Android 操作系统的核心组件。
  8. 执行 init 进程 :内核执行 init 进程,它负责启动 Android 系统服务和应用程序。
  9. 启动系统服务 :init 进程启动 Zygote、SurfaceFlinger 和 AudioFlinger 等系统服务。
  10. 启动应用程序 :当用户打开应用程序时,Android 系统在 Zygote 中创建一个新的应用程序进程,加载应用程序代码,执行应用程序的 main() 函数,并创建应用程序的 Activity 以显示在屏幕上。

总结

Android 手机从开机到应用程序启动是一个复杂的过程,涉及多种硬件和软件组件。了解这一过程对于理解 Android 操作系统的工作原理至关重要。