on <trigger> //触发条件 <command1> //命令1 <command2> //命令2 <command3> //命令3
对于trigger(触发器)来讲,常见的有两种形式:
单纯的字符串。例如:on boot
键值匹配,格式为“ on property = ”。例如:on property:init.svc.wifi = stopped
此外还有两种形式:
device-added/removed- 当设备节点添加/删除时触发此事件
sevice-exited- 当指定服务 存在时触发
Actions解析后执行顺序
1 2 3 4 5 6 7 8 9 10
on early-init #在初始化早期阶段触发 on init #初始化阶段触发。这里会执行完属性服务,接下来就可以设置属性了 on late-init #在初始化晚期触发。在这里会通过trigger来执行其他的action,以下均是 on early-fs on fs on post-fs on post-fs-data on firmware_mounts_complete on early-boot on boot`
on boot ifup lo hostname localhost domainname localdomain
class_start default
# Load properties from /system/ + /factory after fs mount. on load_all_props_action load_all_props
on firmware_mounts_complete rm /dev/.booting
# Mount filesystems and start core system services. on late-init trigger early-fs trigger fs trigger post-fs trigger post-fs-data
# Load properties from /system/ + /factory after fs mount. Place # this in another action so that the load will be scheduled after the prior # issued fs triggers have completed. trigger load_all_props_action
# Remove a file to wake up anything waiting for firmware trigger firmware_mounts_complete
trigger early-boot trigger boot
on property:sys.powerctl=* powerctl ${sys.powerctl}
service ueventd /sbin/ueventd critical seclabel u:r:ueventd:s0
service healthd /sbin/healthd -r critical seclabel u:r:healthd:s0
service recovery /sbin/recovery seclabel u:r:recovery:s0
service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery disabled socket adbd stream 660 system system seclabel u:r:adbd:s0
# Always start adbd on userdebug and eng builds on property:ro.debuggable=1 write /sys/class/android_usb/android0/enable 1 start adbd
# Restart adbd so it can run as root on property:service.adb.root=1 write /sys/class/android_usb/android0/enable 0 restart adbd write /sys/class/android_usb/android0/enable 1