cover: http://q9j7c7ivg.bkt.clouddn.com/2020-05-03-15884373277864.png
tags:
- 源码
- 启动流程
- SystemServer
categories: - [Android, 系统]
大致流程

源码追踪
SystemServer启动
ZygoteInit.java
1 | public static void main(String argv[]) { |
SystemServer进程fork
Zygote.java
1 | public static int forkSystemServer(int uid, int gid, int[] gids, int debugFlags, |
com_android_internal_os_Zygote.cpp
主要:fork创建新进程SystemServer,采用copy on write方式(为了高效先全部复制,等需要的时候在修改)另外, fork方法会有两次返回,分别返回子进程和父进程的pid
1 | static jint com_android_internal_os_Zygote_nativeForkSystemServer( |
开始执行SystemServer进程fork后的ZygoteInit操作
ZygoteInit.java
1 | private static void handleSystemServerProcess( |
RuntimeInit.java
1 | public static final void zygoteInit(int targetSdkVersion, String[] argv, ClassLoader classLoader) |
ZygoteInit.java
1 | public static void main(String argv[]) { |
SystemServer进程开始执行SystemServer.main方法
SystemServer.java
1 | public static void main(String[] args) { |
依次启动引导服务、核心服务、其它服务
1 | private void startBootstrapServices() { |
1 | private void startCoreServices() { |
1 | private void startOtherServices() { |
推荐阅读:图形系统总结
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment