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关系。

VINTF供应商接口对象相关推荐

  1. 【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )

    文章目录 一.使用闭包创建接口对象 ( 接口中有一个函数 ) 二.使用闭包创建接口对象 ( 接口中有多个函数 ) 三.完整代码示例 一.使用闭包创建接口对象 ( 接口中有一个函数 ) 在 Groovy ...

  2. es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器

    文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...

  3. 旺店通·企业版对接打通金蝶云星空查询供应商接口与供应商新增接口

    旺店通·企业版对接打通金蝶云星空查询供应商接口与供应商新增接口 对接系统旺店通·企业版 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方 ...

  4. C#.NET学习笔记 -类,接口,对象

    在开始谈接口和类的总结之前,先来了解接口和类的基本概念.熟悉了概念再来看代码就容易理解些. 先来看类的概念:什么是类? 类是面向对象程序设计的核心,实际上是一种复杂的数据类型.将不同类型的数据和与这些 ...

  5. android 传递接口对象吗,android中Intent传递对象,需要实现Serializable接口或者Parcelable接口...

    Intent传递对象,有两种方法 1. 实现Serializable接口 类要生成序列化ID,并且不能是内部类 2. 实现Parcelable接口 参照Parcelable的doc文档 实现Seria ...

  6. 接口 对象 = new 实现类 与 实现类 对象= new 实现类

    Java 中到底是应该用接口类型 还是实现类的类类型去引用对象? //implA 为接口 ClassA为其实现类 implA a=new ClassA();//接口类型的引用变量A 去接收对象地址 o ...

  7. AOP拦截+权限验证+返回默认接口对象

    接口如:public IList<string> TestAOP(string token); public IMethodReturn Invoke(IMethodInvocation ...

  8. iStylePDF接口对象必知必会系列之Page

    Page--文档页面对象 指一个PDF页面,PDF页面中包含有内容和批注. 属性:  Index: 获取页面的索引值. Height: 页面的高度,以点为单位. Width: 页面的宽度,以点为单位. ...

  9. 【Kotlin】Kotlin 中使用 Lambda 表达式替代对象表达式原理分析 ( 尾随 Lambda - Trailing Lambda 语法 | 接口对象表达式 = 接口#函数类型对象 )

    文章目录 一.尾随 Lambda - Trailing Lambda 语法 二.Kotlin 中使用 Lambda 表达式替代对象表达式原理 1.Lambda 替换对象表达式 2.原理分析 3.示例分 ...

最新文章

  1. labview生成HTML报表,LabVIEW201
  2. document.getElementById vs jQuery $()
  3. Confluence 6 在升级之前
  4. 路由器mysql密码重置密码_【验证】mysql root密码恢复
  5. Qt:Qt使用WM_COPYDATA消息进行进程通信
  6. linux数据,Linux数据
  7. 递归实现组合型枚举(搜索)
  8. 东北大学文科能学计算机专业吗,东北大学有哪些好专业,文科理科专业分别有哪些...
  9. 客气:是礼貌,更是修养 — 《别输在不会表达上》
  10. 02-Go语言数据类型与变量
  11. [转]Banner设计“点横竖撇捺”
  12. 做软件,运气、天赋、智商、勤奋,你占了几样?
  13. 2018农行软开广州笔试+面试经历
  14. 汽车制动能量回收系统仿真模型
  15. 金蝶K3系统与防火墙集成部署方案
  16. 激光雷达RPLidar的配置(arduino和rasberrypi)
  17. linux capability详解与容器中的capability
  18. 浙江大学计算机学院就业办,浙江大学就业信息网
  19. 基于Heka+Flume+Kafka+ELK的日志系统
  20. mib2c : You didn‘t give mib2c a valid OID to start with.解决

热门文章

  1. 曲面显示器和直面显示器有什么区别 曲面显示器和直面显示器 哪个好
  2. Android Tasker应用之自动查询并显示话费流量套餐信息
  3. 以李白的风格写一首关于程序员的诗
  4. 神庙逃亡游戏设计 游戏基本框架搭建
  5. 4月30日世界表白日_世界表白日10月27日,一段感动到哭的表白
  6. 五寨天气预报软件测试,五寨天气(五寨天气预报)
  7. [MIT公开课(计算机教育中缺失的一课)]6. 版本控制(git)
  8. git进行项目管理的全部步骤
  9. 用钱买不到的救命、养生知识
  10. 2022中国国际智慧养老产业展览会,中国国际养老服务业展览会