行业报告 AI展会 数据标注 标注供求
数据标注数据集
主页 > 技术社区 > 移动端 > 正文

Android 系统启动

Android的启动流程作为整个Android系统的开端,这部分的流程时刻影响着应用层的方方面面。这些知识也是作为Android开发进阶必须要了解的一部分。

 
 

因此,本文通过流程图来探索一下Android的启动过程。

 


启动流程
  1. Android设备上电后,首先会从处理器片上ROM的启动引导代码开始执行,片上ROM会寻找Bootloader代码,并加载到内存。(这一步由“芯片厂商”负责设计和实现)
  2. Bootloader开始执行,首先负责完成硬件的初始化,然后找到Linux内核代码,并加载到内存。(这一步由“设备厂商”负责设计和实现)
  3. Linux内核开始启动,设置缓存、被保护存储器、计划列表,加载驱动。当内核完成系统设置,它首先在系统文件中寻找”init”文件,然后启动root进程或者系统的第一个进程--init程序。
  4. init进程启动:初始化和启动属性服务,并且启动Zygote进程
    init程序最核心的工作主要有3点:
  • 创建和挂载一些系统目录/设备节点,设置权限,如:/dev, /proc, and /sys
  • 解析 init.rc 和 init.<hardware>.rc,并启动属性服务,以及一系列的服务和进程。
  • 显示boot logo,默认是“Android”字样
  1. Zygote进程启动:创建java虚拟机并为java虚拟机注册JNI方法,创建服务器端Socket,启动SystemServer进程。
  2. SystemServer进程启动: 启动Binder线程池和SystemServiceManager,并且启动各种系统服务。
  3. Launcher启动:被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。

init进程

init进程是Android系统中用户控件的第一个进程,进程号是1。

  • 创建和挂载启动所需的文件目录:
    这是init进程启动开始的第一步,其中挂载了tmpfs、devpts、proc、sysfs和selinuxfs共5种文件系统,这些都是系统运行时目录,顾名思义,只在系统运行时才会存在,系统停止时会消失。
  • 初始化和启动属性服务
  • 解析init.rc配置文件并启动Zygote进程

Zygote

1.创建了一个Server端的Socket
2.预加载类和资源
3.启动了SystemServer进程
4.等待AMS请求创建新的应用程序进程

SystemServer

1.启动Binder线程池
2.创建了SystemServiceManager(用于对系统服务进行创建、启动和生命周期管理)
3.启动了各种服务

服务

服务包含2部分,一部分是本地服务,另一部分是Android服务,所有的这些服务都会向ServiceManager进程注册,由它统一管理,这些服务的启动过程介绍如下:

本地服务

本地服务是指运行在C++层的系统守护进程,一部分本地服务是init进程直接启动的,它们定义在init.rc脚本和init.<hardware>.rc中,如 ueventd、servicemanager、debuggerd、rild、mediaserver等。还有一部分本地服务,是由这些本地服务进一步创建的,如mediaserver服务会启动AudioFlinger, MediaPlayerService 等本地服务。

Android服务

Android服务是指运行在Dalvik虚拟机进程中的服务,这些服务的创建过程描述如下:
init进程会执行app_process程序,创建Zygote进程,它是Android系统最重要的进程,所有后续的Android应用程序都是由它fork出来的。
Zygote进程会首先fork出"SystemServer"进程,"SystemServer"进程的全部任务就是将所有的Android核心服务启动起来,这些服务包括:


 
 
 

当所有的服务都启动完毕后,SystemServer会打印出“Making services ready”,然后通过ActivityManager启动Home界面,并发送“ACTION_BOOT_COMPLETED”广播消息。

注意,这些Android服务并没有各种运行在独立的进程中,它们由SystemServer以线程的方式创建,所以都运行在同一个进程中,即SystemServer进程中。

 


微信公众号

声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

相关推荐:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
SEM推广服务

Copyright©2005-2026 Sykv.com 可思数据 版权所有    京ICP备14056871号

关于我们   免责声明   广告合作   版权声明   联系我们   原创投稿   网站地图  

可思数据 数据标注行业联盟

扫码入群
扫码关注

微信公众号

返回顶部