【android高德货车导航demo】

  android装备的启动分为三个阶段:Boot Loader, Linux Kernel,Android 系统效劳。Android系统实践上是运转在Linux Kernel之上的一系列系统效劳过程。init过程是Android中被启动的第一个过程,PID=0 。它经过解析init.rc脚原本构建出android运转初始化形状(android系统效劳依次大年夜多是在这个脚本中被启动)

  系统启动流程图可以从这个图外面看出,这个网上找的一张,这里是出处

  这里写图片刻画

  脚本包罗actions、commands、services、options四种类型声明。

  actions实践上是照顾某个触发(也叫工作),当触发(工作)爆发时运转action,格局以下:

  罕见触发有下面几种:

  boot 。这是init依次启动后触发的第一个工作

  device-added-< path>。当装备节点添加或许删除时触发工作

  device-removed-< path>。

  service-exited-< name>。当指定的name效劳存在时触发工作

  …

  services是可履行依次,方法以下

  pathname表现service依次地点门路,外面有依次源码。因为是可履行依次,一切必须有门路。

  commands和options比拟多,不一一引见。

  因为还没有编译源码,一切在source中找不到代码门路:\system\core\init\init.c,此处盗用网上通俗的init.c剖析,下次找到了再自己具体剖析。

  在上述init依次启动中,经过解析init.rc,实践上也就陆续启动了其他关键效劳,这些效劳中最主要的就是ServiceManager,Zygote,SystemServer三个系统效劳过程。例如在启动boot触发工作中就有启动Zygote效劳。

  ServiceManager简称SM,是Android Binder机制中的”DNS效劳器”,担负域名(某个Binder效劳在SM中注册时供给的名字)到IP地址(由底层Binder驱动分派的值)的解析。SM在init.rc中的刻画以下所示

  /system/bin/servicemanager门路表现该效劳真实的履行依次在该门路下。当SM每次重启时,其他关键过程如zygote , media, surfaceflinger, drm也会重启。

  Android中大年夜少数应用过程和系统过程都是经过Zygote来生成的。zygote过程在外部会先启动虚拟机,继而加载一些需要的系统资本和系统类,最落伍入一种监听形状。在后续的运作中,当其他系统模块(比如AMS)欲望创立新过程时,只需向zygote过程收回恳求,zygote过程监听到该恳求后,会响应地“决裂”出新的过程,因而这个新过程在初生之时,就后天具有了自己的Dalvik虚拟机和系统资本。出自这里。Zygote在init.rc中的刻画以下所示

内容转自网络,版权归原作者所有,转载请以链接形式标明本文地址
本文地址://a/sdbcwzpm/20200201-182.html

 
友情链接: