博客
关于我
【安卓开发系列 -- 系统分析】Framework -- Android 系统一般启动流程简介
阅读量:371 次
发布时间:2019-03-04

本文共 931 字,大约阅读时间需要 3 分钟。

Android系统启动流程简介

Android系统启动流程可分为几个关键阶段,每个阶段都有其特定的功能和作用。以下从高到低详细阐述各个层次的启动过程。

一、整体启动流程概述 Android系统启动流程主要包含以下几个层次:

  • Loader层:包括BootRom和BootLoader
  • Kernel层:Android内核
  • Native层:init进程及相关系统服务
  • Framework层:AMS、PMS等核心服务
  • Application层:SystemUI、Launcher等用户应用
  • 二、详细启动流程解析

  • Bootloader引导程序 Bootloader的主要职责包括:
    • 硬件初始化:完成设备的基础配置
    • 系统加载:将内核和根文件系统从存储设备加载到内存中
    • 加速启动:优化内核的启动效率
    1. Linux内核启动
      • 初始化软硬件环境:配置网络、存储、内存等
      • 加载驱动:安装设备相关的硬件驱动 -挂载文件系统:完成根文件系统的访问准备 内核启动完成后,会自动启动init进程,进入Android系统的启动阶段。
      1. init进程 作为Linux系统中用户空间的第一个进程(进程号1),init进程的主要功能包括:
        • 文件系统管理
        • 属性服务提供
        • 解析init.rc脚本
        • 创建Zygote进程
        1. Zygote进程 Zygote进程是Android系统中所有应用进程的父进程,其主要作用是:
          • 创建应用进程
          • 管理应用进程的生命周期
          • 提供基础的服务支持
          1. System Server进程 System Server是Android系统的核心服务进程,主要功能包括:
            • 启动系统服务:ActivityManagerService、PackageManagerService、WindowManagerService等
            • 提供硬件服务:与HAL层通信
            • 应用程序接入:通过System Server获取系统服务句柄
            1. Launcher应用 作为Android系统的第一个用户应用,Launcher的主要职责是:
              • 初始化桌面界面
              • 启动其他应用程序
              • 提供用户交互入口

              三、参考与致谢 本文内容基于个人学习笔记,参考了多方资料,包括专业书籍和网络资源。在此对所有提供帮助的作者表示感谢。如有不当之处,请随时指出。

    转载地址:http://gvmr.baihongyu.com/

    你可能感兴趣的文章
    Nodejs教程09:实现一个带接口请求的简单服务器
    查看>>
    nodejs服务端实现post请求
    查看>>
    nodejs框架,原理,组件,核心,跟npm和vue的关系
    查看>>
    Nodejs概览: 思维导图、核心技术、应用场景
    查看>>
    nodejs模块——fs模块
    查看>>
    Nodejs模块、自定义模块、CommonJs的概念和使用
    查看>>
    nodejs生成多层目录和生成文件的通用方法
    查看>>
    nodejs端口被占用原因及解决方案
    查看>>
    Nodejs简介以及Windows上安装Nodejs
    查看>>
    nodejs系列之express
    查看>>
    nodejs系列之Koa2
    查看>>
    Nodejs连接mysql
    查看>>
    nodejs连接mysql
    查看>>
    NodeJs连接Oracle数据库
    查看>>
    nodejs配置express服务器,运行自动打开浏览器
    查看>>
    NodeMCU教程 http请求获取Json中文乱码解决方案
    查看>>
    Nodemon 深入解析与使用
    查看>>
    NodeSession:高效且灵活的Node.js会话管理工具
    查看>>
    node~ http缓存
    查看>>
    node不是内部命令时配置node环境变量
    查看>>