导图社区 Android开机启动流程分析
Android开机启动流程分析,从Linux内核启动到Android的桌面Launcher启动
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
bootloader分区
bootloader模式
组合按键
recovery分区
Linux内核-init- recovery启动
boot分区
正常模式
Linux内核
Init程序
Init进程:第一个用户进程 1.创建一些文件并挂载设备 2.初始化和启动属性服务 3.解析init.rc文件并启动Zygote进程 根据fstab分区表挂载分区启动Zygote等/system/bin/app_process.... service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server Zygote分32位,和64位设备
App_main.cpp.main()
Zygote进程:Android系统的母进程 App_main.cpp.main()函数: 1.解析app_process的参数 2.设置当前进程名为zygote 3.调用AndroidRuntime.start
AndroidRuntime.cpp.start()
1.启动虚拟机startVM 2.注册JNI方法startReg 3.反射调用ZygoteInit.main
ZygoteInite.java.main()
1.启动预加载preload 2.startSystemServer会fork并配置子进程system_server 3.通过RuntimeInit反射调用启动SystemServer.main(在system_server进程中)
SystemServer.java.main()
1.初始化Looper,启动Binder线程池:Looper.prepareMainLooper()涉及到线程通信需用到Android消息机制 2.加载服务的JNI库:System.loadLibrary("android_servers") 3.创建SystemServiceManager 4.启动Android服务 startBootstrapService startCoreServices startOtherServices(会执行ActivitManagerService.systemReady)
ActivityManagerService.java.systemReady()
1.系统准备工作systemReady() 2.发送开机广播finishBooting() 3.启动桌面应用startHomeActivityLocked()
Launcher
系统启动流程总结
1.启动电源以及系统启动 当电源按下时引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序Bootloader到RAM,然后执行。 2.引导程序BootLoader 引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。 3.Linux内核启动 内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置,它首先在系统文件中寻找init.rc文件,并启动init进程。 4.init进程启动 初始化和启动属性服务,并且启动Zygote进程。 5.Zygote进程启动 创建JavaVM并为JavaVM注册JNI,创建服务端Socket,启动SystemServer进程。 6.SystemServer进程启动 启动Binder线程池和SystemServiceManager,并且启动各种系统服务。 7.Launcher启动 被SystemServer进程启动的ActivityManagerService会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。
startHomeActivityLocked
此活动对系统桌面进行配置: 如选择开机后启动的桌面类型等
App进程
system_server进程: 系统服务的工作进程
Zygote进程:Android系统的母进程
1.创建AppRuntime并调用其start方法,启动Zygote进程。 2.创建DVM并为DVM注册JNI. 3.通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层。 4.通过registerZygoteSocket函数创建服务端Socket,并通过runSelectLoop函数等待ActivityManagerService的请求来创建新的应用程序进程。 5.启动SystemServer进程
擦除用户数据
系统更新固件
分区刷写
通电