2016-03-29 323 views
0

我創建了一個守護進程,但無法在運行在棉花糖上的Nexus 5中運行它。無法在init.rc中啓動時執行守護進程

以下是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使得檢測亞行連接時,我的守護進程將被執行

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

此錯誤可能是由於sepolicy問題。 您新添加的服務可能沒有正確的sepolicy配置。

爲此添加sepolicy規則。 創建以下文件。

創建目錄device/xxx/.../sepolicy/check_usb

中,創建文件file_contexts

/sbin/check_usb    u:object_r:disableadb:s0 

創建文件:check_usb.te

# 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; 

此目錄中您BoardConfig.mk添加

BOARD_SEPOLICY_DIRS += device/xxx/.../sepolicy/check_usb 
相關問題