引言

HDC是指华为设备连接(Huawei Device Connector)工具。它的作用类似Android开发的ADB工具。在华为鸿蒙(HarmonyOS)操作系统的开发过程中,HDC工具起到了至关重要的作用。它允许开发者在开发主机(如 PC)和鸿蒙设备(如手机、平板、智能穿戴设备等)之间建立连接。通过这种连接,开发者可以将编译好的应用程序(.hap 文件)安装到设备上进行测试,也可以查看设备的日志信息,以帮助调试应用程序中可能出现的问题。

模拟器对应的HDC工具

在华为的SDK目录下有多个目录都有hdc.exe,但是一定要使用hmscore目录(hmscore\3.1.0\toolchains)下的hdc.exe。这个工具是和本地模拟器匹配的版本,其他目录下的hdc.exe和模拟器不匹配,无法使用。

按照以下步骤启动模拟器并连接:

  • 打开鸿蒙模拟器,等待模拟器完全启动并进入系统界面。
  • 在命令行终端输入 “hdc list targets -v” 命令,查看是否能够识别到模拟器设备。如果模拟器正常启动且连接成功,会显示模拟器的相关信息,类似 “emulator-5554 device”。

 

 然后就可以执行hdc shell命令实现各种操作了。例如./hdc shell ifconfig可以看到模拟器上的网卡信息。

PS D:\Huawei\SDK\hmscore\3.1.0\toolchains> ./hdc shell ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:34 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4630 TX bytes:4630

dummy0    Link encap:Ethernet  HWaddr f6:df:d7:78:2d:40
          inet6 addr: fe80::f4df:d7ff:fe78:2d40/64 Scope: Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:42477

eth0      Link encap:Ethernet  HWaddr 52:54:00:12:34:56  Driver virtio_net
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::9b3a:96ff:5078:1241/64 Scope: Link
          inet6 addr: fec0::2872:25a5:ccb1:4673/64 Scope: Site
          inet6 addr: fec0::f930:e2bd:faa4:f577/64 Scope: Site
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:562 errors:0 dropped:0 overruns:0 frame:0
          TX packets:971 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:60396 TX bytes:169189

wlan0     Link encap:Ethernet  HWaddr c2:1b:95:aa:1f:95  Driver mac80211_hwsim
          inet addr:10.0.2.16  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::c01b:95ff:feaa:1f95/64 Scope: Link
          inet6 addr: fec0::c01b:95ff:feaa:1f95/64 Scope: Site
          inet6 addr: fec0::8dd:abe4:c810:e7f5/64 Scope: Site
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:106 errors:0 dropped:0 overruns:0 frame:0
          TX packets:237 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:21742 TX bytes:46536

为什么在模拟器里面很难实现UDP服务器

从上面的日志可以看到,虚拟器中有两个网卡eth0和wlan0(如果没有打开wlan开关,则看不到wlan0).。这两个网卡的地址并不是本地的IP地址,而是10.0.2.*。实际上这两个地址并不是在PC机上直接可以访问的地址,它们隐藏在网关背后。

如果想让外面的程序访问到模拟器里面的服务器,就需要使用hdc tprot命令进行端口转发,如:hdc fport tcp:7913 tcp:7912将本地电脑的7913端口转发到手机7912端口。但是这种转发只支持TCP协议,不支持UDP协议。所以很难在模拟器里面实现UDP服务器。

结语

HDC是个很好用的工具,有了它可以软件就更方便了。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐