HarmonyOS鸿蒙Next中在设备中运行HAP时提示“Hdc server port XXXX已被使用。请配置环境变量‘OHOS_HDC_SERVER_PORT’并重启DevEco Studio。”

HarmonyOS鸿蒙Next中在设备中运行HAP时提示“Hdc server port XXXX已被使用。请配置环境变量‘OHOS_HDC_SERVER_PORT’并重启DevEco Studio。” DevEco Studio启动后有这个提示,我按照官方提示将8710端口改成20351,但是DevEco Studio一启动这个端口还是占用,不启动就不占用,每次都是一个叫hdc.exe的进程占用,到底怎么回事

25 回复

这是因为 DevEco Studio 启动时自动拉起了旧版或残留的 hdc.exe 进程,导致新端口依然被抢占。

解决方法如下:

打开任务管理器,找到并结束所有 hdc.exe 进程。

检查系统环境变量,确保变量名为 OHOS_HDC_SERVER_PORT(而非 HDC_SERVER_PORT),值为 20351 。

彻底关闭并重启 DevEco Studio,它会自动以新端口拉起正确的 hdc 服务。

如果仍无效,建议更新 DevEco Studio 至最新版本,或手动删除 SDK 目录下的 hdc 相关文件后重启 IDE 让其自动修复 。

更多关于HarmonyOS鸿蒙Next中在设备中运行HAP时提示“Hdc server port XXXX已被使用。请配置环境变量‘OHOS_HDC_SERVER_PORT’并重启DevEco Studio。”的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


没用的,都不是最终解决办法,

好了,直接把系统重做了一遍。绝对万能的办法。,

尊敬的开发者,您好,
您重装系统之后,当前的问题解决了吗, 可以按官方文档:运行时提示“Hdc server port XXXX has been used”中的方式排查一下。https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-app-debugging-19

下午想起来给电脑系统更新了一下,然后这个问题确实是解决了,但是他又带出了另外一个问题,电脑开始蓝屏了。把更新卸载掉回退回去,这个问题又出现了,再更新回来唉,他又开始蓝屏了。我尼玛我都不知道怎么搞好了。,

  1. 右键点击“此电脑”选择“属性”,进入“高级系统设置” > “高级” > “环境变量”。

  2. 在“系统变量”或“用户变量”中,点击“新建”。

  3. 变量名设置为 OHOS_HDC_SERVER_PORT,变量值设置为一个未被占用的端口号,例如 7035 或 18710。

如果不行的话建议提交工单

你说的这种办法也已经尝试过了,没有用,我已经提了工单,

DevEco 启动后看到配置端口被 hdc.exe 占用,不一定是异常。官方 hdc 文档说明 hdc 包含 client、server、daemon;client 启动时如果 server 没运行,会启动一个新的 hdc 后台进程。server 默认监听电脑端 8710,也可以通过环境变量 OHOS_HDC_SERVER_PORT 修改。修改环境变量后,需要重启命令行窗口或使用 HarmonyOS SDK 的软件,例如 DevEco Studio。

建议排查:

where hdc
netstat -ano | findstr :20351
tasklist /FI "PID eq <pid>"

如果占用者就是 DevEco 拉起的 hdc.exe,这是正常服务进程;如果是其他程序或旧版本 SDK 的 hdc.exe 占用,再统一 SDK 路径、修改端口或结束旧 hdc 后重启 DevEco。

依据:hdc 调试命令官方文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hdc

很喜欢HarmonyOS的卡片式设计,信息一目了然,操作也更便捷。

每一次启动的hdc位置打开都是E:\DevEco Studio\sdk\default\openharmony\toolchains\hdc.exe,这不就是DevEco Studio自带的hdc么,

还需要装一下comd配置,那玩意在官方下载编辑器的小号,配置bin目录到环境变量,在运营hdc target之类的,就能获取链接的设备信息了,

算了,我都不知道到底怎么改好了。前一天晚上还能用,关个机,第2天晚上再开机,它就这样报错了,你说这东西到底怎么搞好?,

hdc.exe 是一个独立的后台进程,不是 DevEco Studio 的子进程,关闭 DevEco Studio 不会自动关闭它。

你可以试一下 直接用命令杀死所有的 hdc.exe 进程 , 我记得可以用这个指令

taskkill /F /IM hdc.exe

taskkill /f /im hdc.exe
taskkill /f /im hdc_std.exe
taskkill /f /im hdc-daemon.exe
taskkill /f /im devecostudio64.exe

四个命令都有尝试过,

然后依旧不行是吧 , 执行完成之后 用这个指令

netstat -ano | findstr :20351

看下 是否还在占用 , 如果这个还是不行的话

你输入这个指令 直接 禁用 hdc 启动 试试

禁用 hdc 自启动

sc config hdcservice start= disabled

删除服务

sc delete hdcservice

还有一点 执行完成指令之后 不仅要重新启动deveco 还有重启一下电脑

每一次启动的hdc位置打开都是E:\DevEco Studio\sdk\default\openharmony\toolchains\hdc.exe,这不就是DevEco Studio自带的hdc么,

命令行重启下hdc: hdc kill -r
换其他端口前看下,谁占用,netstat -ano | findstr :端口号
端口改成其他的也可以,找个5位数的,不易被占用。
hdc 运行原理图。
cke_1283.png

这个其实不是“异常占用”,而是:

你自己启动的 DevEco Studio 内置 hdc 服务,把端口占用了。

很多人第一次看到这个提示会误以为:

“是不是有别的软件占了端口”。

但实际上:

hdc.exe

本来就是 DevEco Studio 自带的设备调试服务。

类似 Android 的:

adb server

它启动后一定会监听一个端口。

你现在的问题本质是:

系统里存在“多个 hdc server”。

最常见场景:

  • 装过多个 DevEco Studio
  • 装过 OpenHarmony SDK
  • Win11 虚拟机也开着
  • 配置过独立 hdc
  • PATH 里有多个 hdc
  • 老版本 hdc 没退出

于是:

新的 DevEco Studio 启动时发现:

端口已被另一个 hdc server 占用

所以才提示:

请配置 OHOS_HDC_SERVER_PORT

但你现在:

即使改了端口,

启动后还是被占用。

原因其实是:

“启动后的 hdc 自己占用了这个端口”。

这是正常现象。

真正的问题不是:

“端口被占用”。

而是:

“有多个 hdc 在抢同一个端口”。

解决方案:

第一步:先确认系统里有几个 hdc

Windows CMD:

where hdc

如果输出多个:

C:\DevEco\hdc.exe
D:\HuaweiSDK\hdc.exe
...

那就说明系统里多个 hdc。

这是最常见原因。

第二步:杀掉所有 hdc

CMD:

taskkill /F /IM hdc.exe

然后:

netstat -ano | findstr 8710

确认端口已经释放。

第三步:只保留一个 hdc

建议:

只使用:

DevEco Studio 自带 hdc

路径一般:

DevEco-Studio/sdk/default/openharmony/toolchains/hdc.exe

不要混用:

  • 独立 hdc
  • 老版本 SDK
  • 虚拟机 hdc

第四步:设置环境变量(如果真冲突)

系统环境变量:

OHOS_HDC_SERVER_PORT=20351

然后:

彻底关闭 DevEco Studio。

注意:

不是点叉。

而是:

taskkill /F /IM hdc.exe
taskkill /F /IM deveco-studio64.exe

然后重新打开。

否则老 hdc 不会退出。

第五步:检查是否多个 DevEco 同时开

很多人:

  • 宿主机开一个
  • 虚拟机再开一个

两个 hdc 会直接冲突。

尤其:

Win11虚拟机 + 鸿蒙PC

特别容易出现。

另外还有一个 HarmonyOS 开发里的经典坑:

有时:

OHOS_HDC_SERVER_PORT

只改了系统变量,

但:

IDE 内部 hdc 还是旧端口。

这时候需要:

删除 hdc 缓存。

可以尝试删:

C:\Users\用户名\.hdc

或者:

C:\Users\用户名\AppData\Local\Huawei

然后重启。

最后说一下:

其实:

hdc.exe 占用端口

本身是正常行为。

因为 hdc 本来就是 server。

真正异常的是:

存在多个 hdc server

你现在大概率就是:

  • 多版本 DevEco
  • 虚拟机
  • 独立 hdc
  • PATH污染

其中之一导致的。

文字太多,晚上回家一个一个测试,

where hdc 信息:用提供的模式无法找到文件

taskkill /F /IM hdc.exe 提示已经成功终止进程,但是没一会hdc.exe有一次自动启动,Pid也跟着变化了

C:\Users\HW>taskkill /f /im hdc.exe 成功: 已终止进程 “hdc.exe”,其 PID 为 10960。

C:\Users\HW>netstat -ano | findstr 7045 TCP 127.0.0.1:7045 0.0.0.0:0 LISTENING 21644

不知道怎么搞了,

每一次启动的hdc位置打开都是E:\DevEco Studio\sdk\default\openharmony\toolchains\hdc.exe,这不就是DevEco Studio自带的hdc么,

可能是上一次你关闭DevEco Studio的时候有些进程被占用没有正确关闭。

建议重启一下系统再试试!

电脑重启了无数遍了,Deveco启动,这个hdc.exe就跟着一起启动,然后占用端口,Deveco关闭之后hdc.exe也自动关闭了,cmd看端口又不占用了,改了无数个端口都不管用。昨晚都重装了一遍还是不行。官方给出的解决方案都不管用,

该提示表明HDC(HarmonyOS Device Connector)的默认端口(通常为8710或8711)被其他进程占用。设置环境变量OHOS_HDC_SERVER_PORT为一个未被使用的端口号(例如8712),然后重启DevEco Studio即可解决。此操作不涉及Java或C语言。

DevEco Studio 内置的 hdc.exe 服务默认使用 8710 端口。即使你已经设置了 OHOS_HDC_SERVER_PORT=20351,启动 Studio 时它仍会尝试启动一个新的 hdc 服务并占用你指定的端口,但此时可能存在旧实例未完全退出或端口残留锁定,导致报“端口已被使用”。

解决很简单:

  1. 打开任务管理器,结束所有 hdc.exe 进程(确保没有运行)。
  2. 检查环境变量 OHOS_HDC_SERVER_PORT 是否已正确设置为 20351,且拼写无误。
  3. 重启 DevEco Studio。

这样 Studio 会用新端口启动服务。若还是冲突,换一个空闲端口如 20352 即可。

回到顶部