subsys-toolchain-hdc-guide.md 11.7 KB
Newer Older
D
duangavin123 已提交
1
# hdc_std使用指导
M
mamingshuai 已提交
2

D
duangavin123 已提交
3

D
duangavin123 已提交
4
hdc_std(OpenHarmony Device Connector)是 OpenHarmony 为开发人员提供的用于调试的命令行工具,通过该工具可以在Windows/Linux/MacOS等系统上与开发机或者模拟器进行交互。
M
mamingshuai 已提交
5 6


D
duangavin123 已提交
7
下文将介绍hdc_std的环境准备和常用命令及使用举例。
M
mamingshuai 已提交
8 9


D
duangavin123 已提交
10 11 12
## 环境准备

**hdc_std 工具获取方式:**
M
mamingshuai 已提交
13

14
通过OpenHarmony sdk获取,hdc_std在sdk的toolchains目录下。
15

M
mamingshuai 已提交
16 17 18 19
**使用举例:**

下面以windows侧使用方式举例:

20
获取windows的sdk,将hdc_std.exe放到磁盘某个位置即可使用。
M
mamingshuai 已提交
21 22


D
duangavin123 已提交
23 24 25 26 27 28
## 注意事项

- 使用hdc_std,如果出现异常,可以尝试通过hdc_std kill命令杀掉hdc_std服务,或者通过hdc_std start -r命令重启服务进程进行解决。

- 如果出现hdc_std list targets获取不到设备信息,通过任务管理器查看是否有hdc_std进程存在,如果进程存在,可以通过杀掉该进程进行解决。

M
mamingshuai 已提交
29

D
duangavin123 已提交
30
## option相关的命令
M
mamingshuai 已提交
31

D
duangavin123 已提交
32
option涉及以下命令:
M
mamingshuai 已提交
33 34


D
duangavin123 已提交
35 36
- **-h/help -v/version**
  用于显示hdc相关的帮助、版本信息。
M
mamingshuai 已提交
37

D
duangavin123 已提交
38 39
    **表1** 命令说明
  
40
  | 返回值 | 返回值说明| 
D
duangavin123 已提交
41 42
  | -------- | -------- |
  | 返回对应信息 | 帮助或者版本信息 | 
M
mamingshuai 已提交
43

D
duangavin123 已提交
44
  使用方法:
M
mamingshuai 已提交
45

D
duangavin123 已提交
46 47 48 49
    
  ```
  hdc_std -h / hdc_std help
  ```
M
mamingshuai 已提交
50

D
duangavin123 已提交
51 52 53 54
    
  ```
  hdc_std -v / hdc_std version
  ```
M
mamingshuai 已提交
55

56 57 58 59 60 61 62
- **-l 0-5**
  用于指定运行时日志等级,默认为LOG_INFO。

    **表2** 命令说明
  
  | 参数 | 参数说明 | 
  | -------- | -------- |
63 64 65 66 67 68
  | 0 | LOG_OFF  |
  | 1 | LOG_FATAL|
  | 2 | LOG_WARN |
  | 3 | LOG_INFO |
  | 4 | LOG_DEBUG|
  | 5 | LOG_ALL  |
69 70 71 72 73 74 75

  使用方法:

  ```
  hdc_std -l5 start
  ```

D
duangavin123 已提交
76 77 78
- **-t key**
  用于连接指定设备标识为key的设备。

79
    **表3** 命令说明
D
duangavin123 已提交
80
  
81
  | 参数 | 参数说明 | 
D
duangavin123 已提交
82 83 84 85 86 87
  | -------- | -------- |
  | key | 为 IP地址:port 格式,或者USB序列号 | 
  | **返回值** | **返回值说明** | 
  | ①error:&nbsp;device&nbsp;'\*\*\*'&nbsp;not&nbsp;found<br/>②Nothing&nbsp;to&nbsp;do... | ①设备不存在<br/>②附加的命令不存在 | 

  使用方法:
M
mamingshuai 已提交
88

D
duangavin123 已提交
89
  该option需要与具体的操作命令搭配使用,下面以shell命令举例:
M
mamingshuai 已提交
90

D
duangavin123 已提交
91
  hdc_std list targets  (获取设备信息)
M
mamingshuai 已提交
92

D
duangavin123 已提交
93
  hdc_std  -t  _key_  shell  (-t后面添加的_key_ 需要替换为上面查询的设备信息)
M
mamingshuai 已提交
94

D
duangavin123 已提交
95
  > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
96
  > 一台开发机可支持多个设备连接,每个设备有其唯一的设备标识,如果通过网络与设备连接,其标识为IP地址:port格式,如果通过USB连接则标识为设备sn号。该命令需要跟随具体操作命令。
M
mamingshuai 已提交
97

98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
- **checkserver**
  用于获取client-server版本。

    **表4** 命令说明
  
  | 返回值 | 返回值说明| 
  | -------- | -------- |
  | Client version:  server version: | client-server版本号 |

  使用方法:

  ```
  hdc_std checkserver
  ```

D
duangavin123 已提交
113 114

## 查询设备列表的命令
M
mamingshuai 已提交
115 116 117

查询设备列表涉及以下命令:

D
duangavin123 已提交
118 119 120 121 122
  
```
list targets[-v]
```

M
mamingshuai 已提交
123 124 125

显示所有已经连接的目标设备列表

D
duangavin123 已提交
126

127
  **表5** 命令说明
D
duangavin123 已提交
128

129
| 参数 | 参数说明| 
D
duangavin123 已提交
130 131 132 133 134
| -------- | -------- |
| -v | 添加-v选项,则会打印设备详细信息 | 
| **返回值** | **返回值说明** | 
| ①返回设备信息<br/>②[Empty] | ①已经连接的设备列表信息<br/>②没有查询到设备信息 | 

M
mamingshuai 已提交
135 136 137 138

使用方法:


D
duangavin123 已提交
139 140 141 142 143 144 145 146 147 148
  
```
hdc_std list targets
```


  
```
hdc_std list targets -v
```
M
mamingshuai 已提交
149

D
duangavin123 已提交
150 151

## 服务进程相关命令
M
mamingshuai 已提交
152 153 154 155

服务进程涉及以下命令:


D
duangavin123 已提交
156 157
- **target mount**
  以读写模式挂载系统分区。
M
mamingshuai 已提交
158

159
    **表6** 命令说明
D
duangavin123 已提交
160
  
161
  | 参数 | 参数说明 | 
D
duangavin123 已提交
162 163 164 165
  | -------- | -------- |
  | 无 | 无 | 
  | **返回值** | **返回值说明** | 
  | ①Mount&nbsp;finish<br/>②返回具体信息 | ①成功情况下返回的信息<br/>②失败情况下的具体信息 | 
M
mamingshuai 已提交
166

D
duangavin123 已提交
167
  使用方法:
M
mamingshuai 已提交
168

D
duangavin123 已提交
169 170 171 172
    
  ```
  hdc_std target mount
  ```
M
mamingshuai 已提交
173

174 175 176 177 178 179 180 181 182 183 184 185
- **target boot**
  设备重启。

  使用方法:

 
  ```
  hdc_std target boot
  ```

- **smode [-r]**
  授予后台服务进程root权限, 使用-r参数取消授权。
M
mamingshuai 已提交
186

D
duangavin123 已提交
187
  使用方法:
M
mamingshuai 已提交
188

D
duangavin123 已提交
189 190 191 192
    
  ```
  hdc_std smode
  ```
M
mamingshuai 已提交
193

D
duangavin123 已提交
194 195
    
  ```
196
  hdc_std smode -r
D
duangavin123 已提交
197
  ```
M
mamingshuai 已提交
198

D
duangavin123 已提交
199 200 201
- **kill [-r]**
  终止服务进程。

202
    **表7** 命令说明
D
duangavin123 已提交
203
  
204
  | 参数 | 参数说明 | 
D
duangavin123 已提交
205 206 207 208 209 210 211 212 213 214
  | -------- | -------- |
  | -r | 触发服务重启 | 
  | **返回值** | **返回值说明** | 
  | ①Kill&nbsp;server&nbsp;finish<br/>②返回具体信息 | ①成功情况下返回的信息<br/>②失败情况下的具体信息 | 

    使用方法:
    
  ```
  hdc_std kill
  ```
M
mamingshuai 已提交
215

D
duangavin123 已提交
216 217
- **start [-r]**
  启动服务进程。
M
mamingshuai 已提交
218

219
    **表8** 命令说明
D
duangavin123 已提交
220
  
221
  | 参数 | 参数说明 |
D
duangavin123 已提交
222 223 224 225 226 227 228 229 230 231 232 233 234
  | -------- | -------- |
  | -r | 如果服务进程已经启动,-r选项会触发服务进程重新启动 | 
  | **返回值** | **返回值说明** | 
  | 无 | 无 | 

    使用方法:
    
  ```
  hdc_std start
  ```


## 网络相关的命令
M
mamingshuai 已提交
235 236 237 238

网络部分涉及以下命令:


D
duangavin123 已提交
239 240
- **tconn host[:port][-remove]**
  通过【ip地址:端口号】来指定连接的设备
M
mamingshuai 已提交
241

242
    **表9** 命令说明
D
duangavin123 已提交
243
  
244
  | 参数 | 参数说明 | 
D
duangavin123 已提交
245 246 247 248 249
  | -------- | -------- |
  | host[:port] | 为IP地址:port格式 | 
  | -remove | 表示断开与指定设备的连接 | 
  | **返回值** | **返回值说明** | 
  | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 
M
mamingshuai 已提交
250

D
duangavin123 已提交
251 252 253 254 255 256 257 258
  使用方法(举例):

    
  ```
  hdc_std tconn 192.168.0.100:8710
  ```

- **tmode usb**
259
  执行后设备端对应daemon进程重启,并首先选用USB连接方式。
M
mamingshuai 已提交
260

261
    **表10** 命令说明
D
duangavin123 已提交
262
  
263
  | 参数 | 参数说明 | 
D
duangavin123 已提交
264 265 266 267
  | -------- | -------- |
  | 无 | 无 | 
  | **返回值** | **返回值说明** | 
  | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 
M
mamingshuai 已提交
268

D
duangavin123 已提交
269
  使用方法:
M
mamingshuai 已提交
270

D
duangavin123 已提交
271 272 273 274 275 276
    
  ```
  hdc_std tmode usb
  ```

- **tmode port port-number**
277
  执行后设备端对应daemon进程重启,并优先使用网络方式连接设备,如果连接设备失败,再选择USB连接。
D
duangavin123 已提交
278

279
    **表11** 命令说明
D
duangavin123 已提交
280
  
281 282
  | 参数 | 参数说明 |
  | -------- | -------- | 
D
duangavin123 已提交
283 284 285 286 287 288 289 290 291 292 293 294 295 296
  | port-number | listen连接的网络端口号 | 
  | **返回值** | **返回值说明** | 
  | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 

  使用方法:

    
  ```
  hdc_std tmode port 8710
  ```

  > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
  > 执行完毕后,远端daemon将会退出并重启,默认启用TCP连接,如果不加上listen端口则listen随机端口。

297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345
- **fport localnode remotenode**
  端口转发,指定 主机端口 转发数据到 设备侧端口。

  使用方法:

    
  ```
  hdc_std fport tcp:1234 tcp:1080
  ```

- **rport remotenode localnode**
  端口转发,指定 设备侧端口 转发数据到 主机端口。

  使用方法:

    
  ```
  hdc_std rport tcp:2080 tcp:2345 
  ```

- **fport ls**
  列出全部转发端口转发任务。

    **表12** 命令说明
  
  | 参数 | 参数说明 | 
  | -------- | -------- |
  | 无 | 无 | 
  | **返回值** | **返回值说明** | 
  | 'tcp:1234 tcp:1080'     [Forward] | 正向端口转发任务 | 
  | 'tcp:2080 tcp:2345'     [Reverse] | 反向端口转发任务 | 

  使用方法:

    
  ```
  hdc_std fport ls 
  ```

- **fport rm**
  删除指定端口转发任务。

  使用方法:

    
  ```
  hdc_std fport rm tcp:1234 tcp:1080 
  ```

D
duangavin123 已提交
346 347

## 文件相关的命令
M
mamingshuai 已提交
348 349 350

文件部分涉及以下命令:

D
duangavin123 已提交
351 352 353 354

- **file send local remote**
  发送文件至远端设备。

355
    **表13** 命令说明
D
duangavin123 已提交
356
  
357
  | 参数 | 参数说明 | 
D
duangavin123 已提交
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373
  | -------- | -------- |
  | local | 本地待发送文件路径 | 
  | remote | 远程待接收文件路径 | 
  | **返回值** | **返回值说明** | 
  | ①返回具体信息<br/>②返回传输结果 | ①失败情况下的具体信息<br/>②成功传输的结果信息 | 

  使用方法(举例):

    
  ```
  hdc_std file send E:\a.txt   /data/local/tmp/a.txt
  ```

- **file recv [-a] remote local**
  从远端设备接收文件至本地。

374
    **表14** 命令说明
D
duangavin123 已提交
375
  
376
  | 参数 | 参数说明 | 
D
duangavin123 已提交
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392
  | -------- | -------- |
  | -a | 文件保留时间戳模式 | 
  | local | 本地待接收文件路径 | 
  | remote | 远程待发送文件路径 | 
  | **返回值** | **返回值说明** | 
  | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 

  使用方法(举例):

    
  ```
  hdc_std file recv  /data/local/tmp/a.txt   ./a.txt
  ```


## 应用相关的命令
M
mamingshuai 已提交
393 394 395 396

应用部分涉及以下命令:


D
duangavin123 已提交
397 398
- **install [-r/-d/-g] _package_**
  安装OpenHarmony APP package。
M
mamingshuai 已提交
399

400
    **表15** 命令说明
D
duangavin123 已提交
401
  
402
  | 参数 | 参数说明 | 
D
duangavin123 已提交
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
  | -------- | -------- |
  | package | OpenHarmony应用安装包文件名 | 
  | -r | 替换已存在应用 | 
  | -d | 允许降级安装 | 
  | -g | 应用动态授权 | 
  | **返回值** | **返回值说明** | 
  | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 

  使用方法(举例):

    
  ```
  hdc_std install hwadmin.hap
  ```

- **uninstall [-k] package**
  卸载OpenHarmony应用。

421
    **表16** 命令说明
D
duangavin123 已提交
422
  
423
  | 参数 | 参数说明 | 
D
duangavin123 已提交
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440
  | -------- | -------- |
  | package | OpenHarmony应用安装包 | 
  | -k | 保留/data/cache | 
  | **返回值** | **返回值说明** | 
  | ①返回具体信息<br/>②无 | ①失败情况下的具体信息<br/>②成功情况下无返回值 | 

  使用方法(举例):

    
  ```
  hdc_std uninstall package
  ```


## 调试相关的命令

调试涉及以下命令:
M
mamingshuai 已提交
441 442


D
duangavin123 已提交
443 444
- **hilog**
  支持抓取log信息。
M
mamingshuai 已提交
445

446
    **表17** 命令说明
D
duangavin123 已提交
447
  
448
  | 参数 | 参数说明 | 
D
duangavin123 已提交
449 450 451 452
  | -------- | -------- |
  | 无 | 无 | 
  | **返回值** | **返回值说明** | 
  | 返回具体信息 | 抓取的日志信息 | 
D
duangavin123 已提交
453

D
duangavin123 已提交
454
  抓取hilog日志:
D
duangavin123 已提交
455

D
duangavin123 已提交
456 457 458 459
    
  ```
  hdc_std hilog
  ```
D
duangavin123 已提交
460

D
duangavin123 已提交
461
  清理hilog缓存日志:
D
duangavin123 已提交
462

D
duangavin123 已提交
463 464 465 466
    
  ```
  hdc_std shell "hilog -r"
  ```
D
duangavin123 已提交
467

D
duangavin123 已提交
468 469
- **shell [_command_]**
  远程执行命令或进入交互命令环境。
D
duangavin123 已提交
470

471
    **表18** 命令说明
D
duangavin123 已提交
472
  
473 474
  | 参数 | 参数说明 |
  | -------- | -------- |  
D
duangavin123 已提交
475 476 477
  | command | 需要执行的单次命令 | 
  | **返回值** | **返回值说明** | 
  | 返回具体信息 | shell后面执行命令的结果信息 | 
D
duangavin123 已提交
478

D
duangavin123 已提交
479
  使用方法:
D
duangavin123 已提交
480

D
duangavin123 已提交
481 482 483 484
    
  ```
  hdc_std shell
  ```
D
duangavin123 已提交
485

486 487 488 489 490 491 492 493 494 495
- **jpid**
  获取可调试进程列表。

  使用方法:

    
  ```
  hdc_std jpid
  ```

D
duangavin123 已提交
496

D
duangavin123 已提交
497
## 常见问题
D
duangavin123 已提交
498 499


D
duangavin123 已提交
500
### hdc_std连接不到设备
D
duangavin123 已提交
501

D
duangavin123 已提交
502 503
- **现象描述**
  执行 "hdc_std list targets"命令后结果为:[Empty]
D
duangavin123 已提交
504

D
duangavin123 已提交
505 506 507 508 509 510 511
- **解决方法**
  1. 设备没有被识别:
      在设备管理器中查看是否有hdc设备,在通用串行总线设备中会有“HDC Device”信息。如果没有,hdc无法连接。此时需要断开并重联PC和OpenHarmony设备之间的USB连接,或者烧写最新的镜像。
  2. hdc_std工作异常:
      可以执行"hdc kill"或者"hdc start -r"杀掉hdc服务或者重启hdc服务,然后再执行hdc list targets查看是否已经可以获取设备信息。
  3. hdc_std与设备不匹配:
      如果设备烧写的是最新镜像,hdc_std也需要使用最新版本。
D
duangavin123 已提交
512 513


D
duangavin123 已提交
514
### hdc_std运行不了
D
duangavin123 已提交
515

D
duangavin123 已提交
516 517
- **现象描述**
  点击hdc_std.exe文件无法运行。
D
duangavin123 已提交
518

D
duangavin123 已提交
519 520
- **解决方法**
  hdc_std.exe不需要安装,直接放到磁盘上就能使用,也可以添加到环境变量中。通过打开cmd执行hdc_std命令直接使用。
521 522 523 524 525


### hdc client如何远程访问hdc server

- **使用场景**
526

527 528 529 530 531 532 533 534 535 536 537 538 539 540 541
  本地client指定远程server上的设备,执行hdc命令。

- **连接步骤**
  1. 关闭本地sever:
      ```
      hdc_std kill
      ```
  2. **-s [ip:]port -m** 启动远程server:
      ```
      hdc_std -s severIP:8710 -m
      ```
  3. **-s [ip:]port command** 指定server执行指令:
      ```
      hdc_std -s severIP:8710 list targets
      ```