Android Framework之Zygote

📅 2026/8/22 12:25:04
Android Framework之Zygote
什么是ZygoteZygote中文翻译为“受精卵”正如其名它主要用于孵化子进程。是 Android 系统中的一个核心进程是所有 Android 应用程序进程的父进程它在系统启动时被初始化。Zygote 的主要任务是加载系统的核心类库如 Java 核心库和 Android 核心库然后进入一个循环等待请求来创建新的 Android 应用程序进程。当一个新的 Android 应用程序需要启动时Zygote 会 fork 出一个新的进程这个新的进程继承了 Zygote 的内存空间包括已经预加载的类库。这种方式可以大大提高新进程的启动速度因为不需要再次加载这些类库。Zygote的启动流程有哪些在 init.rc 文件导入init.zygote64_32.rc文件在init.zygote64_32.rc文件中执行class main 来启动 Zygote进程。为什么要有ZygoteZygote用来作为一个开启APP进程的管理者防止资源过度耗费为什么要用Socket方式启动app进程而不用Bind呢因为安全如果使用bind容易造成hook使进程执行过程中被拦截而挂掉但是使用Socket的话Zygote作为一个公共服务类可以做到一对多的模式Client-Service模型。LauncherAPP的启动流程通过ActivityManager.getService()绑定AMS从而获取到SystemServer进程中的AMS引用执行startActvity()方法中Socket发送消息给ZygoteZygote通过fork()方法执行ActivityThread.Main()来创建APP进程。通过attach读取AndroidManifest.xml中的MainActivity启动APP界面。1. 系统启动详细流程init 怎么加载 zygote, zygote 怎么加载 System_server)整体大流程Linux内核启动 → 挂载根文件系统 → 执行 /init 可执行程序(init进程 PID1) → init解析配置启动zygote → zygote创建Java虚拟机预加载类资源 → zygote fork 出 system_server → system_server 启动Android Framework各系统服务