没有合适的资源?快使用搜索试试~ 我知道了~
首页HIDL最全编译流程 .pdf
资源详情
资源评论
资源推荐
2020/4/10 HIDL最全编译流程 - 程序员大本营
https://www.pianshen.com/article/8772104324/ 1/11
程
序
员
大
本
营
技
术
文
章
内
容
聚
合
第
一
站
(https://www.pianshen.com)
首
页
/ (https://www.pianshen.com)
联
系
我
们
(mailto:pianshen@gmx.com)
搜索
HIDL最全编译流程
想 了 解 HIDL 介 绍 的 可 以 参 考 《 HIDL 概 述
(https://blog.csdn.net/u013357557/article/details/84561457)》,本篇文章主要介绍HIDL的详细编译
流程及简单的客户端应用(C++跟Android客户端的应用)。
一、准备工作
1. 整一套源码,Android O或者Android P的
2. 保证全套代码已经全编译,原生代码全编译命令
source build/envset.sh
lunch
make
3、hidl-gen工具已经安装,安装命令
make hidl-gen
二、hidl-gen工具介绍
系统定义的所有的 .hal 接口,都是通过 hidl-gen 工具转换成对应的代码。 hidl-gen 源码路径:
system/tools/hidl,是在ubuntu上可执行的二进制文件。
使用方法:hidl-gen -o output-path -L language (-r interface-root) fqname
例子:
hidl-gen -o hardware/interfaces/gunder/1.0/default/ -Lc++-impl -
randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport
android.hardware.gunder@1.0
参数说明:
-L: 语言类型,包括c++, c++-headers, c++-sources, export-header, c++-impl, java, java-constants, vts,
makefile, androidbp, androidbp-impl, hash等。 hidl-gen 可根据传入的语言类型产生不同的文件。
fqname: 完全限定名称的输入文件。比如本例中 android.hardware.gunder@1.0 ,要求在源码目录下必须有
hardware/interfaces/ gunder /1.0/ 目录。对于单个文件来说,格式如下: package@version::fileName ,
比如android.hardware. gunder @1.0::types.Feature。对于目录来说。格式如下 package@version ,比如
android.hardware. gunder @1.0 (mailto:%E6%AF%94%E5%A6%82android.hardware.power@1.0)。
-r: 格式package:path,可选,对fqname对应的文件来说,用来指定包名和文件所在的目录到Android系统源
码根目录的路径。如果没有制定,前缀默认是:android.hardware,目录是 Android 源码的根目录。
-o:存放hidl-gen产生的中间文件的路径。
可以使用hidl-gen 查看帮助,如图1:
2020/4/10 HIDL最全编译流程 - 程序员大本营
https://www.pianshen.com/article/8772104324/ 2/11
图1 hidl-gen的帮助信息
三、项目实例
1、在hardware/interfaces/目录下新建gunder/1.0目录,并在1.0目录中创建接口IGunder.hal。目录结
构如下:
gunder@ubuntu-MX8:~ /IMX8_b0beta2/hardware/interfaces/gunder$ tree
.
└── 1.0
└── IGunder.hal
IGunder.hal文件里面只有一个接口IGunder和一个方法helloWorld(string name),具体实现如下:
2、执行下面三条命令会自动生成对应的c++文件;
PACKAGE=android.hardware.gunder@1.0 (mailto:PACKAGE=android.hardware.gunder@1.0)
LOC=hardware/interfaces/gunder/1.0/default/
hidl-gen -o $LOC -Lc++-impl -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport
$PACKAGE
执行命令后的目录结构如下:
gunder@ubuntu-MX8:~ /IMX8_b0beta2$ PACKAGE=android.hardware.gunder@1.0
gunder@ubuntu-MX8:~ /IMX8_b0beta2$ LOC=hardware/interfaces/gunder/1.0/default/
gunder@ubuntu-MX8:~ /IMX8_b0beta2$ hidl-gen -o $LOC -Lc++-impl -
randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport $PACKAGE
gunder@ubuntu-MX8:~ /IMX8_b0beta2/hardware/interfaces/gunder$ tree
.
1 package android.hardware.gunder@1.0;
2
3 interface IGunder{
4 helloWorld(string name) generates (string result);
5 };
6
2020/4/10 HIDL最全编译流程 - 程序员大本营
https://www.pianshen.com/article/8772104324/ 3/11
└── 1.0
├── default
│ ├── Gunder.cpp
│ └── Gunder.h
└── IGunder.hal
default 是新生成的目录,Gunder.cpp和Gunder.h是新生成的两个文件,打开Gunder.h文件,去掉//
extern "C" IGunder* HIDL_FETCH_IGunder(const char* name); 前 面 的 注 释 , 使 用 直 通 式
HAL(Passthrough 模式)来通信。Gunder.h文件修改后如图2:
图2 Gunder.h修改后的内容
Gunder.cpp文件也要进行对应的修改,修改后如如图3:
剩余10页未读,继续阅读
woshiyanhaixia
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0