问题描述

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
08-15 15:26