Android系统启动过程

2020-11-11  本文已影响0人  LibraLIn

本文主要简单介绍一下 Android系统中启动的流程包括关键的api

1.Init进程

init的进程是Android系统启动的第一个进程,从名字上可以了解到 他承担了很多初始化的责任,启动过程是由bootLoader(引导程序)将系统os拉起来,等待系统内核完成系统设置后,在系统文件中找到init.rc文件。启动init进程。

init.rc是重要的配置文件 由Android的专属语言构建 是一个标签型组成,

里面比较重要的标签就是service 一般重要的系统服务都会在这里配置,系统会有专属的ServiceParser 去解析该service,解析成功后会将解析的service对象 放在一个链表的数据结构中,然后逐个启动。(文章中简化该过程 有很多系统启动的属性 包括具体怎么将链表中的service对应 感兴趣的 可以自己找一些详细的资料),                           启动同时会将service的进程相关信息初始化 进程号 内存开辟占用等等

目前就简短的介绍了一下init进程,init进程启动后会将一个重要的服务进程zygote启动,下面我们再来简短的介绍一下zygote。

2.Zygote进程

zygote其实就是app_process 这样从名字上大家就可以看出这个进程的作用和关键 想Android的ART,Dalivk虚拟机,包括各种app进程,以及系统的关键服务,都是该进程创建的。

启动该进程时候 会根据不同的系统位数 来运行不同的init.zygote.rc          然后通过jni方法从native层进入到java层

总结一下 zygote进程总共做的事情

1.创建APPRuntime调用start方法,启动zygote进程

2.创建java虚拟机,注册jni方法

3.通过jni调用zygoteinit main方法进入zygote

4. 通过registerZygoteSocket创建服务端socket,通过runSelectedLoop等待AMS请求

5.启动SystemServer。

上一篇下一篇

猜你喜欢

热点阅读