Android P init.rc文件解析和使用

关于安卓中的init.rc文件,官网已经说明地非常清楚。

官网资料:
https://android.googlesource.com/platform/system/core/+/master/init/README.md

init.rc解析

简单来说,init.rc是安卓的初始化语言,具有固定的语法。作用是在安卓启动阶段做一下初始化操作。

下面举一个使用的小例子,关于init.rc触发器的使用。

init.rc中的触发器细分为事件触发器和属性触发器。

事件触发器是由’trigger’命令或init可执行文件中的QueueEventTrigger()函数触发的字符串。它们采用简单字符串的形式,例如’boot’或’late-init’。

属性触发器是在命名属性将值更改为给定新值或命名属性将值更改为任何新值时触发的字符串。它们分别采用’property:='和’property:= *'的形式。在init的初始引导阶段,还会相应地评估和触发属性触发器。

Action可以有多个属性触发器,但可能只有一个事件触发器。

on boot
    # Trigger start evs_driver service
    start evs_driver

boot是一个事件触发器,当安卓开机发生boot事件,启动evs_driver服务.

on property:a=b && property:c=d
    start evs_app

on property:a=b && property:c=d 定义了三次执行的操作:

  1. 在初始引导期间,如果属性a = b且属性c = d。
  2. 任何时候属性a转换为值b,而属性c已经等于d。
  3. 任何时候属性c转换为值d,而属性a已经等于b。

当条件满足时,启动evs_app服务。

也可以事件触发器和属性触发器一起使用:

on boot && property:a=b
   start evs_driver

制造商init.rc可能存放的路径:vendor\etc\init\hw
可以自定义属性值:

on property:vendor.vehicle.evs_app.event=0
    stop evs_app
on property:vendor.vehicle.gear.event=1
    echo 1 > /sys/devices/platform/vehicle-dummy/gear
on property:vendor.vehicle.gear.event=2
    echo 2 > /sys/devices/platform/vehicle-dummy/gear
on property:vendor.vehicle.gear.event=4
    echo 4 > /sys/devices/platform/vehicle-dummy/gear

on property:vendor.vehicle.turn.event=0
    echo 0 > /sys/devices/platform/vehicle-dummy/turn
on property:vendor.vehicle.turn.event=1
    echo 1 > /sys/devices/platform/vehicle-dummy/turn
on property:vendor.vehicle.turn.event=2
    echo 2 > /sys/devices/platform/vehicle-dummy/turn

on property:sys.boot_completed=1
    write /sys/block/mmcblk0/queue/read_ahead_kb 1024
    write /sys/block/mmcblk0/queue/nr_requests 128
    write /sys/block/mmcblk0/queue/iostats 1
    write /sys/block/dm-0/queue/read_ahead_kb 512
    write /sys/block/dm-1/queue/read_ahead_kb 512
    # Enable second display
    write /sys/class/drm/card0-HDMI-A-2/status on
    write /sys/class/drm/card1-HDMI-A-2/status on

 on post-fs-data
    # Set netd memlock rlimit to 8MB
    setrlimit 8 8388608 8388608

    setprop vold.post_fs_data_done 1
    # tmp dir for opencl Compiler
    setprop TMPDIR /data/vendor/.opencl-cache
    mkdir /data/vendor/.opencl-cache 0771 camera camera

	# wugn add start
    mkdir /data/misc/location 0770 gps gps
    mkdir /data/misc/location/mq 0770 gps gps
    mkdir /data/misc/location/xtwifi 0770 gps gps
    mkdir /data/misc/location/gpsone_d 0770 system gps
    mkdir /data/misc/location/quipc 0770 gps system
    mkdir /data/misc/location/gsiff 0770 gps gps
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunxiaolin2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值