原文链接:https://blog.csdn.net/qq_41779533/article/details/120839515
一、首先确定各自sensor框架调试正常,各自平台均可正常显示数据
二、合并编译多个HAL层so库
1.打开/device/rockchip/rkxxxx/BoardConfig.mk
将USE_SENSOR_MULTI_HAL宏打开,USE_SENSOR_MULTI_HAL := true,没有的话在末尾添加就行。
2.编写hals.conf,添加要编译的两个库名字,源码目录放在/device/rockchip/rkxx/,目的是将其从该目录拷贝到/system/stc/sensors/,hal.conf文件内容如下,这步要全部列过来lib和lib64都要。
/vendor/lib/hw/lib***1.so
/vendor/lib64/hw/lib***1.so
/vendor/lib/hw/lib***2.so
/vendor/lib64/hw/lib***2.so
3.修改/hardware/libhardware/modules/sensors/Android.mk中编译模块的名称,这是最终的合并so的名称lib***3.so,若库名不对,会导致sensor HAL层服务起不来。
LOCAL_MODULE := sensors.$(TARGET_BOARD_HARDWARE)
4.在/device/rockchip/rkxx/device.mk中添加需编译和拷贝的文件。
PRODUCT_PACKAGES += \
lib***1 \
lib***2
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/hals.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/hals.conf
5.最后编译会将3个so库文件放在/vendor/lib/hw/下面,hals.conf会拷贝到/vendor/etc/sensors/下面,此时如果使用哪个sensor,lib***3.so就会去自动调用lib***1.so或lib***2.so。
测试效果:两个hal都被调用了
转载文章,以做笔记,致敬原作者(qq_41779533)