报错部分信息:
bootable/recovery/Android.mk: error: librecovery (native:platform) should not link to libhi_common (native:vendor)
bootable/recovery/Android.mk: error: librecovery (native:platform) should not link to libhi_msp (native:vendor)
[ 3% 2250/65245] target thumb C++: librecovery <= bootable/recovery/install.cpp
@libcore.util.NullFromTypeParam (nl=false) @ {GENERIC_ARRAY_LOCATION=GenericArrayLocationCriterion at ( [TYPE_ARGUMENT(0), TYPE_ARGUMENT(1)] ), RETURN_TYPE=ReturnTypeCriterion for method: entrySet()Ljava/util/Set;, IN_METHOD=in method 'entrySet()Ljava/util/Set;', IN_CLASS=In class 'java.util.HashMap' (exactly)}
ninja: build stopped: subcommand failed.
18:51:13 ninja failed with: exit status 1
make: *** [run_soong_ui] 错误 1
#### make target "bigfish -j16" failed !!!(01:29 (mm:ss)) ####
[END] 2021/3/10 18:51:43
网上找了下解决方法:原因就是
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无法链接的错误。