文章目录
[Compile]
1. LOCAL_PROPRIETARY_MODULE 宏引起的编译报错"(native:platform) should not link to libhubconnection (native:vendor)"
- Situation:
今天在协助客户移植第三方 sensorhub HAL层代码时,遇到如下编译问题:
vendor/{platform}/modules/sensors/libcwmsensorhub/Android.mk: error: sensors.nano (native:platform) should not link to libhubconnection (native:vendor) - Root Cause:
Android.mk 中写明会编译生成两个LOCAL_MODULE,第一个LOCAL_MODULE会依赖引用第二个LOCAL_MODULE。问题的关键来了,参照平台默认的 sensor HAL 代码的Android.mk,我对第一个LOCAL_MODULE新增了LOCAL_PROPRIETARY_MODULE := true
属性,而第二个LOCAL_MODULE没有这么做。LOCAL_PROPRIETARY_MODULE是Android vendor module 必须具有的属性,此属性声明将 vendor module放入vendor分区(vendor native),未声明该属性的module将放在system分区(platform native),且这两个分区是不能进行链接的,所以编译会报两个LOCAL_MODULE无法链接的错误。
参考:LOCAL_PROPRIETARY_MODULE - Resolution:
将移植的vendor module中的Andorid.mk 中所有LOCAL_MODULE都加上LOCAL_PROPRIETARY_MODULE := true
属性。