RK平台的sensor框架HAL层兼容其他HAL层so库

原文链接: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)

你可能感兴趣的:(Android,android,linux)