1.开机流程示意图
Android系统结构体系
image.png-
App应用层级
-
FrameWork层 ( AMS WMS PMS)
-
Native C/C++ Libraries层
-
Hardware Abstraction Layer (HAL )
硬件厂商提供各种接口,调用底层驱动,而不会把和核心底层代码贡献出来. -
Linux Kernel (Drivers驱动 BluthTooth Camera WIFI USB Audio)
2.Android系统启动流程
image.pngimage.png
-
当电源按下,会引导芯片代码从ROM(read-only-momory)开始执行,加载引导程序Loader到RAM(read-access-memory),然后开始执行.
-
启动linux内核,初始化init进程(第一个用户空间进程),加载各种驱动 bluthtooth wifi camera usb等相关工作.
1731576916397.png -
init进程会fork 一个Zygote进程,并启动,同时也会启动ServiceManager(binder服务管家)。
-
Zygote进程初始化AndroidRuntime环境,启动虚拟机,注册JNI方法,执行ZygoteInit.main()函数,创建Zygote的Socket服务,fork SystemServer进程 ,zygoteServer.runSelectLoop()进入无限循环,当System Server进程启动 AMS, PMS ,WMS等等各种服务.
-
最后到 App
3. Zygote启动流程
1730863303799.png- 初始化 AndroidRuntime (Android应用执行Java代码的运行环境)
- 启动runtime
创建虚拟机 ,注册Jni方法,使用JNI调用ZygoteInit的main()方法 - ZygoteInit.main
new ZygoteServer()创建Zygote的socket服务
r=forkSystemServer() r.run()执行main方法
zygoteServer.runSelectLoop()进入无线循环。
网友评论