on init on late-init on early-fs on fs on post-fs on late-fs class_start early_hal on post-fs-data load_persist_props_action zygote-start firmware_mounts_complete on early-boot on boot class_start hal class_start core on trigger_xxxx class_start main class_start late_start on trigger...
打开路径为<path>的文件并将一个多这多个字符串写入到该文件中。 19)在代码中start/stop某个service property_set("ctl.start",ServiceName);就是启动ServiceName服务(在init.rc中定义); property_set("ctl.stop",ServiceName)相对的是关闭ServiceName服务。 比如:开机动画就是在surfaceFlinger中启动的: property_...
1class_start core2class_start main 之前我们在讲解Android Init Language时曾提到过service的class选项:服务所属的类,当一个类启动或退出时,其所包含的所有服务可以一同启动或退出。若为指定该option,服务默认属于“default”类 在这里便是利用class选项来启动属于该类的所有service。 class_start命令对应的回调函数是...
也许有人会发现,class main这是个什么东西,好像没讲,然而我并不是忘了,我在这里再详细讲讲。我之前讲过start命令是在on中启动serice,但是通览整个init.rc文件,我们会发现,直接使用start命令启动service的情况非常少,我之前也用这种方式试过几次,但都未能成功。所以我在仔细阅读和查询资料后发现,大多数inti进程fork...
讲完了解析service,接下来该讲init是如何启动service,在这里我们主要讲解启动zygote这个service。在zygote的启动脚本中我们得知zygote的class name为main。在init.rc有如下配置代码: system/core/rootdir/init.rc 其中class_start是一个COMMAND,对应的函数为do_class_start。我们知道main指的就是zygote,因此class_start ma...
class_start <service_class_name>: 启动属于同一个class的所有服务 start <service_name>: 启动指定的服务,若已启动则跳过 stop <service_name>: 停止正在运行的服务 setprop <name> <value>:设置属性值 mkdir <path>:创建指定目录 symlink <target> <sym_link>: 创建连接到<target>的<sym_link>符号链接 ...
class_start hal class_start core on nonencrypted class_start main class_start late_start init进程最后会通过fork的方式去启动服务 孵化进程 -- Zygote Android中大多数应用进程和系统进程都是通过Zygote进程来生成。Zygote为孵化的应用程序提供了几个基础资源:常用类,JNI函数,主题资源,共享库 ...
4.1 init.cpp main主要的逻辑不是很长。 int main(int argc, char** argv) { if (!strcmp(basename(argv[0]), "ueventd")) { return ueventd_main(argc, argv); } if (!strcmp(basename(argv[0]), "watchdogd")) { return watchdogd_main(argc, argv); ...
"服务"(service)的关键字 service后面跟着的是服务名称。我们可以使用"start"命令加"服务名称"来启动一个服务。关键字以下的行称为"选项",没一个选项占用一行,选项也有多种,常见的"class"表示服务所属的类别。 services 其实是可执行程序,它们在特定选项的约束下是被init程序运行或者重启(service可以在配置中指定是...
它的类别是main,用户是system,属于graphics ,且没有声明disabled,所以在启动main这个类别的时候,surfaceflinger就会被启动。 main类别是在哪里启动的呢? 搜索class_start关键字,在On boot的时候,就会启动了 on boot #省略无关... class_start core class_start main read...