HAL服务整编错误处理
- 1、HIDL HAL服务
- 2、HIDL HAL服务集成
- 1》manifest.xml 配置报错
- 2》hidl服务未启动报错
- 3》有rc启动文件,没有so库报错
- 4》SELinux权限问题
- 5》整编译还是没有集成 或 报错
1、HIDL HAL服务
请参考下面几篇:
简单HIDL HAL的实现
Android系统开发入门-11.添加hidl服务
HIDL实战笔记
Demo例子 Android 应用层 到 HAL 层
HAL 接口定义语言(简称 HIDL)是用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL)。HIDL 允许指定类型和方法调用(会汇集到接口和软件包中)。从更广泛的意义上来说,HIDL 是指用于在可以独立编译的代码库之间进行通信的系统。从 Android 10 开始,HIDL 已废弃,Android 将在所有位置改用 AIDL。
2、HIDL HAL服务集成
1》manifest.xml 配置报错
hwservicemanager: getTransport: Cannot find entry 自定义服务@1.0::IFactory/default
in either framework or device VINTF manifest.
自定义服务@1.0::IFactory_manifest.xml
文件放到目录:/vendor/etc/vintf/manifest
2》hidl服务未启动报错
10-10 10:43:56.138 348 348 I hwservicemanager: Since 自定义服务@1.0::IFactory/default
is not registered, trying to start it as a lazy HAL.
rc启动文件放在 /vendor/etc/init/ 目录
3》有rc启动文件,没有so库报错
10-10 11:29:23.413 1 1 I init : starting service 自定义服务
…
10-10 11:29:23.447 4711 4711 F linker : CANNOT LINK EXECUTABLE “/vendor/bin/hw/自定义服务@1.0-service
”: library “自定义服务@1.0.so
” not found: needed by main executable
10-10 11:29:23.465 1 1 I init : Service '自定义服务
(pid 4711) exited with status 1
10-10 11:29:23.465 1 1 I init : Sending signal 9 to service 自定义服务
(pid 4711) process group…
vendor/lib64
、vendor/lib
对应目录要有编译生成的自定义服务
so库
4》SELinux权限问题
10-10 11:47:35.481 1 1 I init : Service '自定义服务
(pid 8881) exited with status 1
10-10 11:47:35.452 340 340 E SELinux : avc: denied { find } for interface=自定义服务
::IFactory sid=u:r:hal_fingerprint_default:s0 pid=8881 scontext=u:r:hal_fingerprint_default:s0 tcontext=u:object_r:自定义服务
:s0 tclass=hwservice_manager permissive=0
10-10 11:47:35.500 1 1 I init : Sending signal 9 to service 自定义服务
(pid 8881) process group…
10-20 10:09:13.699 355 355 E SELinux : avc: denied { find } for interface=自定义服务
::IFactory sid=u:r:hal_fingerprint_default:s0 pid=9438 scontext=u:r:hal_fingerprint_default:s0 tcontext=u:object_r:自定义服务
:s0 tclass=hwservice_manager permissive=0
可以关闭权限先测试:
setenforce 0
selinux自动生成配置工具:项目中external/selinux/python/audit2allow/audit2allow
audit2allow -i avcTest.txt > avc.te
5》整编译还是没有集成 或 报错
1、注意每个项目ap\bp仓编译不同的分支
2、注意平台编译校验,如高通 QIIFA cmd