1# hdc使用指导 2 3 4hdc(OpenHarmony Device Connector)是 OpenHarmony 为开发人员提供的用于调试的命令行工具,通过该工具可以在Windows/Linux/MacOS等系统上与开发机或者模拟器进行交互。 5 6 7下文将介绍hdc的环境准备和常用命令及使用举例。 8 9 10## 环境准备 11 12**hdc 工具获取方式:** 13 14通过OpenHarmony sdk获取,hdc在sdk的toolchains目录下。 15 16**使用举例:** 17 18下面以windows侧使用方式举例: 19 20获取windows的sdk,将hdc.exe放到磁盘某个位置即可使用。 21 22 23## 注意事项 24 25- 使用hdc,如果出现异常,可以尝试通过hdc kill命令杀掉hdc服务,或者通过hdc start -r命令重启服务进程进行解决。 26 27- 如果出现hdc list targets获取不到设备信息,通过任务管理器查看是否有hdc进程存在,如果进程存在,可以通过杀掉该进程进行解决。 28 29 30## option相关的命令 31 32option涉及以下命令: 33 34 35- **-h/help -v/version** 36 用于显示hdc相关的帮助、版本信息。 37 38 **表1** 命令说明 39 40 | 返回值 | 返回值说明| 41 | -------- | -------- | 42 | 返回对应信息 | 帮助或者版本信息 | 43 44 使用方法: 45 46 47 ``` 48 hdc -h / hdc help 49 ``` 50 51 52 ``` 53 hdc -v / hdc version 54 ``` 55 56- **-l 0-5** 57 用于指定运行时日志等级,默认为LOG_INFO。 58 59 **表2** 命令说明 60 61 | 参数 | 参数说明 | 62 | -------- | -------- | 63 | 0 | LOG_OFF | 64 | 1 | LOG_FATAL| 65 | 2 | LOG_WARN | 66 | 3 | LOG_INFO | 67 | 4 | LOG_DEBUG| 68 | 5 | LOG_ALL | 69 70 使用方法: 71 72 ``` 73 hdc -l5 start 74 ``` 75 76- **-t key** 77 用于连接指定设备标识为key的设备。 78 79 **表3** 命令说明 80 81 | 参数 | 参数说明 | 82 | -------- | -------- | 83 | key | 为 IP地址:port 格式,或者USB序列号 | 84 | **返回值** | **返回值说明** | 85 | ①error: device '\*\*\*' not found<br/>②Nothing to do... | ①设备不存在<br/>②附加的命令不存在 | 86 87 使用方法: 88 89 该option需要与具体的操作命令搭配使用,下面以shell命令举例: 90 91 hdc list targets (获取设备信息) 92 93 hdc -t _key_ shell (-t后面添加的_key_ 需要替换为上面查询的设备信息) 94 95 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 96 > 一台开发机可支持多个设备连接,每个设备有其唯一的设备标识,如果通过网络与设备连接,其标识为IP地址:port格式,如果通过USB连接则标识为设备sn号。该命令需要跟随具体操作命令。 97 98- **checkserver** 99 用于获取client-server版本。 100 101 **表4** 命令说明 102 103 | 返回值 | 返回值说明| 104 | -------- | -------- | 105 | Client version: server version: | client-server版本号 | 106 107 使用方法: 108 109 ``` 110 hdc checkserver 111 ``` 112 113 114## 查询设备列表的命令 115 116查询设备列表涉及以下命令: 117 118 119``` 120list targets[-v] 121``` 122 123 124显示所有已经连接的目标设备列表 125 126 127 **表5** 命令说明 128 129| 参数 | 参数说明| 130| -------- | -------- | 131| -v | 添加-v选项,则会打印设备详细信息 | 132| **返回值** | **返回值说明** | 133| ①返回设备信息<br/>②[Empty] | ①已经连接的设备列表信息<br/>②没有查询到设备信息 | 134 135 136使用方法: 137 138 139 140``` 141hdc list targets 142``` 143 144 145 146``` 147hdc list targets -v 148``` 149 150 151## 服务进程相关命令 152 153服务进程涉及以下命令: 154 155 156- **target mount** 157 以读写模式挂载系统分区。 158 159 **表6** 命令说明 160 161 | 参数 | 参数说明 | 162 | -------- | -------- | 163 | 无 | 无 | 164 | **返回值** | **返回值说明** | 165 | ①Mount finish<br/>②返回具体信息 | ①成功情况下返回的信息<br/>②失败情况下的具体信息 | 166 167 使用方法: 168 169 170 ``` 171 hdc target mount 172 ``` 173 174- **target boot** 175 设备重启。 176 177 使用方法: 178 179 180 ``` 181 hdc target boot 182 ``` 183 184- **smode [-r]** 185 授予后台服务进程root权限, 使用-r参数取消授权。 186 187 使用方法: 188 189 190 ``` 191 hdc smode 192 ``` 193 194 195 ``` 196 hdc smode -r 197 ``` 198 199- **kill [-r]** 200 终止服务进程。 201 202 **表7** 命令说明 203 204 | 参数 | 参数说明 | 205 | -------- | -------- | 206 | -r | 触发服务重启 | 207 | **返回值** | **返回值说明** | 208 | ①Kill server finish<br/>②返回具体信息 | ①成功情况下返回的信息<br/>②失败情况下的具体信息 | 209 210 使用方法: 211 212 ``` 213 hdc kill 214 ``` 215 216- **start [-r]** 217 启动服务进程。 218 219 **表8** 命令说明 220 221 | 参数 | 参数说明 | 222 | -------- | -------- | 223 | -r | 如果服务进程已经启动,-r选项会触发服务进程重新启动 | 224 | **返回值** | **返回值说明** | 225 | 无 | 无 | 226 227 使用方法: 228 229 ``` 230 hdc start 231 ``` 232 233 234## 网络相关的命令 235 236网络部分涉及以下命令: 237 238 239- **tconn host[:port][-remove]** 240 通过【ip地址:端口号】来指定连接的设备 241 242 **表9** 命令说明 243 244 | 参数 | 参数说明 | 245 | -------- | -------- | 246 | host[:port] | 为IP地址:port格式 | 247 | -remove | 表示断开与指定设备的连接 | 248 | **返回值** | **返回值说明** | 249 | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 250 251 使用方法(举例): 252 253 254 ``` 255 hdc tconn 192.168.0.100:8710 256 ``` 257 258- **tmode usb** 259 执行后设备端对应daemon进程重启,并首先选用USB连接方式。 260 261 **表10** 命令说明 262 263 | 参数 | 参数说明 | 264 | -------- | -------- | 265 | 无 | 无 | 266 | **返回值** | **返回值说明** | 267 | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 268 269 使用方法: 270 271 272 ``` 273 hdc tmode usb 274 ``` 275 276- **tmode port port-number** 277 执行后设备端对应daemon进程重启,并优先使用网络方式连接设备,如果连接设备失败,再选择USB连接。 278 279 **表11** 命令说明 280 281 | 参数 | 参数说明 | 282 | -------- | -------- | 283 | port-number | listen连接的网络端口号 | 284 | **返回值** | **返回值说明** | 285 | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 286 287 使用方法: 288 289 290 ``` 291 hdc tmode port 8710 292 ``` 293 294 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 295 > 执行完毕后,远端daemon将会退出并重启,默认启用TCP连接,如果不加上listen端口则listen随机端口。 296 297- **fport localnode remotenode** 298 端口转发,指定 主机端口 转发数据到 设备侧端口。 299 300 使用方法: 301 302 303 ``` 304 hdc fport tcp:1234 tcp:1080 305 ``` 306 307- **rport remotenode localnode** 308 端口转发,指定 设备侧端口 转发数据到 主机端口。 309 310 使用方法: 311 312 313 ``` 314 hdc rport tcp:2080 tcp:2345 315 ``` 316 317- **fport ls** 318 列出全部转发端口转发任务。 319 320 **表12** 命令说明 321 322 | 参数 | 参数说明 | 323 | -------- | -------- | 324 | 无 | 无 | 325 | **返回值** | **返回值说明** | 326 | 'tcp:1234 tcp:1080' [Forward] | 正向端口转发任务 | 327 | 'tcp:2080 tcp:2345' [Reverse] | 反向端口转发任务 | 328 329 使用方法: 330 331 332 ``` 333 hdc fport ls 334 ``` 335 336- **fport rm** 337 删除指定端口转发任务。 338 339 使用方法: 340 341 342 ``` 343 hdc fport rm tcp:1234 tcp:1080 344 ``` 345 346 347## 文件相关的命令 348 349文件部分涉及以下命令: 350 351 352- **file send local remote** 353 发送文件至远端设备。 354 355 **表13** 命令说明 356 357 | 参数 | 参数说明 | 358 | -------- | -------- | 359 | local | 本地待发送文件路径 | 360 | remote | 远程待接收文件路径 | 361 | **返回值** | **返回值说明** | 362 | ①返回具体信息<br/>②返回传输结果 | ①失败情况下的具体信息<br/>②成功传输的结果信息 | 363 364 使用方法(举例): 365 366 367 ``` 368 hdc file send E:\a.txt /data/local/tmp/a.txt 369 ``` 370 371- **file recv [-a] remote local** 372 从远端设备接收文件至本地。 373 374 **表14** 命令说明 375 376 | 参数 | 参数说明 | 377 | -------- | -------- | 378 | -a | 文件保留时间戳模式 | 379 | local | 本地待接收文件路径 | 380 | remote | 远程待发送文件路径 | 381 | **返回值** | **返回值说明** | 382 | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 383 384 使用方法(举例): 385 386 387 ``` 388 hdc file recv /data/local/tmp/a.txt ./a.txt 389 ``` 390 391 392## 应用相关的命令 393 394应用部分涉及以下命令: 395 396 397- **install [-r/-d/-g] _package_** 398 安装OpenHarmony APP package。 399 400 **表15** 命令说明 401 402 | 参数 | 参数说明 | 403 | -------- | -------- | 404 | package | OpenHarmony应用安装包文件名 | 405 | -r | 替换已存在应用 | 406 | -d | 允许降级安装 | 407 | -g | 应用动态授权 | 408 | **返回值** | **返回值说明** | 409 | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 410 411 使用方法(举例): 412 413 414 ``` 415 hdc install hwadmin.hap 416 ``` 417 418- **uninstall [-k] package** 419 卸载OpenHarmony应用。 420 421 **表16** 命令说明 422 423 | 参数 | 参数说明 | 424 | -------- | -------- | 425 | package | OpenHarmony应用安装包 | 426 | -k | 保留/data/cache | 427 | **返回值** | **返回值说明** | 428 | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 429 430 使用方法(举例): 431 432 433 ``` 434 hdc uninstall package 435 ``` 436 437 438## 调试相关的命令 439 440调试涉及以下命令: 441 442 443- **hilog** 444 支持抓取log信息。 445 446 **表17** 命令说明 447 448 | 参数 | 参数说明 | 449 | -------- | -------- | 450 | 无 | 无 | 451 | **返回值** | **返回值说明** | 452 | 返回具体信息 | 抓取的日志信息 | 453 454 抓取hilog日志: 455 456 457 ``` 458 hdc hilog 459 ``` 460 461 清理hilog缓存日志: 462 463 464 ``` 465 hdc shell "hilog -r" 466 ``` 467 468- **shell [_command_]** 469 远程执行命令或进入交互命令环境。 470 471 **表18** 命令说明 472 473 | 参数 | 参数说明 | 474 | -------- | -------- | 475 | command | 需要执行的单次命令 | 476 | **返回值** | **返回值说明** | 477 | 返回具体信息 | shell后面执行命令的结果信息 | 478 479 使用方法: 480 481 482 ``` 483 hdc shell 484 ``` 485 486- **jpid** 487 获取可调试进程列表。 488 489 使用方法: 490 491 492 ``` 493 hdc jpid 494 ``` 495 496 497## 常见问题 498 499 500### hdc连接不到设备 501 502- **现象描述** 503 执行 "hdc list targets"命令后结果为:[Empty] 504 505- **解决方法** 506 1. 设备没有被识别: 507 在设备管理器中查看是否有hdc设备,在通用串行总线设备中会有“HDC Device”信息。如果没有,hdc无法连接。此时需要断开并重联PC和OpenHarmony设备之间的USB连接,或者烧写最新的镜像。 508 2. hdc工作异常: 509 可以执行"hdc kill"或者"hdc start -r"杀掉hdc服务或者重启hdc服务,然后再执行hdc list targets查看是否已经可以获取设备信息。 510 3. hdc与设备不匹配: 511 如果设备烧写的是最新镜像,hdc也需要使用最新版本。 512 513 514### hdc运行不了 515 516- **现象描述** 517 点击hdc.exe文件无法运行。 518 519- **解决方法** 520 1. 运行环境异常: 521 linux版本建议ubuntu 18.04以上 64位,其他相近版本也可;libc++.so引用错误请使用ldd/readelf等命令检查库引用 windows版本建议windows10 64位,如果低版本windows winusb库缺失,请使用zadig更新库。对于复合设备,需要使用zadig工具安装libusb-win32驱动。 522 2. 如何运行hdc.exe: 523 hdc.exe不需要安装,直接放到磁盘上就能使用,也可以添加到环境变量中。通过打开cmd执行hdc命令直接使用。 524 525 526### hdc client如何远程访问hdc server 527 528- **使用场景** 529 530 本地client指定远程server上的设备,执行hdc命令。 531 532- **连接步骤** 533 1. 关闭本地sever: 534 ``` 535 hdc kill 536 ``` 537 2. **-s [ip:]port -m** 启动远程server: 538 ``` 539 hdc -s severIP:8710 -m 540 ``` 541 3. **-s [ip:]port command** 指定server执行指令: 542 ``` 543 hdc -s severIP:8710 list targets 544 ``` 545