HIDL 原理及使用详解

HIDL 原理及使用详解Android 软件架构设计 hidl

大家好,欢迎来到IT知识分享网。

目录

1.  HIDL 概念

1.1. Hidl 的简单介绍

1.2. Hidl 的设计目的

1.3. Hidl 与 Aidl 的对比

2 . HIDL 类型 

2.1 Passthrough

2.2 Binderized

3. HIDL 服务的实现

3.1 hidl_gen 工具路径

3.2 update-makefiles.sh 

3.3 update-files.sh 

3.4 HIDL 生成的文件 

3.5 service 和 impl 关系

3.6 添加 rc 文件 

3.7 启动 service 

 3.8 实现 client 端

4 . 新旧软件架构对比

4.1 Android 8.0 之前架构图

 4.2 binder 驱动通讯的实现

4.3 使用 HIDL 设计软件架构


1.  HIDL 概念

1.1. Hidl 的简单介绍

1.2. Hidl 的设计目的

1.3. Hidl 与 Aidl 的对比

HIDL 原理及使用详解

2 . HIDL 类型 

2.1 Passthrough

2.2 Binderized

3. HIDL 服务的实现

3.1 hidl_gen 工具路径

代码目录:system/tools/hidl

HIDL 原理及使用详解

HIDL 原理及使用详解

3.2 update-makefiles.sh 

HIDL 原理及使用详解

HIDL 原理及使用详解

3.3 update-files.sh 

HIDL 原理及使用详解

HIDL 原理及使用详解

执行完之后自动生成了 default 目录

HIDL 原理及使用详解

创建后的 Android.bp 如下:

HIDL 原理及使用详解

        可以根据特殊的需要进行修改,例如,vendor 需要设为 true,这样编译出来的 so 位于 vendor 下面,而不是 system。也可以使用同样的方式为 FQName-service 创建对应的规则。 

 HIDL 原理及使用详解

3.4 HIDL 生成的文件 

 HIDL 原理及使用详解

HIDL 原理及使用详解

3.5 service 和 impl 关系

HIDL 原理及使用详解

service.端的 service.cpp 需要手动去编写,可以拷贝系统已存在的过来进行修改,比较简单

HIDL 原理及使用详解

3.6 添加 rc 文件 

3.7 启动 service 

 在 xml 中配置完成之后就直接 start;另外需要设置 selinux 中添加 te 文件,设置 domain 信息。对于selinux 配置,这里暂不分析

 3.8 实现 client 端

客户端的文件直接使用 java 文件引用编译生成的 java 静态库 android.hardware.helloworld-V1.0-java然后 IHelloWorld.getService(true); 来获取 HIDL 服务。这样就直接跳过 java – jni —c++

HIDL 原理及使用详解

接着可以直接在 HelloWorld.cpp 中引用 hal 层编译生成的 so 文件来操作硬件外设。

4 . 新旧软件架构对比

4.1 Android 8.0 之前架构图

HIDL 原理及使用详解

        这里的难度是在 binder 通讯那块,如果使用的是 Android 原生的就 不需要重新写。但是想要开发自己的中间件,就必须实现要去实现自己的 binder 驱动通讯。

 4.2 binder 驱动通讯的实现

        采用旧架构进行中间件的设计和开发架构图如下,这里忽略 app 到中间件的的调用流程,这个流程和HIDL 的一样。流程直接从 native 开始往下走。

HIDL 原理及使用详解

从上面的架构流程图可以看出,使用老技术开发操作硬件外设是非常的复杂和繁琐。涉及到的文件和知识点众多,无论是前期开发或者是后期的维护难度是非常大。因此,在 Android 8.0 之后的版本,采用了 HIDL进行软件架构重构,弃用之前的方法。HIDL 加快了相应速度,提高访问效率,而且代码简洁,接口逻辑清晰,开发和维护起来方便。

4.3 使用 HIDL 设计软件架构

有了前面 3 章节介绍 Hidl 的知识点之后,我们就可以设计出基于 HIDL 的软件架构。HIDL 原理及使用详解

通过新软件架构图和传统的软件架构图可以知道 HIDL 那层代替了原来的 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/113176.html

(0)
上一篇 2025-12-16 11:20
下一篇 2025-12-16 11:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信