云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > AndroidL系统启动及加载流程分析

AndroidL系统启动及加载流程分析

  • 62 次阅读
  • 3 次下载
  • 2025/6/24 2:48:11

Android L系统启动及加载流程分析

1、概述

Android L的启动可以分为几个步骤:Linux内核启动、init进程启动、native系统服务及java系统服务启动、Home启动,主要过程如下图:

服务管理器,负责native和java服务的注册、查询显示相关初始化、控制开关机动画bootanimServiceManger进程SurfaceFlinger进程启动native服务MediaServer进程Linux内核Init进程AudioFingerMediaPlayerService服务注册AudioPolicyService...AndroidRuntimeZygote进程registerZygoteSocketPreloadAndroidL会启动两个ZygoteSystemServer进程启动java服务PowerManagerServiceActivityManagerServicePackageManagerServiceWindowManagerService...Home启动 图1

整个启动流程跟4.4及之前的版本相差不多,只是有个别不同之处,本文我们主要分析Linux内核启动之后的过程。

2、启动过程分析

2.1 init进程启动

当系统内核加载完成之后,会启动init守护进程,它是内核启动的第一个用户级进程,是Android的一个进程,进程号为1,init进程启动后执行入口函数main(),主要操作为:

Main()创建挂载目录(dev\\sys\\proc等)处理kernel cmdline获取开机原因等Selinux初始化,加载策略文件顺序解析rc文件执行rc文件中的动作for循环不退出,作为property服务进程存在 图2

AndroidL上将selinux的安全等级提高了,设为了enforcing模式,4.4上是permissive模式。

解析rc脚本文件,即init.rc脚本,该文件是Android初始化脚本,定义了一系列的动作和执行这些动作的时间阶段earyl-init、init、early-boot、boot、post-fs等阶段。init 进程main函数中会根据这些阶段进行解析执行。AndroidL上为了流程更清晰,增加了charger(充电开机)、ffbm(工厂模式)、以及late-init阶段,实际上这些阶段是对其他阶段的组合执行,比如late-init:

2.2 ServiceManager的启动

servicemanager的启动就是init进程通过init.rc脚本启动的:

源码在frameworks/native/cmds/servicemanager/service_manager.c中,servicemanager是服务管理器,它本身也是一个服务(handle=0),通过binder调用,为native和Java系统服务提供注册和查询服务的,即某个服务启动后,需要将自己注册到servicemanager中,供其他服务或者应用查询使用。AndroidL上servicemanger中在处理注册和查询动作之前添加了selinux安全检测相关的处理。

2.3 SurfaceFinger、MediaServer进程启动

Android4.4以前,surfacefinger的启动根据属性system_init.startsurfaceflinger,决定是通过init.rc启动还是systemserver进程启动,之后的版本包括AndoridL都是通过init.rc启动的:

启动后会向servicemanager进程注册服务中,该服务启动时主要功能是初始化整个显

示系统,并且在初始化完成后,启动开机动画进程:

当开机过程完成点亮屏幕之前,WindowManagerService通过binder通信通知SurfaceFinger停止开机动画,SurfaceFinger服务会调用 bootFinished函数设置service.bootanim.exit属性,开机动画进程bootanim判断该属性为1后,停止播放开机动画。

MediaServer也是init启动较早的一个服务进程:

对应代码在frameworks/av/media/mediaserver/main_mediaserver.cpp,该服务启动时会创建一些音频、camera相关的native服务,这些native服务也会注册到servicemanager中。在播放开机动画时如果需要播放开机音,bootanim需要等待mediaserver初始化完成才会播放

搜索更多关于: AndroidL系统启动及加载流程分析 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Android L系统启动及加载流程分析 1、概述 Android L的启动可以分为几个步骤:Linux内核启动、init进程启动、native系统服务及java系统服务启动、Home启动,主要过程如下图: 服务管理器,负责native和java服务的注册、查询显示相关初始化、控制开关机动画bootanimServiceManger进程SurfaceFlinger进程启动native服务MediaServer进程Linux内核Init进程AudioFingerMediaPlayerService服务注册AudioPolicyService...AndroidRuntimeZygote进程registerZygoteSocketPreloadAndroidL会启动两个ZygoteSystemServer进程启动java服务PowerManage

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com