没有合适的资源?快使用搜索试试~ 我知道了~
Android开机启动流程.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 60 浏览量
2022-07-13
22:40:04
上传
评论
收藏 227KB PDF 举报
温馨提示
试读
13页
Android开机启动流程.pdf
资源推荐
资源详情
资源评论
Android booting
1
Android 的开机流程
1. 系统引导 bootloader
1) 源码: bootable/bootloader/*
2) 说明:加电后, CPU 将先执行 bootloader 程序,此处有三种选择
a) 开机按 Camera+Power 启动到 fastboot,即命令或 SD 卡烧写模式, 不加载内核及文件
系统,此处可以进行工厂模式的烧写
b) 开机按 Home+Power 启动到 recovery 模式,加载 recovery.img,recovery.img 包含内
核,基本的文件系统,用于工程模式的烧写
c) 开机按 Power,正常启动系统,加载 boot.img, boot.img 包含内核,基本文件系统,
用于正常启动手机(以下只分析正常启动的情况)
2. 内核 kernel
1) 源码: kernel/*
2) 说明: kernel 由 bootloader 加载
3. 文件系统及应用 init
1) 源码: system/core/init/*
2) 配置文件: system/rootdir/init.rc ,
3) 说明: init 是一个由内核启动的用户级进程,它按照 init.rc 中的设置执行:启动服务
(这里的服务指 linux 底层服务,如 adbd 提供 adb 支持, vold 提供 SD 卡挂载等),执行命
令和按其中的配置语句执行相应功能
4. 重要的后台程序 zygote
1) 源码: frameworks/base/cmds/app_main.cpp 等
2) 说 明 : zygote 是 一 个 在 init.rc 中 被 指 定 启 动 的 服 务 , 该 服 务 对 应 的 命 令 是
/system/bin/app_process
a) 建立 Java Runtime,建立虚拟机
b) 建立 Socket 接收 ActivityManangerService 的请求,用于 Fork 应用程序
c) 启动 System Server
5. 系统服务 system server
1) 源码: frameworks/base/services/java/com/android/server/SystemServer.java
2) 说明:被 zygote 启动,通过 System Manager 管理 android 的服务(这里的服务指
frameworks/base/services 下的服务,如卫星定位服务,剪切板服务等)
6. 桌面 launcher
1) 源码: ActivityManagerService.java 为入口, packages/apps/launcher*实现
2) 说明:系统启动成功后 SystemServer 使用 xxx.systemReady() 通知各个服务,系统已
经就绪, 桌面程序 Home 就是在 ActivityManagerService.systemReady() 通知的过程中建立的,
最终调用 ()启 launcher
7. 解锁
1) 源码:
frameworks/policies/base/phone/com/android/internal/policy/impl/*lock*
2) 说 明 : 系 统 启 动 成 功 后 SystemServer 调 用 wm.systemReady() 通 知
WindowManagerService , 进 而 调 用 PhoneWindowManager , 最 终 通 过
LockPatternKeyguardView 显示解锁界面,跟踪代码可以看到解锁界面并不是一个 Activity ,
这是只是向特定层上绘图,其代码了存放在特殊的位置
8. 开机自启动的第三方应用程序
Android booting
2
1) 源码:
frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
2) 说 明 : 系 统 启 动 成 功 后 SystemServer 调 用
ActivityManagerNative.getDefault().systemReady() 通 知 ActivityManager 启 动 成 功 ,
ActivityManager 会 通 过 置 变 量 mBooting , 通 知 它 的 另 一 线 程 , 该 线 程 会 发 送 广 播
android.intent.action.BOOT_COMPLETED 以告知已注册的第三方程序在开机时自动启动。
9. 总结
综上所述, 系统层次关于启动最核心的部分是 zygote(即 app_process)和 system server,zygote
它负责最基本的虚拟机的建立,以支持各个应用程序的启动,而 system server 用于管理
android 后台服务,启动步骤及顺序。
10. 参考
http://blog.csdn.net/basonjiang_sz/category/648399.aspx
Android booting
3
Android 启动过程详解
Android 从 Linux 系统启动有 4 个步骤;
(1) init 进程启动
(2) Native 服务启动
(3) System Server ,Android 服务启动
(4) Home 启动
总体启动框架图如:
第一步: initial 进程 (system/core/init)
init 进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始
运行,并已初始化所有的设备驱动程序和数据结构等) 之后,就通过启动一个用户级程序 init
剩余12页未读,继续阅读
资源评论
wxj15659998286
- 粉丝: 1
- 资源: 10万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功