1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android Init Language(RC文件)介绍

Android Init Language(RC文件)介绍

时间:2023-10-06 21:50:12

相关推荐

Android Init Language(RC文件)介绍

Android Init Language介绍

基本概念什么是rc文件?Android Init进程用rc做了什么?相关内容 Android RC文件应用Android rc文件语法解析Line-oriented语法组成ActionServicesOption和CommandTriggerimport

基本概念

什么是rc文件?

rc文件,是用Android Init Language编写的特殊文件。用这种语法编写的文件,统一用".rc"后缀。

所有rc文件,不会被编译/链接。它是配置文件,不是程序,是一种用于android init的配置文件。

真正加载rc文件,并进行解析,做事情的是 Init进程。

Android Init进程用rc做了什么?

大体有一下几点:

创建各种文件,并分配DAC权限启动服务监听属性

相关内容

Android Init进程

源码路径:

system/core/init/init.cpp

加载并解析 rc文件函数:

static void LoadBootScripts(省略)

Android RC文件应用

android官方说明

system/core/init/README.md

Android rc文件语法解析

这个语法解析,其实是 android init language的语法解析。

Line-oriented

一般说语言,就有面向-xxx的一个概念。如java是面向对象的。Android Init Language是Line-oriented的。所谓 L-O,指线向导,指这种语言是一行为单位运作的。工作方式与操作系统的命令行相似。

on init# 一行为单位,执行tasksymlink /system/bin /bin

语法组成

AIL(Android Init Language)由5部分组成

Action(行为)Commands(命令)Services(服务)Options(选项)Imports(导入)

此外,还有两点概念。

Comments(注释):以#开头的行,表示注释。

# linduo test(我是一条注释)mkdir /data/linduo 0777 root root

Section(段落/分组):

Action(行为)和Services(服务)可以声明一个新的Section。

Command和Option属于最近的分组。

不属于分组的Command和Option将被忽略。

Service名字唯一,第二个同名的Service将被忽略并提示错误信息(所有RC文件)。

Action
行为是一系列命令的开始,或者说行为是一系列Command的集合。每个行为拥有一个Trigger,Trigger用来决定Action什么时候被执行。当Trigger被触发,相应的Action会被添加到任务队列中(队尾插入),如果已再队列中则忽略。Action中的每条命令,将会被顺序取出,并执行。

语法格式:

on <trigger> [&& <trigger>]*<command><command>

例子:

on zygote-start && property:ro.crypto.state=unsupportstart netd

Services

Services指一些Programs(程序),这些程序由Init启动/重启(开机启动,或者特定的时间点)

语法格式:

service <name> <pathname> [ <argument> ]*<option><option><option>

例子:

service vold /system/bin/vold \–blkid_context=u:r:blkid:s0 –blkid_untrusted_context=u:r:blkid_untrusted:s0 \–fsck_context=u:r:fsck:s0 –fsck_untrusted_context=u:r:fsck_untrusted:s0# Service类别class core# io调度优先级ioprio be 2# 进程pid写入特定文件writepid /dev/cpuset/foreground/tasks# 设定shutdown行为shutdown critical# 设定groupgroup root reserved_disk

Option和Command
Option是Services的修饰符(选项),通过Option告知Init如何对待Services。Command,指命令。Action是命令的集合。Android Init Language支持的Option和Command见

system/core/init/README.md

Trigger

Trigger,触发器。其本质上是字符串,用于匹配包含该字符串的事件(Event).

Triiger分为:

属性触发器: 属性变为属性值指定的属性值时触发。事件触发器:通过QueueEventTrigger函数(c++),或 trigger command触发。

on xxx:trigger sss

Trigger,可以由多个属性触发器 + 一个事件触发器组成(有且仅有一个事件触发器)

import

引入其他rc文件。(类似于 java的import 、c++的include)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。