Android启动流程③SystemServer启动过程
上一篇分析了Zygote进程启动过程,了解到Zygote进程启动了 SyetemServer 进程,接下来开始学习SyetemServer进程的启动过程。
Zygote 启动 SystemServer
ZygoteInit 在 main 函数中通过调用 startSystemServer 函数启动 SystemServer进程。
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
|
|
代码可知实际上是调用了 handleSystemServerProcess 来启动 SystemServer进程。
Android启动流程②Zygote进程启动过程
上一篇分析了init进程的启动过程,最后就是创建Zygote进程,这篇我们将了解Zygote进程是什么,它由什么功能。
在Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程fork出来的,Zygote进程在启动时会创建DVM,因此通过Zygote进程创建的应用程序和SystemServer都可以在内部获得一个DVM的实例。
下面开始分析Android 7.0 中Zygote的启动过程:
app_main.cpp
init进程启动Zygote是通过调用app_main.cpp中的mian函数中的AppRuntime的start函数实现的,我们从app_main.cpp中的mian函数开始分析:
目录位于frameworks/base/cmds/app_process/app_main.cpp
Android启动流程①init进程分析
简介
当Linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,它的生命周期贯穿整个linux 内核运行的始终, linux中所有其它的进程的共同始祖均为init进程。
Android系统是运作在linux内核上的,为了启动并运行整个android系统,google实现了android系统的init进程。
Android系统架构与源码目录
Mac编译Android源码
编译Android源码
本机的系统环境如下:
- macOs Sierra 10.12.5
- JDK 1.8.0_131
- Xcode 8.3.3
- 本地源码路径 /Volumes/android/aosp
- 源码版本 android-7.1.2_r1**
配置系统环境
- Mac创建大小写分区映像 120G
- 安装JDK
- 安装 xcode 命令行工具
- 安装macports,并配置到系统环境
export PATH=/opt/local/bin:$PATH
- 通过 macports 安装 make , git 以及 GPG
|
|