没有合适的资源?快使用搜索试试~ 我知道了~
Android开机启动流程.doc
2 下载量 85 浏览量
2022-11-21
14:55:29
上传
评论
收藏 142KB DOC 举报
温馨提示
试读
13页
Android开机启动流程.doc
资源推荐
资源详情
资源评论
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. 开机自启动的第三方应用程序
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
剩余12页未读,继续阅读
资源评论
yyyyyyhhh222
- 粉丝: 404
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功