《Android的设计与实现:卷I》——第3章 3.4init.rc文件解析过程

3.4 init.rc文件解析过程

init.rc文件按照一定的格式组织,要分析init.rc文件的解析过程,首先要熟悉它的格式。init.rc的文件格式由Android初始化语言(Android Init Language)定义,所以这里首先分析Android初始化语言。

3.4.1 Android初始化语言

Android初始化语言定义了六个基本概念、两个基本关键字和多个指令关键字。

六个基本概念分别是Section、Action、Service、Trigger、Command、Option。

两个基本关键字是on和service。

指令关键字则定义在Trigger、Command和Option中。

其帮助文档位于/system/core/init/readme.txt,其关键字定义位于/system/core/init/keyword.h。
关键字on用来声明一个Action。

关键字service用来声明一个Service。

每一个Action或者Service都隐含是一个Section,init.rc就是由不同的Section组成的。

Command是最小的功能单位,代表一个Linux命令或者一个方法调用。

Trigger代表一个自定义的触发条件,用来触发Action的执行,也可以认为它是Action的名称。

一个Action便是由关键字on声明、由Trigger触发的一组Command序列。

Option是Service的修饰符,由它来指定何时、如何启动Service程序。

每一个Service都是init进程的子进程,由关键字service、服务名、服务对应的命令的路径、命令的参数和Option组成,代表一些要在初始化阶段启动的程序。

下面将分别介绍上述几个基本概念的组成格式。

1.Action
Action的格式如下:

Android初始化语言中定义Action的Trigger如表3-1所示。

除了表3-1中列举的Trigger外,还有在代码中显式使用的Trigger,它们并没有列入Android初始化语言定义的Trigger中。比如可以在init.rc中搜索到early-init、init、charger、nonencrypted、post-fs-data、post-fs、fs等Trigger,这些Trigger其实是当作Action名字使用。

2.Command

Android初始化语言中定义的Command如表3-2所示。

3.Service
Service的格式如下:


4.Option
Android初始化语言中定义的Option如表3-3所示。

Section是一个虚拟的概念,它在init.rc中并不显式存在。每一个Action或Service隐含是一个Section,每一个Section代表一个完整的功能,init.rc便是由不同的Section组成的。

时间: 2024-10-08 23:39:18

《Android的设计与实现:卷I》——第3章 3.4init.rc文件解析过程的相关文章

Android init.rc文件格式解析

/***************************************************************************** * Android init.rc文件格式解析 * 声明: * 当我们需要对Android进行一些module移植的时候,往往会涉及到init.rc文件的 * 修改,譬如权限.运行service程序等等,于是理解文件格式就成了需求. * * 2015-12-31 深圳 南山平山村 曾剑锋 **************************

《Android的设计与实现:卷I》——第3章 3.4.2init.rc的内容

3.4.2 init.rc的内容 熟悉了Android初始化语言,再来阅读init.rc文件就容易多了.以下是init.rc的内容: service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class main socket zygote stream 660 root system onrestart write /sys/android_power/request_s

Android的init过程(二):初始化语言(init.rc)解析

Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10     在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性.在本文将会详细分析init最重要的一环:解析init.rc文件. init.rc文件并不是普通的配置文件,而是由一种被称为"Android初始化语言"(Android Init Language,这里简称为AIL)的脚本写成的文件.在了解init如何解析init.rc文件之前,先了解AIL非常必要,否

Android的init过程(二):初始化语言(init.rc)解析【转】

转自:http://www.cnblogs.com/nokiaguy/p/3164799.html Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10     在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性.在本文将会详细分析init最重要的一环:解析init.rc文件. init.rc 文件并不是普通的配置文件,而是由一种被称为"Android初始化语言"(Android Init Language,这里

《Android的设计与实现:卷I》——第3章 3.4.4解析Service

3.4.4 解析Service 1.parse_service 解析Service先从parse_service开始,代码如下:static void parse_service(struct parse_state state,int nargs, charargs){ struct servicesvc;//service结构体,用于保存当前解析出的Service --//省略错误处理代码 nargs -= 2; /为Service分配存储空间/ svc = calloc(1, sizeof

《Android的设计与实现:卷I》——第3章 Android启动过程的底层实现

第3章 Android启动过程的底层实现 Android支持多种启动模式,主要有正常模式(normal mode).安全模式(safe mode).恢复模式(recovery mode).工厂模式(factory mode).快速启动模式(fastboot mode)等.除正常模式外,都是刷机或者测试模式,本书只讲解正常模式下Android的启动过程.如果读者对其他启动模式感兴趣,可以自行查阅相关资料. 3.1 Android正常模式启动流程 Android的正常模式启动流程大体如下:步骤1 系

Android UI设计的幻灯片:新的UI设计模式

文章描述:谷歌Android UI设计技巧:新的UI设计模式. 本系列文章原是Android的官方开发者博客的一份Android UI设计的幻灯片,51CTO的译者将这份教程5部分进行翻译整理,希望对Android开发者能有帮助.本文为<谷歌Android UI设计技巧>第四部分:新的UI设计模式. 本文为<谷歌Android UI设计技巧>第四部分:新的UI设计模式. [1] [2]  下一页

Android UI设计的幻灯片:图标与指导说明

文章描述:谷歌Android UI设计技巧:图标与指导说明. 本系列文章原是Android的官方开发者博客的一份Android UI设计的幻灯片,51CTO的译者将这份教程5部分进行翻译整理,希望对Android开发者能有帮助.本文为<谷歌Android UI设计技巧>第五部分也就是最后一部分:图标与指导说明. 本文为<谷歌Android UI设计技巧>第五部分也就是最后一部分:图标与指导说明.

Android应用设计:选项菜单Options Menu

文章描述:Android硬体键交互之"选项菜单". 众所周知Android没有明确的GuideLine,虽说没有严格的规范来限制设计与创新很赞,但这也导致市场上的Android应用设计上的混乱.一个典型例子就是选项菜单Options Menu. 混乱的菜单 Android机器采用的硬体键来呼出菜单,这种方式在表现上隐性的,用户对于何种情况下可以呼出何种菜单没有预见性,甚至是否可以呼出菜单都没有预期.   如何解决 为降低用户的认知成本,建议设计中遵循以下方式. Question 1:何