关于安卓中的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 定义了三次执行的操作:
- 在初始引导期间,如果属性a = b且属性c = d。
- 任何时候属性a转换为值b,而属性c已经等于d。
- 任何时候属性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