zygote进程是由init进程启动的,在android中所有应用进程以及系统服务进程都是由zygote fork()出来的,并且system_server是zygote的嫡长子,
当zygote完成启动立启动system_server,这是在zygote.rc中的参数--start-system-serve
决定的.
在aosp/frameworks/base/cmds/app_process/app_main.cpp
的main函数里runtime.start("com.android.internal.os.ZygoteInit", args, zygote);
,
进入java层的aosp/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
的main函数
SystemServer和Zygote是Android java世界的两大支柱,SystemServer是Zygote孵化出来的进程,进程名为system_server,几乎所有的系统服务都在该进程中,eg:AMS,PMS,WMS .etc
学习知识,重在实践.系列文章按照罗升阳大神的blog进行实践.向罗大神致敬!实现的是在从驱动层,HAL层,系统添加,JNI方法添加,AIDL方法添加,配置SELinux策略.
由于android版本的差异,部分代码和配置需要修改,kernel和android源码版本不一样才能出错,这样才有试错,学习成长的机会.本文是参看<<Android系统源代码情景分析(修订版)>>以及罗大神的blog和其他网友的blog而来.