android系统启动流程分析

7 启动流程分析
 7.1 系统引导bootloader
 7.2 Linux 内核
 7.3 文件系统及init进程
 7.4 重要的后台运行程序zygote
 7.5 系统服务SystemService
 7.6 桌面Launcher
 7.7 屏幕解锁

7.1 系统引导bootloader
 源码:bootable/bootoader/  上电后,CPU IROM的程序会将bootloader装载到
内存执行
 启动模式
 Camera + Power 启动到Fastboot,工厂模式,SD卡烧写模式(USB
, 网络)  Home + Power启动recovery模式
 按Power,正常开机模式
7.2 Linux 内核
源码:kernel/
 Bootloader在启动结束时,将CPU执行权交与
kernel
 Kernel 自解压,初始化内核,所有需要启动的驱
动后,启动文件系统的init进程

7.3 文件系统及init进程
 源码:system/core/init/init.c
 建立系统目录并挂载(格式:源 目的 类型)  sysfs /sys sysfs
 tmpfs /dev tmpfs
 proc /proc proc
 devpts /dev/pts devpts
 初始化控制台
 Log系统初始化
 解析并执行init.rc
 初始化环境变量
 创建挂载点并挂载
 创建一些android需要用到的文件或者目录并设置相应的权限
 启动服务(adbd, console, vold, servicemanager, zygote…)
 监听系统服务(后台程序)

7.4 重要的后台运行程序zygote
 源码:frameworks/base/cmds/app_process/app_main.c
 建立java runtime, 建立虚拟机, 注册JNI 函数,
runtime.start(“com.android.internal.os.ZygoteInit”,
startSystemServer);
 运行:com.android.internal.os.ZygoteInit:main函数
 registerZygoteSocket();//登记Listen端口
 startSystemServer();
 进入zygote服务框架: runForkMode, accept-and-fork模式,即通过
socket接收到Framework的请求,然后fork一个进程进行处理。

7.5 系统服务SystemService
 源码:frameworks/base/services/java/com/android/server/SystemServer.java
 int1:加载android_servers,执行其中的,system_init()
 源码路径:frameworks/base/cmds/system_server/library/system_init.cpp
 启动C/C++服务:SurfaceFlinger, AudioFlinger, MediaPlayerService, CameraService, AudioPolicyService
 Init2(由system_init在最后时期通过JNI反调用): SystemServer启动各种java系统服务, 如  PowerManagerService
 ActivityManagerService
 AudioService
 PackageManagerService
 BatteryService
 FsLedService
 各种systemReady()通知各个服务,系统已经就绪

7.6 桌面Launcher/home
源码:packages/apps/Launcher/*
 Android系统启动的第一个应用,在
ActivityManagerService.systemReady()发送消息,
通知home启动
为什么Launcher第一个启动:Launcer的
AmdroidManifest.xml中intent-filter 定义了

7.7 屏幕解锁
源码目录:
frameworks/policies/base/phone/com/android/internal/
policy/impl/lock
系统启动后,一般会将系统锁住,此时必须解锁
才可以正常使用设备
锁可以自定义,以保护各人隐私

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

android framework

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值