当前位置: 首页> 教育> 大学 > 记录一个Android编译中遇到的(有点)奇怪的问题vendor_available

记录一个Android编译中遇到的(有点)奇怪的问题vendor_available

时间:2025/8/25 19:40:00来源:https://blog.csdn.net/yinminsumeng/article/details/142205001 浏览次数:0次

前提条件

Android源码已经完整编译过。
在一个工程的Android.bp文件中,为编译目标添加了vendor_available属性:

cc_binary {name: "TheProjectTargetName"vendor_available = true,				// <<------------...
}

单独编译功能

此时单独编译工程,使用mm或者mmm命令,可以正常编译

整编源码报错

再次在Android源码根目录下编译,就会报错:

checkvintf E 09-12 18:30:26 1016661 1016661 VintfObject.cpp:65] getFrameworkHalManifest: status from fetching VINTF information: -2147483648
checkvintf E 09-12 18:30:26 1016661 1016661 VintfObject.cpp:66] getFrameworkHalManifest: -2147483648 VINTF parse error: Cannot add manifest fragment /product/etc/vintf/manifest/system_diagnosis_service.xml:HAL "ltd.faw.system_diagnosis_service" has a conflict.
checkvintf I 09-12 18:30:26 1016661 1016661 VintfObject.cpp:55] getDeviceHalManifest: Reading VINTF information.

在out目录中存在几个文件:

~/code/qisi/out/target/product/hqcos/system$ find . -name "system_diagnosis_service.xml"
./product/etc/vintf/manifest/system_diagnosis_service.xml
./etc/vintf/manifest/system_diagnosis_service.xml~/code/qisi/out/target/product/hqcos/vendor$ find . -name "system_diagnosis_service.xml"
./etc/vintf/manifest/system_diagnosis_service.xml

把上述几个.xml文件删除,重新make就可以正常编译通过。
这几个xml是对应工程中hal接口描述文件(学名叫兼容矩阵compatibility matrix,这里不展开),根据.bp文件中的配置vendor是否可用,选择是否在vendor目录下放置此文件。

总结:

  1. 如果源码没有编译过,重新编译,Android.bp中的各种配置只要符合语法和规则,就不会编译出错。
  2. 如果已经编译过一次,修改Android.bp中的属性,和先前编译中不匹配,会导致编译过程中检查报错。类似的,如果增删Framework中的接口,但没有执行update api操作,也会报错。这里是对接口描述做校验,接口变更不仅包括接口增加、参数变化,还包括可访问范围(vendor_available、vendor)等
关键字:记录一个Android编译中遇到的(有点)奇怪的问题vendor_available

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: