1、critical 表示这是一个关键的service,4分钟内退出4次,则系统重启进入recovery mode。 2、disabled 这个服务不会随着它的类启动而自动启动,必须明确指定服务名称启动。 3、setenv 设置环境变量。 4、socket [ [ [ ] ] ] 创建一个socket接口/dev/socket/,使本地service和java可以通信。详见 http://blog.csdn.net/eliot_shao/article/details/53159989 。 5、user 执行service之前改变用户名。 6、group [ ]* 执行service之前改变用户组。 7、oneshot 当service退出后不会重启。 8、class 为service指定一个类名,具有相同类名的service可以一起启动和停止。 9、onrestart 启动一个Command,当service重新启动的时候。 Eg: service servicemanager /system/bin/servicemanager class core user system group system critical onrestart restart healthd onrestart restart zygote onrestart restart media onrestart restart surfaceflinger onrestart restart drm
常用Triggers说明:
1、boot eg: on boot 这是第一个触发的,当init进程启动时候。 2、= when the property is set to the specific value . Eg:on property:sys.boot_completed=1 3、device-added- device-removed- 当一个设备节点被删除或者添加的时候,触发。 Eg: on device-added-/dev/compass start akmd 4、service-exited- 当制定的service退出的时候触发。
常用Commands说明
1、exec [ ]* Fork and execute a program (). 2、export Set the environment variable equal to in the lobal environment export PATH /sbin:/system/sbin:/system/bin 3、import 解析init配置文件,扩展当前的init.rc配置 4、chdir 改变当前的工作路径 5、chmod 改变文件的访问权限 6、chown 改变文件拥有者和组 7、class_start 启动某个class Eg: on nonencrypted class_start main class_start late_start 8、class_stop 停止某个class 9、enable 使能一个service 如果他是disable的。 10、insmod 安装模块 11、mkdir [mode] [owner] [group] 创建文件夹 12、mount
# not complete -- just providing some examples of usage # onboot export PATH /sbin:/system/sbin:/system/bin export LD_LIBRARY_PATH /system/lib
mkdir /dev mkdir /proc mkdir /sys
mount tmpfs tmpfs /dev mkdir /dev/pts mkdir /dev/socket mount devpts devpts /dev/pts mount proc proc /proc mount sysfs sysfs /sys
write /proc/cpu/alignment 4
ifup lo
hostname localhost domainname localhost
mount yaffs2 mtd@system /system mount yaffs2 mtd@userdata /data
import /system/etc/init.conf
class_start default
service adbd /sbin/adbd user adb group adb
service usbd /system/bin/usbd -r user usbd group usbd socket usbd 666
service zygote /system/bin/app_process -Xzygote /system/bin --zygote socket zygote 666
service runtime /system/bin/runtime user system group system
ondevice-added-/dev/compass start akmd
ondevice-removed-/dev/compass stop akmd
service akmd /sbin/akmd disabled user akmd group akmd
Debugging notes
By default, programs executed by init will drop stdout and stderr into /dev/null. To help with debugging, you can execute your program via the Andoird program logwrapper. This will redirect stdout/stderr into the Android logging system (accessed via logcat).