Android10系统启动概述
首先用一张图看一下整体的启动流程

因为android系统底层是基于Linux Kernel, 所以当Kernel启动后会创建init进程,init进程是Linux系统中用户空间的第一个进程(pid=1)。可以说android中的所有其他进程的共同祖先都是init
一 init进程启动
Android 10 系统中init入口函数从init.cpp 挪到了main.cpp 源码路径 system/core/init/main.cpp
int main(int argc, char** argv) {
if (!strcmp(basename(argv[0]), "ueventd")) {
return ueventd_main(argc, argv);
}
//参数个数大于1时,执行下面的操作
if (argc > 1) {
//参数为subcontext,启动日志系统,
if (!strcmp(argv[1], "subcontext")) {
android::base::InitLogging(argv, &android::base::KernelLogger);
const BuiltinFunctionMap function_map;
return SubcontextMain(argc, argv,