我已经创建了一个守护进程,但无法在我在Marshmallow上运行的Nexus 5中运行它。
以下是在init.rc中编辑的代码
on init
chmod 777 /sbin/check_usb
chown root root /sbin/check_usb
service disableadb /sbin/check_usb
class main
seclabel u:r:disableadb:s0
以下是我在init.usb.rc中编辑的条目,这样当检测到adb连接时,我的守护进程将被执行
on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=0
start disableadb
我在/ sbin / system下插入了check_usb程序,并授予chmod 777访问权限。
但是我注意到在dmesg中grep disableadb输出,我的守护进程无法执行错误,如下所示:
init : cannot setexeccon ('u:r:disableadb:s0') Invalid argument
答案 0 :(得分:1)
此错误可能是由于sepolicy问题造成的。 您新添加的服务可能没有正确的sepolicy配置。
为此添加sepolicy规则。 创建以下文件。
创建目录return match && match.length
在里面,创建文件device/xxx/.../sepolicy/check_usb
file_contexts
创建文件:check_usb.te
/sbin/check_usb u:object_r:disableadb:s0
在BoardConfig.mk中添加此目录
# check_usb service
type check_usb, domain;
type check_usb_exec, exec_type, file_type;
init_daemon_domain(check_usb)
allow init check_usb:process transition;