鸿蒙设备连接器——HDC
HDC-鸿蒙设备连接器
- 简介
- 架构
- 目录
- pc端编译说明
- 预制pc端下载说明
- 1.通过git clone方式下载(建议)
- 2.通过网页形式下载
- 3.支持环境
- 命令帮助
- 使用问题自查说明
- FAQ
简介
HDC(Harmony Device Connector) 是OpenHarmony为开发人员提供的用于设备连接调试的命令行工具,pc端开发机使用命令行工具hdc_std(为方便起见,下文统称hdc),该工具需支持部署在Windows/Linux/Mac等系统上与鸿蒙设备(或模拟器)进行连接调试通信。PC端hdc工具需要针对以上开发机操作系统平台分别发布相应的版本,设备端hdc daemon需跟随设备镜像发布包括对模拟器进行支持。下文将介绍hdc的常用命令及使用举例。
架构
hdc主要有三部分组成:
- hdc client部分:运行于开发机上的客户端,用户可以在开发机命令终端(windows cmd/linux shell)下请求执行相应的hdc命令,运行于开发机器,其它的终端调试IDE也包含hdc client。
- hdc server部分:作为后台进程也运行于开发机器,server管理client和设备端daemon之间通信包括连接的复用、数据通信包的收发,以及个别本地命令的直接处理。
- hdc daemon部分:daemon部署于鸿蒙设备端作为守护进程来按需运行,负责处理来自client端的请求。
目录
/developtools
├── hdc_standard # hdc代码目录
│ └── src
│ ├── common # 设备端和host端公用的代码目录
│ ├── daemon # 设备端的代码目录
│ ├── host # host端的代码目录
│ ├── test # 测试用例的代码目录
│ └── prebuilt # 预编译目录,存放预编译的二进制文件
pc端编译说明
hdc pc端可执行文件编译步骤:
- 工程准备:更新下载整个工程,使得工程包含https://gitee.com/openharmony/build/pulls/89 等必要的提交。
- 编译命令:调试编译命令 在整个工程编译命令的基础上增加 “–build-target build_ohos_sdk --gn-args build_ohos_sdk=true” 参数即可。
- 编译:在目标开发机上运行上面调整好的sdk编译命令, 正常编译hdc_std会输出到sdk平台相关目录下; 注意: ubuntu环境下只能编译windows/linux版本工具,mac版需要在macos开发机上编译。
预制pc端下载说明
下载命令格式: git clone git@gitee.com:projectname/developtools_hdc_standard.git
git clone https://gitee.com/projectname/developtools_hdc_standard.git
其中 projectname为 本仓所在的开源社区项目英文名(譬如: openharmony)
完整命令示意: git clone git@gitee.com:openharmony/developtools_hdc_standard.git
或 git clone https://gitee.com/openharmony/developtools_hdc_standard.git
2.通过网页形式下载 通过网页形式下载prebuilt,请使用类似如下URL打开网页: https://gitee.com/openharmony/developtools_hdc_standard/blob/master/prebuilt/windows/hdc-std.exe
点击中间下载方式进行下载,windows版本文件大小在5M左右,linux版本在2M左右,请勿使用右击另存为方式进行保存下载,下载后检查文件大小(说三遍)。
3.支持环境 linux版本建议ubuntu 16.04以上 64位,其他相近版本也可;libc++.so引用错误请使用ldd/readelf等命令检查库引用 windows版本建议windows10 64位,如果低版本windows winusb库缺失,请使用zadig更新库。
命令帮助
hdc当前常用命令如下,未尽命令使用hdc -h或者hdc --help查看:
表 1 hdc常用命令列表
Option | Description |
---|---|
-t key | 用于指定连接该指定设备识Key举例:hdc -t *****(设备id) shell |
-s socket | 用于指定服务监听的socket配置举例:hdc -s ip:port |
-h/help -v/version | 用于显示hdc相关的帮助、版本信息 |
list targets[-v] | 显示所有已经连接的目标设备列表,-v选项显示详细信息举例: hdc list targets |
target mount | 以读写模式挂载/system等分区举例: hdc target mount |
smode [off] | 授予后台服务进程root权限, 使用off参数取消授权举例: hdc smode |
kill [-r] | 终止hdc服务进程, -r选项会触发再次重启hdc server举例: hdc kill |
start [-r] | 启动hdc服务进程, -r选项会触发重启hdc server举例: hdc start |
tconn host[:port][-remove] | 通过【ip地址:端口号】来指定连接的设备举例: hdc tconn 192.168.0.100:10178 |
tmode usb | 执行后设备端对应daemon进程重启,并首先选用usb连接方式 |
tmode port port-number | 执行后设备端对应daemon进程重启,并优先使用网络方式连接设备,如果连接设备再选择usb连接 |
file send local remote | 从host端发送文件至设备端举例: hdc file send E:\a.txt /data/local/tmp/a.txt |
file recv [-a] remote local | 从设备端拉出文件至本地host端举例: hdc file recv /data/local/tmp/a.txt ./a.txt |
install [-r/-d/-g] package | 安装OpenHarmony package举例: hdc install E:***.hap |
uninstall [-k] package | 卸载OpenHarmony应用 |
hilog | 支持查看抓取hilog调试信息举例: hdc hilog |
shell [command] | 远程执行命令或进入交互命令环境举例: hdc shell |
以下是常用hdc命令示例,供开发者参考:
-
查看设备连接信息
hdc list targets
-
往设备中推送文件
hdc file send E:\a.txt /data/local/tmp/a.txt
-
从设备中拉取文件
hdc file recv /data/local/tmp/a.txt ./a.txt
-
安装应用
hdc install E:\***.hap
-
查看日志
hdc hilog
-
进入命令行交互模式
hdc shell
-
网络连接。
hdc tconn 192.168.0.100:8710
使用问题自查说明
工具使用过程中碰到问题,可以参考如下流程自助排查:
- step1: 先检查pc(host)端hdc_std 和L2设备端hdcd版本是否一致(-v 查看版本):
- step1a: 版本不一致请更新使用一致版本再验证;
- step1b: 版本一致请继续下面排查step2步骤;
- step2: 检查pc(host)端设备管理器设备信息是否正常(设备是否正常加载显示、驱动、id是否正常):
- step2a: 设备管理器设备异常或无设备, 请结合板测试设备端串口下确认下usb部分设备枚举上报是否异常;
- step2b: 设备管理器设备正常时, 1)list targets 是否正常;2)hdc_std kill 后重试是否正常;
注意:客户端和设备端版本保持一致(-v参数查看版本)!
注意:客户端和设备端版本保持一致(-v参数查看版本)!
注意:客户端和设备端版本保持一致(-v参数查看版本)!
FAQ
- list targets无设备: 请参考上面《使用问题自查说明》小节, 1)检查设备是否连接正常;2)host端设备管理器设备信息是否正常;3)两端工具版本是否一致;4)设备端hdcd是否启动正常;
- 同样版本windows下正常,linux下无设备:同问题1同样排查步骤,另外注意在root权限下执行;
- windows版本工具无法执行报错:1)确认git lfs正常并使用git clone下载本工具仓预制二进制文件;2)检查文件大小和版本; 3)友情提示:本工具是控制台命令行下执行即可,不需要安装,不要尝试双击运行;
L2设备端hdcd版本如何查看呢?
讲了一堆概念问题,就没有说下载压缩包后,怎么安装?怎么配,安卓的adb 安装使用都比这讲的清楚;
pc端编译说明,第2条编译命令,在整个工程编译命令的基础上增加 “–build-target build_ohos_sdk --gn-args build_ohos_sdk=true” 参数之后,编译失败,提示“[OHOS ERROR] ninja: error: unknow target 'build_ohos_sdk'”
--product-name 为 ohos-sdk,--build-target 可以编译buils_ohos_sdk