Android init.rc 文件分析

本文详细解析了Android系统的init.rc文件,涵盖Action、Services、Commands和Options四大组成部分。Action涉及不同触发时机,如early-init、init和boot。Services部分讨论了服务启动,包括Service的生命周期和启动条件。Commands部分介绍了如class_start、start、stop等常用命令。Options作为Service的配置选项,如critical、disabled和class。文中通过实例分析了服务启动顺序、启动过程以及服务重启策略,揭示了Android系统服务间相互依赖的关系。
摘要由CSDN通过智能技术生成

Android init.rc 文件分析

rc 脚本由4种类型声明组成,Action、Commands、Services、Options

Action(动作)

通过触发器 trigger,即以 on 开头的语句来决定执行相应的 service 的 时机,具体有如下时机:

  • on early-init : 在初始化早期阶段触发;
  • on init: 在初始化阶段触发;
  • on late-init: 在初始化晚期阶段触发;
  • on boot/charger: 当系统启动/充电时触发,还包含其他情况,此处不一一列举;
  • on property: key=value: 当属性值满足条件时触发;

Services(服务)

服务 Service,以 service 开头,由 init 进程启动,一般运行在 init 的一个子进程, 所以启动 service 前需要判断对应的可执行文件是否存在。
init 生成的子进程, 定义在 rc 文件,其中每一个 service 在启动时会通过 fork 方式生成子进程。
例如,代表的是服务名为 servicemanager,服务执行的路径为/system/bin/servicemanager。

Commands(命令)

常用的命令

  • class_start <service_class_name>: 启动属于同一个 class 的所有服务;
  • start <service_name>: 启动指定的服务,若已启动则跳过;
  • stop <service_name>: 停止正在运行的服务
  • setprop :设置属性值
  • mkdir :创建指定目录
  • symlink <sym_link>: 创建连接到的<sym_link>符号链接;
  • write : 向文件 path 中写入字符串;
  • exec: fork 并执行,会阻塞 init 进程直到程序完毕;
  • exprot :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值