android初始化接口 (android手机初始化)

1、启动Linux基础系统,然后引导加载Linux Kernel并启动初始化进程(Init)。

androidinit启动流程,android开发配置

启动Init进程

2、启动Linux守护进程(daemons)。这个过程主要需要启动以下内容:

a、启动USB守护进程(usbd)来管理USB连接。

b、启动Android Debug Bridge守护进程(adbd)来管理ADB连接。

c、启动Debug守护进程(debuggerd)来管理调试进程的请求(包括内存转换等)。

d、启动无线接口守护进程(rild)来管理无线通信。

androidinit启动流程,android开发配置

启动Linux守护进程

3、在启动Linux守护进程的同时还需要启动Zygote进程。它主要包括以下需要启动和注册内容:

a、初始化一个Dalvik虚拟机实例。

b、装载Socket请求所需的类和监听。

c、创建虚拟机实例来管理应用程序的进程。

androidinit启动流程,android开发配置

启动Zygote进程

4、初始化runtime进程,在这个过程中需要处理以下操作:

a、初始化服务管理器。

b、注册服务管理器,以它作为默认Binder服务的Context管理器。

androidinit启动流程,android开发配置

初始化runtime进程

5、启动系统服务。

runtime进程初始化之后,runtime进程将发送一个请求到Zygote,开始启动系统服务,这时Zygote将为系统服务进程建立一个虚拟机实例,并启动系统服务。

androidinit启动流程,android开发配置

启动系统服务

6、启动本地服务并注册。

系统服务启动完后,将启动原生系统服务,主要包括Surface Flinger和Audio Flinger。这些本地系统服务将注册到服务管理器(Service Manager)作为IPC服务的目标。

androidinit启动流程,android开发配置

启动本地服务并注册

7、启动Android管理服务。

本地服务启动完后,系统服务将启动Android管理服务,Android管理服务将都被注册到服务管理器上。

androidinit启动流程,android开发配置

启动Android管理服务

8、Android启动之后运行Home和Contacts等进程。

当系统加载完所有的服务之后会处于等待状态,等待程序运行。但是,每一个应用程序都将启动一个单独的进程。如图所示,系统启动了一个Home进程和一个Contacts进程。到这里,系统的整个启动过程就结束了。

androidinit启动流程,android开发配置