供应商接口对象

本文档介绍供应商接口对象(VINTF 对象)的设计,该对象用于汇总设备的相关信息并通过可查询的 API 提供该信息。

VINTF 对象设计

VINTF 对象直接从设备中收集所需的一些信息。其他信息(如清单)以 XML 格式静态描述。

图 1. 清单、兼容性矩阵和可在运行时收集的信息

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

对于设备 对于框架
  • 定义静态组件(设备清单文件)的架构。
  • 添加构建时支持,从而对给定设备的设备清单文件进行定义。
  • 在运行时定义相应可查询的 API,以用于检索设备清单文件(以及其他可在运行时收集的信息)并将其打包到查询结果中。

无论何时收到请求,VINTF 对象都必须稳定可靠且能提供相同的完整信息(请见注意事项)。

清单和矩阵

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

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

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

本部分包含有关清单和矩阵的以下详细信息:

  • 清单定义了设备清单、框架清单和清单文件架构。
  • 兼容性矩阵定义了兼容性矩阵的架构。
  • FCM 生命周期详细说明了如何废弃和移除 HIDL HAL 以及如何修改 FCM 文件以反映 HAL 版本的状态。
  • 制定设备清单描述了供应商如何在设备清单中为新设备定义和声明目标 FCM 版本,或如何在升级旧设备的供应商映像时实现新的 HAL 版本并递增目标 FCM 版本。
  • 匹配规则定义了兼容性矩阵与清单之间成功匹配的规则。