init.rc文件由系统第一个启动的init程序解析,我们添加启动服务即是修改此文件,一般蓝牙模块、WIFI模块、移动通信模块都会在此添加服务。除了会添加服务以外,我们应该能够添加启动时的自己的设置。
1.修改device/softwinner/t3-p1/init.rc文件开头添加import /init.test.rc
2.init.test.rc文件
service testinit /system/bin/sh /system/bin/test_init
class core
user root
group root system
oneshot
on property:sys.aw_boot_completed=1
我们启动的是/system/bin/test_init工具,工具是多样的,android系统添加自己写的工具中提到多种工具,我们这个工具使用SHELL指令,方便调用其它工具。
最后个变量aw_boot_completed是系统启动完成标志,即启动完成才执行。3.复制init.test.rc到系统
在device/softwinner/t3-p1/t3-p1.mk中添加device/softwinner/t3-p1/init.test.rc:root/init.test.rc \
PRODUCT_COPY_FILES += \
***
device/softwinner/t3-p1/init.rc:root/init.rc \
device/softwinner/t3-p1/init.test.rc:root/init.test.rc \
4.test_init文件
tinymix 41 1
tinymix 34 1
tinymix 12 1
tinymix 13 1
echo 1 > /dev/fmsi4754
test_init文件内容对你们来说没有意义,我只是举个栗子。tinymix是声卡配置查看修改指令,echo 1 > /dev/fmsi4754是往文件写入1,我驱动中的作用是开启打印信息。
5.test_init拷贝到系统/system/bin下
android系统的简单定制中设置默认输入法有提到,按照博客test.mk文件中添加。如果没有该文件,test_init文件放好位置,修改t3-p1.mk文件也可。
PRODUCT_COPY_FILES += \
device/softwinner/t3-p1/test/test_init:system/bin/test_init \
好了,你可以在test_init里面添加任意指令了,当然也可以调用你自己写的工具。
本文重点是添加服务,下面给几个添加服务的例子,依次为蓝牙串口,wifi的WPA,wifi的P2P,自动获取IP,IP更新。
service btuartservice /system/bin/btuartservice
class core
user root
group root
disabled
oneshot
# wifi service
# 1 wifi station and softap
service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
p2p_supported=false
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
# 2 wifi sta p2p concurrent service
service p2p_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
p2p_supported=true
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
# DHCPCD
## eth0
service dhcpcd_eth0 /system/bin/dhcpcd -ABKL
class main
disabled
oneshot
# IP Renew
# # eth0
service iprenew_eth0 /system/bin/dhcpcd -n
class main
disabled
oneshot