☰
OpenHarmony hdc工具获取与安装完全指南
2026/10/3 7:10:34 网站建设 项目流程

搞OpenHarmony开发,hdc是绕不开的第一个坎。很多刚接触鸿蒙生态的朋友,第一反应是去翻文档,结果被各种术语绕晕,最后卡在“这工具到底上哪儿弄”这一步。我当初也是这么过来的,从官网到社区论坛翻了个遍,踩了不少坑才把hdc装好、跑通。所以这篇就把hdc的获取和安装从头到尾捋一遍,把常见的坑和排查思路也一并交代清楚。

hdc全称是OpenHarmony Device Connector,是OpenHarmony给开发者提供的命令行调试工具,作用相当于Android开发里的adb。它负责PC和OpenHarmony设备之间的通信,装应用、传文件、看日志、执行shell命令,全靠它。不管你是做应用开发、驱动调试,还是只想在模拟器上跑个demo,都绕不开hdc。这篇文章适合刚入门OpenHarmony、准备配置开发环境的新手,也适合已经在用但被各种报错折腾过的老手。

1. 理解hdc:它到底是什么,为什么不是adb

在动手安装之前,先把hdc的定位搞清楚。很多从Android转过来的开发者第一反应是“直接用adb不行吗”,这个问题我一开始也问过自己。

1.1 hdc与adb的异同

hdc在设计思路上确实参考了adb,两者都是客户端-服务端-守护进程的架构:PC端跑一个客户端命令,后台起一个服务进程,设备端有一个守护进程常驻,三者通过TCP或USB通信。但要明确,hdc是OpenHarmony自研的工具链,协议、命令格式、参数设计都跟adb有差异,不能简单替换。

我在实际使用中感受最明显的几点:

  • hdc没有像adb那样把全部命令都暴露成独立可执行文件,它把所有功能都集中在一个二进制里,通过子命令区分。
  • hdc的设备连接方式、服务端端口号、配置文件路径都和adb不同。
  • hdc对OpenHarmony特有的一些组件(比如Ability管理、分布式软总线相关调试)支持得更好。

如果项目里同时有Android设备和OpenHarmony设备,建议两个工具都保留,各管各的,避免混淆。

1.2 hdc在开发流程中的位置

搭好OpenHarmony开发环境后,日常操作基本是这套流程:用DevEco Studio写代码、编译出HAP包,然后通过hdc把HAP推到设备上安装。调试阶段,查看系统日志用的是hdc shell hilog,抓取设备信息用hdc shell param get,想截图用hdc shell snapshot_display。可以这么说,只要涉及设备交互,hdc就会出现在命令行的某个角落。

从工具链角度看,hdc就是连接PC与设备的“数据管道”。理解了这一点,后面遇到“连不上设备”“命令找不到”这类问题,排查思路就会清晰很多。

2. hdc获取渠道全梳理:哪条路最省心

关于hdc的下载,最让人头疼的是信息分散,官网、社区、镜像站各有一份,版本还不太一样。我把自己试过的几条路径整理出来,你按自己的情况选一条就行。

2.1 官方SDK包内获取:最稳妥的方式

目前最靠谱的获取方式,还是从OpenHarmony官网下载SDK包,hdc就集成在SDK的工具链目录里。不需要单独找hdc的下载链接,装好SDK后按目录找就行。

具体路径是SDK包里的toolchains目录,Windows版本下是hdc.exe,Linux和macOS版本下是名为hdc的可执行文件。以我用的Windows环境为例,解压SDK后,常见目录结构是这样的:

ohos-sdk-windows_xxx/ ├── toolchains/ │ ├── hdc.exe │ ├── hilog.exe │ ├── llvm/ │ └── ... ├── linux/ ├── windows/ └── ...

2.2 DevEco Studio自带:被忽略的最快路径

如果你平时用DevEco Studio做开发,其实不用专门去下载hdc。DevEco Studio安装后会内置一套OpenHarmony SDK,hdc就在SDK的toolchains目录里。

以DevEco Studio 4.0为例,默认安装路径可能在C:\Program Files\Huawei\DevEco Studio\sdk\default\openharmony\toolchains。Mac环境下,一般在/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains。要是你装了多个版本的SDK,可以在DevEco Studio的Settings > SDK Manager里查看具体路径。

这条路径的优点是版本匹配度最高,DevEco Studio下载的SDK和IDE是验证过兼容性的,省去自己比对版本的麻烦。

2.3 OpenHarmony镜像站与代码仓库

另外两个渠道也可以考虑,但要注意版本匹配问题。

一个是OpenHarmony的镜像站,比如华为云镜像和码云(Gitee)上的发布仓库。这些镜像会同步官方发布的SDK包,下载速度在国内反而更快。需要注意的是,镜像上可能有多个版本目录,要选对应的版本号,不要盲目下载最新的。

另一个是源码编译。如果你本身就在做OpenHarmony系统级开发,源码编译产物developtools_hdc的构建结果里自带hdc。构建完成后,产物一般在out/<产品名>/toolchains/hdc或out/<产品名>/developtools/hdc目录。非系统开发场景不建议走这条路,编译一次耗时太长,没必要。

2.4 Linux发行版与UOS等国产系统适配

在Linux环境(包括UOS)下安装hdc,有个细节需要注意:很多发行版不会把hdc打进软件源,不能用apt install hdc这样的命令直接装。我在UOS上试过,软件源里没有现成的hdc包。

Linux下的正确姿势,还是从SDK包或DevEco Studio的toolchains目录里取出hdc可执行文件,然后放到系统PATH包含的目录,比如/usr/local/bin。注意要给执行权限:

chmod +x hdc sudo cp hdc /usr/local/bin/

3. 安装与配置实战:从解压到跑通

这一部分我把从拿到hdc到能正常连接设备的过程完整走一遍,每一步都说明为什么这么做。

3.1 Windows环境安装步骤

Windows下的安装相对简单,核心是加环境变量。假设我把SDK解压到了D:\ohos-sdk,hdc.exe的完整路径是D:\ohos-sdk\toolchains\hdc.exe。

第一步,右键“此电脑”选“属性”,进“高级系统设置”,点“环境变量”。在“系统变量”里找到Path,点“编辑”,新建一行,填D:\ohos-sdk\toolchains。

第二步,验证安装。新开一个cmd窗口,输入:

hdc -v

能打印出版本号,比如hdc version xxx,就说明装好了。如果提示不是内部或外部命令,多半是环境变量没生效,或者路径填错了。新开的命令行窗口会重新读取环境变量,老窗口不行,这点最容易忽略。

3.2 Linux/macOS环境安装步骤

Linux和macOS的操作类似,关键是文件权限。拿到hdc可执行文件后,放到PATH目录并给执行权限:

chmod +x hdc sudo mv hdc /usr/local/bin/

如果你不想放系统目录,也可以放到用户目录,并把这个目录加到shell配置文件的PATH里,比如在~/.bashrc或~/.zshrc里加一行:

export PATH=$PATH:~/bin

然后source ~/.bashrc或source ~/.zshrc使其生效。

macOS上需要注意安全策略。hdc是从网上下载的可执行文件,macOS的Gatekeeper可能会拦截。遇到“无法验证开发者”的提示,去“系统偏好设置 > 安全性与隐私”里点“仍要打开”就行,或者用xattr -d com.apple.quarantine hdc去掉隔离属性再做验证。

3.3 设备端准备:开启开发者模式与USB调试

hdc装好了只是第一步,设备端如果不配合,一切白搭。OpenHarmony设备(包括开发板和部分手机)默认不开USB调试,需要在设备上手动打开。

一般路径是“设置 > 关于设备”里连续点击版本号,开启开发者模式,然后进入“开发者选项”,打开“USB调试”。不同设备的菜单名称可能不同,但核心逻辑一致。开发板场景下,有些板子是编译固件时默认开启,有些需要修改内核参数,这就要看具体板子的文档了。

3.4 USB连接与首次授权

用USB线把设备和电脑连起来后,设备上一般会弹出一个授权确认框,问是否允许USB调试。这里要留意,如果之前点过“取消”,后续再连接可能不再弹窗。这时候到设置里的“开发者选项”找“撤销USB调试授权”或类似选项,重新触发授权。

Windows下如果设备管理器里能看到一个带感叹号的未知设备,说明缺驱动。OpenHarmony设备的USB驱动在SDK的toolchains\usb_driver目录下,右键未知设备,选“更新驱动”,指向这个目录手动安装就可以。

3.5 网络模式连接:摆脱数据线

USB不是唯一连接方式,hdc还支持通过网络连接设备,这在开发板调试时特别有用。先让设备连上路由器,在设备上通过设置查看IP地址,然后在PC上执行:

hdc tconn 192.168.1.100:5555

端口号默认是5555,如果连不上,先确认设备端的hdc服务是否在监听。在设备端的串口或shell里执行hdc list targets,如果能看到127.0.0.1:5555,说明服务起来了。网络模式的优点是调试时不占用USB口,也方便远程协助,缺点是首次配网稍微麻烦一点。

3.6 验证安装:连接状态检查

连接好之后,执行:

hdc list targets

能看到一行设备信息,类似192.168.1.100:5555或USB序列号,就说明PC和设备的通道已经建立。再进一步,执行:

hdc shell

能进入设备的shell环境,说明hdc已经完全可用了。

4. 核心命令速查与日常使用技巧

hdc装好之后,最常用的命令大概就那几个。我按使用频率排个序,把参数和坑一并说明。

4.1 设备管理命令

hdc list targets # 列出当前连接的设备 hdc tconn ip:port # 通过IP端口连接设备 hdc tdisconn ip:port # 断开网络连接 hdc kill # 杀掉hdc服务端进程 hdc start # 启动hdc服务端进程

hdc kill这个命令很重要。hdc服务端偶尔会进入异常状态,比如连不上设备或者命令卡住,先杀再启,能解决很多莫名其妙的故障。我在排查问题时的第一反应就是hdc kill,这比反复拔插USB高效多了。

4.2 应用安装与卸载

hdc install hap包路径 # 安装HAP应用 hdc uninstall bundleName # 卸载应用 hdc install -r hap包路径 # 覆盖安装,保留数据

安装应用时,如果提示error: install failed due to signature error,一般是应用签名有问题。OpenHarmony默认只安装有正确签名的应用,调试时可以在设备上关闭签名校验,具体方法跟系统版本有关,查对应文档即可。

4.3 文件传输

hdc file send 本地路径 设备路径 # 推送文件到设备 hdc file recv 设备路径 本地路径 # 从设备拉取文件

文件传输是我用得最多的功能之一。日志文件、截图、配置文件,都是靠这两个命令往返。注意设备路径不一定跟Linux的路径规则完全一致,有些目录有权限限制,hdc file send到/data/local/tmp目录基本不会出错。

4.4 日志与Shell操作

hdc shell # 进入设备shell hdc shell hilog # 查看系统日志 hdc shell hilog -r # 清空日志 hdc shell snapshot_display # 截图 hdc shell param get | grep 关键词 # 查询系统参数

日志过滤是个高频需求。hdc shell hilog默认打印所有日志,信息量太大,实际使用中建议加过滤条件:

hdc shell "hilog | grep MyApp"

单引号和双引号的使用要留意,有些命令在Windows下解析会有差异,建议先用双引号包裹整条命令。

4.5 常用命令速查表

为了方便快速定位,我把常用命令整理成下面这个表格:

命令功能备注
hdc list targets列出已连接设备排查连接问题的第一步
hdc tconn ip:port网络连接设备端口默认5555
hdc install xxx.hap安装应用包加-r参数可覆盖安装
hdc uninstall bundleName卸载应用bundleName是应用的包名
hdc shell hilog查看日志建议加过滤条件
hdc file send src dest推送文件到设备目标路径要选好
hdc file recv src dest从设备拉取文件源路径是设备路径
hdc shell snapshot_display设备截图输出PNG文件到当前目录
hdc kill重启服务端解决大部分连接异常

5. 常见报错与排查思路:那些年我踩过的坑

hdc的使用过程中,报错是家常便饭。我把高频问题都整理出来,按实际排查经验说明怎么定位和解决。

5.1 hdc命令找不到

这个报错最直接,一般出在没有把toolchains目录加到环境变量,或者新开窗口前没保存配置。Windows下可以用where hdc查看系统找到的可执行文件路径,Linux下用which hdc。如果命令输出为空,说明PATH配置有问题。

一个隐蔽的情况是,电脑上装了多个版本的hdc,PATH优先级导致调用了旧的。执行hdc -v查看版本号,确认调用的是不是你想要的版本。我在一次升级SDK之后就遇到过,系统PATH里残留着旧版hdc路径,导致设备一直连不上,查了半天才发现是新旧版本不兼容。

5.2 设备列表为空

hdc list targets输出为空,说明PC没发现设备。按顺序排查:

  • 检查数据线,普通充电线只走电源不走数据,换根数据线试试。这是我遇到最多的原因,尤其在外面临时拿的线,很容易中招。
  • 检查设备端的“USB调试”是否真的打开了。
  • Windows下检查设备管理器有没有叹号设备,有就装驱动。
  • 重启hdc服务端,hdc kill后再试一次。

经常有这种情况:明明设备管理器里能看到设备,但hdc list targets还是空。这是hdc服务端启动时没识别到USB设备,hdc kill后重新执行hdc start或直接跑hdc list targets,服务端会自动启动并重新枚举。

5.3 设备状态显示unauthorized

设备状态是unauthorized,说明PC发起的调试请求没有得到设备授权。重新插拔USB线,或到设备上的“开发者选项”里撤销调试授权,再重新连接,一般能解决。还有一点需要注意,OpenHarmony的授权弹窗可能显示得比较隐晦,有时候要在设备上手动下拉通知栏,找到调试授权的通知并确认。

5.4 端口被占用

执行hdc命令时如果提示端口占用,一般是上一次hdc服务端非正常退出导致的。在终端执行:

hdc kill

如果杀不掉,Windows下可以在任务管理器里找hdc进程强制结束,或者用命令行查端口占用:

netstat -ano | findstr 8710

hdc服务端的默认端口是8710,找到占用进程的PID后结束它,再重新执行hdc命令。Linux下可以用lsof -i:8710查看占用情况。

5.5 版本不匹配

hdc和设备的通信协议在不同版本间可能有不兼容的情况。如果PC端hdc版本和设备的系统版本差距过大,执行命令时可能出现协议错误或者连接直接断开。

解决办法是尽量使用与设备系统版本配套的hdc。如果项目对版本要求严格,建议在SDK管理器里固定一个SDK版本,不要随意升级。我维护过好几台不同版本的OpenHarmony测试机,都会在本地保留对应的hdc,并用批处理或脚本区分调用,避免用错。

5.6 OpenHarmony渲染异常与hdc的关系

有朋友在群里问OpenHarmony画面渲染异常是否和hdc有关。这个问题要区分场景。如果只是通过hdc截图发现画面异常,先验证是设备自身渲染问题还是截图工具的问题。hdc的截图命令snapshot_display走的是系统图形栈的接口,截出来的图和设备实际显示不完全一致是可能的,尤其是涉及硬件合成器的场景。

可以试着在设备端直接看屏幕,如果设备上显示正常而hdc截图异常,那就是截图链路或合成流程的问题;如果设备本机显示就花屏、闪屏,那和hdc没有关系,应该从GPU驱动、图形渲染服务、内存带宽这些方向排查。

6. 进阶技巧:让hdc用得更顺手

基础功能跑通后,有几个小技巧能让日常开发效率提升不少。

6.1 用配置文件管理默认参数

hdc支持配置文件来设置默认参数,比如默认连接的目标设备、超时时间等。配置文件的位置在不同平台不一样,Windows下一般是%USERPROFILE%\.hdc\config.json,Linux下是~/.hdc/config.json。文件里可以指定:device字段设置默认设备序列号,timeout字段设置命令超时时间。这样在多设备场景下,不用每次执行命令都加设备参数。

6.2 组合命令实现自动化采集

日常调试中,经常需要同时抓取多种信息。可以把命令组合起来,一次性完成数据采集。比如下面这个脚本,一次性抓取系统参数、日志、截图:

# 在Linux或macOS下执行 mkdir -p debug_output hdc shell "param get | grep product" > debug_output/product_info.txt hdc shell "hilog -x" > debug_output/hilog.txt hdc shell snapshot_display > debug_output/screen.png

Windows下可以用批处理实现同样效果。这种组合方式在问题复现、bug反馈时特别好用,一次性把现场环境信息收集齐,不用来回折腾设备。

6.3 日志等级控制

hilog的日志输出等级是可以动态调整的。调试时如果觉得日志太吵,可以按模块过滤:

hdc shell "hilog -D -e 模块名"

或者想看更详细的日志,用-D开启debug级输出。具体的过滤语法在不同版本略有差异,使用前先hdc shell hilog --help看下当前版本的说明。

6.4 真机还是模拟器:hdc都管

hdc不只用于真机调试,OpenHarmony模拟器同样支持。模拟器启动后,本地会暴露一个端口,PC端的hdc连上去就能操作。不同模拟器的端口号不一样,常用的是hdc tconn 127.0.0.1:5555这样的形式连本机模拟器端口。模拟器调试和真机在hdc层面基本没有差别,安装、日志、文件操作都一致。

7. 不同平台的部署差异与选型建议

最后把几个平台的部署要点做个对比,方便按自己的环境对号入座。

平台获取方式关键配置主要坑点
WindowsSDK包或DevEco Studio环境变量PATH、USB驱动数据线只充电不传数据、驱动未装
LinuxSDK包,需手动部署chmod +x、PATH、udev规则软件源没有现成hdc包、权限不足
macOSSDK包或DevEco Studio安全策略信任、PATHGatekeeper拦截、架构不匹配
UOS等国产系统SDK包,需手动部署同Linux依赖库缺失

关于选型,我个人的建议是:如果只是做应用开发,用DevEco Studio自带的SDK就够了,省心省力;如果做的是系统级开发,最好直接跟随源码编译产物,能确保和当前系统镜像的版本完全一致;如果只是临时想试一下hdc,去官网下载对应系统的SDK包临时解压使用,也是可行的。

从OpenHarmony的发展趋势来看,命令行工具在开发流程中的地位只会越来越重要。环境配置好、命令用熟之后,很多效率问题会自动消失。希望这篇内容能帮你少走一些弯路。每个开发环境的细节都可能有差异,如果遇到上面没覆盖到的情况,欢迎在评论区交流。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询