Android 6.0 开机流程

来源:互联网 发布:unity3d室内漫游下载 编辑:程序博客网 时间:2024/05/21 17:37

Linux 内核启动后会调用android 的 init 程序,在系统根目录下的 init 程序:

root@G0215D:/ # ls -l *init
-rwxr-x--- root     root      1146760 1970-01-01 08:00 init

1. init 程序代码在安卓源码 system/core/init 目录下,可以看看 init.cpp 里的 main 函数。

2. init 程序主要处理 *.rc 文件,进行安卓环境初始化和相关启动核心服务。
3. 在 init.zygote64.rc 中定义了 zygote 进程的启动,也就是安卓虚拟机启动:

service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server
    class main
    socket zygote stream 660 root system
    onrestart write /sys/android_power/request_state wake
    onrestart write /sys/power/state on
    onrestart restart media
    onrestart restart netd
    writepid /dev/cpuset/foreground/tasks

4. zygote 代码位于 frameworks/base/cmds/app_process/app_process.cpp中

 这个程序用来启动虚拟机,并且调启动纯Java程序 ZygoteInit 进行初始化;

  frameworks/base/core/java/com/android/internal/os/ZygoteInit.java 

5. ZygoteInit 的main函数中接收参数,主要启动 SystemServer

 frameworks/base/services/java/com/android/server/SystemServer.java

6. SystemServer 负责启动android系统需要的各种服务。比如启动 AMS,PMS,SystemUI等;





原创粉丝点击