3.4 init.rc文件解析过程

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

3.4.1 Android初始化语言(1)

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的格式如下:

on

……

# Trigger是Action的触发条件,在满足触发条件的情况下执行一个或多个相应的Command Android初始化语言中定义Action的Trigger如表3-1所示。

表3-1 初始化语言中定义的Trigger

除了表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-2 初始化语言中定义的Command

(续)

【责任编辑:book TEL:(010)68476606】

点赞 0

android 初始化语言,3.4.1 Android初始化语言(1)相关推荐

  1. android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...

    1.设置屏幕的亮度: WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=1.0f; getW ...

  2. 【Android FFMPEG 开发】FFMPEG 音频重采样 ( 初始化音频重采样上下文 SwrContext | 计算音频延迟 | 计算输出样本个数 | 音频重采样 swr_convert )

    文章目录 I . FFMPEG 播放视频流程 II . FFMPEG 音频重采样流程 III . FFMPEG 音频重采样 IV . FFMPEG 初始化音频重采样上下文 SwrContext V . ...

  3. android 多语言(在APP里面内切换语言)

    创建SharedPreferences的管理类 public class PreferenceUtil {private static SharedPreferences mSharedPrefere ...

  4. 简单介绍C语言使用四种方法初始化结构体

    这篇文章说明了什么是结构体,介绍了结构体的概念和使用优点,在C语言中如何使用和初始化结构体方法,通过详细的代码展开进行说明,希望该篇文章对你有所帮助 什么是结构体 在实际问题中,一组数据往往有很多种不 ...

  5. Android NDK编程小试---实现java和c语言的互掉

    实现功能 l  实现 java/C互相调用 android端java调用LibMain 进而执行C语言 并且传入字符数组 l  C语言回调java Natives类的OnMessage方法打印消息,实 ...

  6. C语言--关于指针两种初始化赋值操作

    首先,什么叫做指针的初始化?  int * p = NULL:在定义指针变量p的同时把p的值设置为0x00000000;而不是把*p的值设置为0x00000000.这个过程叫做初始化. 探讨: int ...

  7. android获取操作系统版本号,Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类...

    1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android系统版本号 5.获取手机IMEI串号 6.获取手机中的语言列表 SystemUtil类 1. /** 2. ...

  8. c语言数组的声明和初始化_C声明和初始化能力问题和解答

    c语言数组的声明和初始化 This section contains aptitude questions and answers on C language Declarations and Ini ...

  9. c语言中申请内存并初始化,c语言中结构体的定义、初始化及内存分配

    #include struct person { char *name; int age; }; int main() { //结构体可以定义在函数内,也可以定义到函数外 //相当于全局变量与局部变量 ...

  10. C语言中字符数组的初始化与注意事项

    在C语言中字符数组的初始化有三种常见的方法: char a[5] = {'a','b','c','d','e'};char c[] = {'a','b','c','d','e'};char b[] = ...

最新文章

  1. 截取小数点_五年级上册系列| 小数点位置变化名师微课+课本+学案,暑假预科,很香!...
  2. 记一次调用API遇到的问题
  3. svn 验证位置失败 Authorization failed
  4. OpenShift 4 - DevSecOps (3) - 用 RHACS 精细化管理云原生应用安全
  5. 第二:Java+MyBatis(深入学习)
  6. mybatis Example常用方法
  7. HDU5234 Happy birthday
  8. oracle srvctl命令,关闭RAC、srvctl命令
  9. VS2012番茄助手安装破解教程
  10. 机器学习——概率模型
  11. 计算机串口通信的作用,串口通信的具体用途是什么
  12. 利用ptrace设计一个简单的debugger调试器
  13. K线技术指标实现—同花顺多空趋势点
  14. Ubuntu18.04 + 树莓派4B + wifi + 换源 +ssh + 防火墙相关 + mate桌面 + + vnc + ROS Melodic
  15. Python的前奏:excel常用功能简介,数据透视表,切片器
  16. 怎么复制网页上不能复制的文字(付费文档免费复制),一招搞定
  17. Cursor——ChatGPT的替代品【笔记】
  18. 基于百度AI在ROS上实现人体检测功能
  19. 基础论文 (一) ADDA
  20. spring boot整合vue项目

热门文章

  1. 【windows】cmd中的help无法使用的解决方法
  2. SpringBoot 获取 application.properties 文件中的内容方法 【学习记录】
  3. 64位游戏找call_替换Unity可执行文件为64位,改善游戏性能
  4. 1小时学会:最简单的iOS直播推流(番外)运行不起AWLive的demo的同学请看这里
  5. 微信小程序地图标记点,点击标记点显示详细信息源码加效果图
  6. 【一步步学小程序】1.创建项目以及TabBar
  7. 【iOS】通讯录分组方式展示数据
  8. vue组件定义、组件的切换、组件的通信、渲染组件的几种方式(标签、路由、render)...
  9. 从 Flutter 的视频渲染到 App 落地经验
  10. 分布式文件系统(FastDFS)安装 配置