VINTF供应商接口对象

Android VINTF对象与兼容性矩阵详解
本文详细介绍了Android中的VINTF对象,包括设备清单、框架清单、框架兼容性矩阵和设备兼容性矩阵。VINTF用于协调设备和框架组件,确保 OTA 更新时的兼容性。设备清单由供应商清单和ODM清单组成,框架清单由Google提供。兼容性矩阵则规定了框架和设备之间的需求匹配,以验证它们能否协同工作。清单和矩阵的匹配规则涉及版本和HAL的对应关系,确保在更新过程中功能兼容。

VINTF对象设计为设备和框架组件提供以下内容:

 

从Android 8.0开始,运行时API会查询设备上的内容并将该信息发送到无线下载 (OTA) 更新服务器以及其他相关方(例如 CTS DeviceInfo)。有些信息会在运行时进行检索,而有些信息则是静态定义的信息。

  • 设备清单描述了设备可以为框架提供的静态组件。
  • 框架兼容性矩阵描述了 Android 框架期待从给定设备中获取的内容。此矩阵是一个静态实体,在开发下一个版本的 Android 框架期间会手动确定此矩阵的组成。
  • 框架清单描述了框架可以为设备提供的高级服务。
  • 设备兼容性矩阵描述了供应商映像需要框架提供的服务,在设备开发期间会手动确定此矩阵的组成。

这两对清单和矩阵必须在OTA时进行协调,以确保可以获取功能兼容的更新。一般来说,清单描述了提供的内容,兼容性矩阵描述了需要的内容。

清单

VINTF对象会在运行时汇总设备清单和框架清单文件(XML)中的数据以及设备本身的数据。这两个清单采用同一种格式,不过并非所有元素都适用于两者。

设备清单(由设备提供)包含供应商清单和ODM清单:供应商清单会指定SoC通用的HAL、VNDK版本等信息,如:/vendor/etc/vintf/manifest.xml。ODM清单列出了产品专用的HAL,如:/odm/etc/vintf/manifest.xml。

VINTF对象会按以下顺序加载设备清单:

1、  如果存在供应商清单,合并:vendor/odm/fragment

2、  如果存在odm清单,合并:ODM 清单与可选的 ODM 清单

3、  /vendor/manifest.xml

此设置可让采用相同开发板的多个产品共用同一个供应商映像(用于提供通用 HAL),但具有不同的 ODM 映像(用于指定产品专用的 HAL)。

框架清单:

框架清单文件(由Google提供)是手动生成的,位于/system/libhidl/manifest.xml 中。

清单 Fragment:

在Android 10及更高版本中,还可以在构建系统中将清单条目与HAL模块相关联,这有助于在构建系统中有条件地包含HAL模块。

例如,可以在Android.bp或Android.mk文件中,将vintf_fragments添加到任意模块,为此模块添加清单。

vintf_fragments: ["manifest_foo.xml"],

框架兼容性矩阵:

框架兼容性矩阵说明了框架对运行它的设备的要求。矩阵文件与Android框架映像(位于 system.img中)相关联。FCM的要求应通过设备清单来满足(在启动和 OTA 时会强制执行相应要求)。

设备兼容性矩阵:

设备兼容性矩阵说明了设备期望框架满足的一组要求(在启动和 OTA 时会强制执行相应要求)。

匹配规则:

两对兼容性矩阵和清单旨在 OTA 更新时进行协调,以验证框架和供应商实现是否可以相互协同工作。当框架兼容性矩阵与设备清单之间以及框架清单与设备兼容性矩阵之间匹配时,便成功通过此验证。

框架兼容性矩阵版本匹配

如需使设备清单与框架兼容性矩阵相匹配,manifest.target-level 指定的 Shipping FCM 版本必须与 compatibility-matrix.level 指定的 FCM 版本完全相同。否则,这二者将不匹配。

HAL匹配

多个<hal>元素具有 AND 关系。

同一个<hal>中的多个<version>元素具有OR关系。如果指定了两个或两个以上版本,则只需要实现其中一个版本。

同一个<hal>中的多个<instance>和<regex-instance>元素具有AND关系。

 

07-20
`vintf` 是 Android 系统中的一个命令行工具,全称为 **Vendor Interface Tool**,用于管理和验证设备上的硬件接口兼容性。它在 Android 8.0(Oreo)引入的 **Project Treble** 架构中扮演重要角色,确保设备的供应商实现(Vendor Implementation)与 Android 框架接口保持兼容。 ### 主要功能 - 检查设备的 HAL(Hardware Abstraction Layer)接口是否符合 AOSP(Android Open Source Project)定义的兼容性标准。 - 生成设备的接口定义文件(通常为 XML 格式)。 - 验证设备是否符合接口兼容性要求(Interface Compliance)。 ### 常见使用场景 - 在设备开发过程中验证 HAL 实现是否符合 Android 兼容性定义。 - 调试设备接口问题,尤其是在升级 Android 版本时。 - 执行接口兼容性测试(如参与 CTS/VTS 测试流程)。 ### 常用命令 - 查看当前设备的接口信息: ```bash vintf ``` - 生成设备的接口定义文件: ```bash vintf -p > current.xml ``` - 对比当前设备接口与指定 XML 文件的差异: ```bash vintf -d current.xml ``` - 仅输出设备信息(适用于调试): ```bash vintf --dump ``` ### 故障排查建议 - 如果执行 `vintf` 命令时出现错误,检查 `/system/lib/vndk` 和 `/vendor/lib/hw` 路径下的 HAL 模块是否完整。 - 确保设备的 `Android.mk` 或 `Android.bp` 文件中正确声明了 HAL 接口依赖。 - 使用 `vintf` 工具生成的 XML 文件与 AOSP 官方接口定义对比,排查接口匹配问题。 ### 开发者注意事项 - 在构建系统镜像前,确保所有 HAL 接口都通过 `vintf` 的验证。 - 若自定义了 HAL 接口,应同步更新接口定义 XML 文件,并确保其格式符合 AOSP 规范。 - 在 Android 11 及以上版本中,接口兼容性验证更为严格,需特别注意接口版本管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值