Android学习14 -- VINF和兼容性矩阵,Android学习14,VINF与兼容性矩阵详解

马肤
摘要:,,本文介绍了Android学习中的第14个主题,主要聚焦于VINF(Virtual Input Framework)和兼容性矩阵。文章指出,VINF在Android开发中扮演着重要角色,为开发者提供了创建虚拟输入设备的功能。兼容性矩阵在Android系统中也至关重要,确保不同设备和版本的Android系统能够无缝兼容应用。通过学习和理解这些内容,开发者可以更好地优化应用性能,提高用户体验。

Android学习14 -- VINF和兼容性矩阵,Android学习14,VINF与兼容性矩阵详解 第1张

周末琢磨这玩意让人欲罢不能,只能先暂时搁置看看,VINTF是供应商接口对象(VINTF 对象),它属于兼容性矩阵概念,这不禁让我想起了之前看过的一部电影,异次元杀阵。

基础知识

这是谷歌官方的图示,关于VINTF的基础概念,其实质就是两部分:设备提供的能力和系统需要的能力,通过查看这两者的兼容性,来判断它们是否能够匹配,这两者都是通过xml进行描述的,主要是在Android8之后,system和vendor为了兼容性而分离出来的,举个例子:

设备侧是通过Manifest进行描述的,路径为:device/VENDOR/DEVICE/manifest.xml,内容大致如下:

<device>
   <CONFIG_ANDROID>y</CONFIG_ANDROID>
   <CONFIG_ARM64>y</CONFIG_ARM64>
</device>

系统侧则是通过Matrix进行描述,路径为:/system/libhidl/manifest.xml,内容示例:

<service name="android.hidl.allocator" version="1.0">
   <interface name="IAllocator" transport="ashmem"/>
</service>

详细图示和更多关于Manifest类型、Makefile Target、生成文件等内容,可以参照VINTF的官方文档或相关博客,我们需要在/vendor/etc/vintf下增加device_manifest和device_framework_compatibility_matrix这两个xml文件。

服务构建与实践

从实践角度来说,要增加一个AIDL服务,大致分为两个步骤。

1、服务编写:首先在BP文件中增加对应的XML片段,如vintf_fragments: ["android.hardware.xxx-service.xml"],然后在代码中增加该xml,内容大致如下:

<service name="android.hardware.xxx" version="1">
   <interface name="Ixxx" transport="default"/>
</service>

之后正常编译。

2、运行环境搭建:主要是三个文件,增加系统需要的能力和设备提供的能力,具体命令如:

adb push compatibility_matrix.device.xml /system/etc/vintf/compatibility_matrix.device.xml
adb push compatibility_matrix.xml /vendor/etc/vintf/compatibility_matrix.xml
和上述的xml略有不同,主要是列出服务名称、版本和接口等信息,将之前构造服务的xml复制到板子的指定路径,如果运行服务出现错误,通常会提示Android servicemanager.cpp: servicemanager: Could not find in the VINTF manifest,这时一般就是xml没有正确拷贝。

验证

可以通过以下命令在设备端验证提供的能力:

查看HAL能力/system/bin/lshal --init-vintf

查看AIDL能力service list

参考资料

VINTF: manifest.xml | Cool Fish In Glacier

官方文档https://source.android.com/docs/core/architecture/vintf/resources?hl=zh-cn

VINTF简介-CSDN博客

清单 | Android 开源项目 | Android Open Source Project

仅供参考,具体操作可能因设备和系统版本而异,建议在官方文档和社区论坛中查找更详细和准确的信息。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码