问题描述
push android.hardware.xxxx@1.0-service
到 /vednor/bin/hw
;
push ‘android.hardware.xxxx@1.0-service.rc’ 到 /vendor/etc/init/
;
reboot 设备后,xxx 服务没有自动启动。
经检查 rc 文件与同类 service 无差异。
问题分析
直接运行 xxx 服务正常。同时经检查 rc 文件与同类 service 无差异。
怀疑是权限问题。
使用 ls -al -Z
查看,rc 文件权限相同,但 xxxx 文件 SELinux 权限不同:
-rwxr-xr-x 1 root shell u:object_r:hal_mcucomm_default_exec:s0 11648 2009-01-01 08:00 android.hardware.mcucomm@1.0-service
-rwxr-xr-x 1 root shell u:object_r:vendor_file:s0 82856 2024-08-02 16:25 android.hardware.xxxx@1.0-service
-rwxr-xr-x 1 root shell u:object_r:hal_settings_default_exec:s0 29904 2009-01-01 08:00 android.hardware.settings@1.0-service
所以问题应该是 SELinux 权限不同导致。
问题解决
使用命令修改 xxxx 文件 SELinux 权限与同类一致即可。
chcon u:object_r:hal_mcucomm_default_exec:s0 android.hardware.xxxx@1.0-service