Android的初始化流程

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

二、启动Linux守护进程(daemons)

    启动USB守护进程(usbd):管理USB连接

    启动Android Debug Bridge守护进程(adbd):管理ADB连接

    启动Debug守护进程(debuggerd):管理调试进程请求

   启动无线接口守护进程(rild):管理无线通信

    同时启动Zygote进程:

    1.初始化一个Dalvik虚拟机实例

    2.装载Socket请求所需的类和监听

    3.创建虚拟机实例来管理应用程序的进程

三、初始化runtime进程

    1.初始化服务管理器(Service Manager)

    2.注册服务管理器,以它作为默认的Binder服务的Context管理器

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

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

    系统服务启动Android管理服务,并注册到服务管理器上。

系统加载完所有服务后处于等待状态,等待程序运行。


注释:内容来自《Android技术内幕》

推荐阅读更多精彩内容