1# hdc 2 3<!--Kit: Performance Analysis Kit--> 4<!--Subsystem: HiviewDFX--> 5<!--Owner: @kunsilva--> 6<!--Designer: @weimingjin--> 7<!--Tester: @gcw_KuLfPSbe--> 8<!--Adviser: @foryourself--> 9 10hdc(HarmonyOS Device Connector)是提供给开发人员的命令行调试工具,用于与设备进行交互调试、数据传输、日志查看以及应用安装等操作。该工具支持在Windows/Linux/MacOS系统上运行,为开发者提供高效,便捷的设备调试能力。 11 12hdc包含三部分: 13 14**客户端(client)**:运行在电脑端的进程,开发者在执行hdc命令时启动该进程,命令结束后进程自动退出。 15 16**服务器(server)**:运行在电脑端的后台服务进程,用来管理客户端进程和设备端守护进程之间的数据交互,设备发现等。 17 18**守护程序(daemon)**:运行在调试设备端的进程,用来响应服务器发来的请求。 19 20如图所示: 21 22 23 24> **说明:** 25> 26> 客户端进程在启动时,默认会判断服务器进程是否正在运行。如果没有运行则会启动一个新的hdc进程作为服务器进程,运行在后台。 27> 28> 服务器运行时,默认会监听电脑端的8710端口。开发者可通过设置系统环境变量OHOS_HDC_SERVER_PORT自定义监听的端口号,范围为1~65535。 29 30## 环境准备 31 32hdc可以选择以下任意一种方式获取: 33 341.通过SDK获取hdc工具。SDK已嵌入[DevEco Studio](https://developer.huawei.com/consumer/cn/deveco-studio/)中,无需额外下载配置。hdc默认安装在DevEco Studio/sdk/default/openharmony/toolchains路径下,MacOS系统的sdk位于DevEco Studio/Contents目录下。 35 362.通过[Command Line Tools](https://developer.huawei.com/consumer/cn/download/)工具中的sdk目录获取相关工具。hdc程序默认安装在Command Line Tools/sdk/default/openharmony/toolchains路径下。 37 38hdc支持USB和无线两种连接调试方式。在设备的设置>系统>开发者选项中开启或关闭调试开关 ,无需重启设备即可生效。如果设备未启用“开发者选项”,可参考[开发者选项](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-developer-mode#section530763213432)进行启用。具体调试连接方式及操作步骤请参考[USB连接场景](#usb连接场景)和[TCP连接场景](#tcp连接场景)。 39 40### (可选)命令行直接执行hdc程序 41 42**安装目录下的调试** 43 44- 开发者可以在SDK的toolchains子目录下执行hdc命令进行设备调试。 45 46- hdc支持独立运行。将toolchains子目录下的hdc可执行文件和libusb_shared依赖文件集中存放至自定义目录中,在自定义目录下直接执行hdc命令,实现独立调试。 47 48**添加hdc到系统环境变量** 49 50- Windows环境变量设置方法: 51 1. 按下Windows键,搜索栏输入“设置”,点击进入设置窗口; 52 2. 在搜索栏中搜索“查看高级系统设置”。在环境变量>系统变量>Path>编辑中,将hdc.exe所在目录添加到 Path。环境变量配置完成后,请重启电脑,即可在命令行窗口执行hdc命令。 53 54- Linux/MacOS系统: 55 1. 打开终端工具,执行以下命令,根据输出结果分别执行不同的命令。 56 57 ```shell 58 echo $SHELL 59 ``` 60 61 1. 如果输出结果为bin/bash,执行以下命令打开.bashrc文件。 62 63 ```shell 64 vi ~/.bashrc 65 ``` 66 67 2. 如果输出结果为/bin/zsh,执行以下命令打开.zshrc文件。 68 69 ```shell 70 vi ~/.zshrc 71 ``` 72 73 2. 切换至英文输入法,按下键盘字母“i”,进入Insert模式。 74 3. 在文件末尾添加PATH信息。 75 76 ```shell 77 PATH={DevEco Studio}/sdk/default/openharmony/toolchains:$PATH 78 ``` 79 80 其中{DevEco Studio}需替换为DevEco Studio实际安装目录的绝对路径,例如/home/DevEco-Studio。 81 4. 编辑完成后,单击Esc键退出编辑模式,输入“:wq”并且单击Enter键保存。 82 5. 请执行以下命令,使配置的环境变量生效。 83 1. 如果步骤1打开的是.bashrc文件,请执行如下命令: 84 85 ```shell 86 source ~/.bashrc 87 ``` 88 89 2. 如果步骤1打开的是.zshrc文件,请执行如下命令: 90 91 ```shell 92 source ~/.zshrc 93 ``` 94 95 6. 环境变量配置完成后,重启系统。 96 97### (可选)服务器配置 98 99配置系统环境变量可修改服务器进程的监听端口、日志打印级别或特性开关等。详细介绍请查看[可选配置项](#可选配置项)章节。 100 101> **说明:** 102> 103> 环境变量配置完成后,重启命令行窗口或其他使用到HarmonyOS SDK的软件,以生效新配置的环境变量。 104 105## hdc命令列表 106 107### 全局参数 108 109全局参数是指运行hdc命令时,可以添加在hdc和具体执行命令之间的参数。例如,使用-t参数可以选择指定的设备执行命令: 110 111```shell 112hdc -t connect-key shell echo "Hello world" 113``` 114 115| 参数 | 说明 | 116| -------- | -------- | 117| [-t](#连接指定的目标设备) | 通过设备标识符连接指定的目标设备。单台设备连接时为可选参数,连接多台设备时为必选参数。 | 118| [-l](#服务器进程日志) | 可选参数,指定运行时日志等级,范围为数字0-6,默认为3(LOG_INFO)。 | 119| [-s](#远程连接场景) | 可选参数,指定客户端连接服务器时,服务进程的网络监听参数,格式为IP:port。 | 120| [-p](#快速执行命令) | 可选参数,绕过对服务进程的查询步骤,用于快速执行客户端命令。 | 121| [-m](#前台启动服务) | 可选参数,使用前台启动模式启动服务进程。 | 122| [-e](#创建正向端口转发任务) | 可选参数,指定在TCP端口转发时,本地监听的IP地址,默认是127.0.0.1。该参数必须和-m一起使用。<br/>**说明**:从API version 20开始,支持该接口。| 123 124### 命令列表 125 126| 命令 | 说明 | 127| -------- | -------- | 128| [list targets](#查询设备列表) | 查询已连接的所有目标设备。 | 129| [wait](#等待设备正常连接) | 等待设备正常连接。 | 130| [tmode usb](#usb调试和无线调试切换) | 3.1.0e版本起已废弃,不会操作设备连接通道,需在设备设置界面通过USB调试开关设置。 | 131| [tmode port](#打开设备网络连接通道) | 打开设备网络连接通道。 | 132| [tmode port close](#关闭网络连接通道) | 关闭设备网络连接通道。 | 133| [tconn](#tcp连接设备) | 指定连接设备:通过“IP:port”来指定连接的设备。 | 134| [shell](#执行交互命令) | 在设备侧执行单次命令,例如hdc shell ls。无命令参数可进入设备侧终端执行命令。 | 135| [install](#安装应用文件) | 安装指定的应用文件。 | 136| [uninstall](#卸载应用) | 卸载指定的应用包。 | 137| [file send](#本地发送文件至远端设备) | 从本地发送文件至远端设备。 | 138| [file recv](#接收远端设备文件至本地) | 接收远端设备文件至本地。 | 139| [fport ls](#查询端口转发任务列表) | 列出全部转发端口任务。 | 140| [fport](#创建正向端口转发任务) | 设置正向端口转发任务:监听“主机端口”,接收请求并转发到“设备端口”。 | 141| [rport](#创建反向端口转发任务) | 设置反向端口转发任务:监听“设备端口”,接收请求并转发到“主机端口”。 | 142| [fport rm](#删除端口转发任务) | 删除指定的端口转发任务。 | 143| [start](#启动服务) | 启动hdc服务进程。 | 144| [kill](#终止服务) | 终止hdc服务进程。 | 145| [hilog](#打印设备端日志) | 打印设备端的日志信息。 | 146| [jpid](#显示设备已打开应用的进程pid) | 显示设备上已打开应用的进程pid。 | 147| track-jpid [-a\|-p] | 实时显示设备上已打开应用的进程pid和应用包名,其中只有debug标签的应用可以被调试。不加参数时只显示已打开应用的进程pid,使用-a参数会显示debug和release应用的进程标签,使用-p参数不显示debug和release的进程标签。 | 148| [target boot](#重启目标设备) | 重启目标设备。 | 149| <!--DelRow--> [target mount](#以读写模式挂载系统分区) | 以读写模式挂载系统分区(非root的设备不可用)。 | 150| <!--DelRow--> [smode](#授予设备端hdc后台服务进程root权限) | 授予设备端hdc后台服务进程root权限,使用-r参数取消授权(非root的设备不可用)。 | 151| [keygen](#安全相关命令) | 生成一个新的密钥对。 | 152| [version](#查询hdc版本号) | 打印hdc版本信息,也可使用hdc -v打印版本信息。 | 153| [checkserver](#查询客户端和服务器进程版本) | 获取客户进程与服务进程版本信息。 | 154 155## 基本使用方法 156 157以USB调试方式为例,执行命令前请在设备上开启USB调试功能,用USB线连接设备和电脑。 158 159### 查询连接的设备 160 161```shell 162hdc list targets 163``` 164 165### 执行shell命令 166 167```shell 168hdc shell echo "Hello world" 169``` 170 171### 获取帮助 172 173显示hdc相关帮助信息,命令格式如下: 174 175```shell 176hdc -h [verbose] 177hdc help 178``` 179 180| 参数名 | 说明 | 181| -------- | -------- | 182| -h verbose | 显示hdc命令帮助信息。可选参数:verbose,显示详细的帮助信息。 | 183| help | 显示hdc命令帮助信息。 | 184 185**返回信息**: 186 187| 返回信息 | 说明 | 188| -------- | -------- | 189| OpenHarmony device connector(HDC) ...<br/>---------------------------------global commands:----------------------------------<br/>-h/help [verbose] - Print hdc help, 'verbose' for more other cmds<br/>...(此处省略详细帮助信息) | hdc命令使用帮助信息。 | 190 191> **注意:** 192> 193> 使用hdc时如出现异常,可尝试通过hdc kill -r命令终止异常进程并重启hdc服务。 194> 195> 如出现hdc list targets无法获取设备信息的情况,请参见[设备无法识别](#设备无法识别)章节。 196 197## 设备连接管理 198 199### 查询设备列表 200 201```shell 202hdc list targets [-v] 203``` 204 205**参数**: 206 207| 参数名 | 说明 | 208| -------- | -------- | 209| -v | 显示设备更多详情。 | 210 211**返回信息**: 212 213| 返回信息 | 说明 | 214| -------- | -------- | 215| 设备标识符列表 | 已连接的设备标识符列表。<br/>命令添加-v参数显示更多详情:设备标识符、连接方式(TCP/USB)、连接状态(Unknown/Ready/Connected/Offline/Unauthorized)、设备名称和hdc标识。 | 216| 设备标识符 Unauthorized | 设备处于未授权状态。 | 217| [Empty] | 没有查询到设备信息。 | 218 219**使用方法**: 220 221```shell 222$ hdc list targets 223connect-key1 224... 225 226$ hdc list targets -v 227connect-key1 USB Connected localhost hdc 228127.0.0.1:5555 TCP Offline localhost hdc 229connect-key2 USB Offline localhost hdc 230... 231``` 232 233### 连接指定的目标设备 234 235```shell 236hdc -t [connect-key] [command] 237``` 238 239**参数**: 240 241| 参数名 | 说明 | 242| -------- | -------- | 243| -t | 通过设备标识符连接指定目标设备。<br/>连接单台设备时为可选参数,连接多台设备时为必填参数。 | 244| command | hdc支持的命令。 | 245 246> **说明:** 247> 248> connect-key为每个设备唯一的标识符。通过USB连接,标识符为设备序列号;通过网络无线连接设备,标识符格式为IP:port。 249 250**返回信息**: 251 252| 返回信息 | 说明 | 253| -------- | -------- | 254| 正常执行返回信息,参考[命令列表](#命令列表)具体说明。 | - | 255| [Fail]Not match target founded, check connect-key please. | 使用-t参数匹配不存在的connect-key,请检查connect-key是否正确。 | 256| [Fail]Device not founded or connected. | 设备未找到或未连接。 | 257| [Fail]ExecuteCommand need connect-key? please confirm a device by help info. | 请确保已连接设备并打开调试开关。 | 258| Unknown operation command... | 不支持的命令。 | 259 260> **说明:** 261> 262> 命令返回的错误信息仅供开发者参考,后续可能会优化调整。请勿将此类信息用于自动化脚本或程序的逻辑判断,实际程序交互建议使用系统异常提供的标准错误码,具体详情可参考[hdc错误码](#hdc错误码)。 263 264**使用方法**: 265 266此调试方法需要与具体的操作命令搭配使用,下面以shell命令为例: 267 268```shell 269$ hdc list targets 270connect-key1 271... 272 273$ hdc -t connect-key1 shell echo "hello world!" 274hello world! 275``` 276 277### 等待设备正常连接 278 279```shell 280hdc wait # 等待设备正常连接 281hdc -t [connect-key] wait # 等待指定的设备正常连接,connect-key需要替换为指定的设备标识符 282``` 283 284**参数**: 285 286| 参数名 | 说明 | 287| -------- | -------- | 288| -t connect-key | 3.1.0a版本新增参数:<br/>连接单台设备时,为可选参数。<br/>连接多台设备时,为必填参数。 | 289 290**返回信息**: 291 292| 返回信息 | 说明 | 293| -------- | -------- | 294| 无 | hdc wait命令执行后,识别到正常连接的设备后结束。 | 295 296**使用方法**: 297 298```shell 299# 如果设备正常连接,则命令执行结束无任何打印信息 300$ hdc wait # 单台设备 301$ hdc -t connect-key1 wait # 多设备需使用-t指定连接设备 302``` 303 304### USB连接场景 305 306**环境确认** 307 308| 确认项 | 正常 | 异常处理 | 309| -------- | -------- | -------- | 310| USB调试选项 | 开启。 | 如果设备的USB调试模式未能自动开启,请尝试重启设备。 | 311| USB数据连接线 | 使用USB数据连接线连接到调试电脑的USB接口。 | 如果使用低带宽、无数据通信功能的USB连接线可能导致无法识别hdc设备,建议更换为设备原装充电线。 | 312| USB接口 | 主板直出USB接口(台式机为后面板的USB接口,笔记本为机身的USB接口)。 | 如果使用转接头/拓展坞/台式机前面板USB接口,可能存在带宽低和USB同步异常等问题,会导致频繁断连,推荐使用直连方式连接电脑和设备。 | 313| hdc环境变量 | 终端命令行输入hdc -h有回显帮助信息内容。 | 参见[环境准备](#环境准备)章节。 | 314| 驱动 | 连接hdc设备后,设备管理器通用串行总线设备存在设备“HDC Device”或“HDC Interface”。 | 参见[设备无法识别](#设备无法识别)章节。 | 315 316**连接步骤** 317 3181. 通过USB连接设备。 319 3202. 执行以下命令查看已连接设备: 321 322 ```shell 323 hdc list targets 324 ``` 325 326 返回信息中包含设备标识符,表示USB连接成功。 327 3283. 查询到设备后,运行相关命令与设备交互。如果希望不带设备标识符执行hdc命令,需要确认设备不在TCP连接模式(hdc list targets查询的设备不包含IP:port形式的连接信息),直接连接即可,例如: 329 330 ```shell 331 hdc shell 332 ``` 333 334### TCP连接场景 335 336> **注意:** 337> 338> TCP调试功能尚未稳定,建议仅在测试环境中使用。 339 340**环境确认** 341 342| 确认项 | 正常 | 异常处理 | 343| -------- | -------- | -------- | 344| 网络连接 | 电脑、设备处于同一网络。 | 连接同一WiFi。 | 345| 网络状态 | telnet IP:port正常,网速稳定。 | 请选择稳定网络。 | 346| hdc环境变量 | 终端命令行输入hdc -h有回显帮助信息内容。 | 参见[环境准备](#环境准备)章节。 | 347 348**连接步骤** 349 3501. 在设备端设置>系统>开发者选项>无线调试>打开无线调试。 351 3522. 记录设备界面显示的IP地址和端口,格式为IP:port。 353 3543. 通过tcp连接设备,执行以下命令: 355 356 ```shell 357 hdc tconn IP:port 358 ``` 359 360 命令执行返回“Connect OK”表示连接成功。 361 3624. 查看已连接设备,执行以下命令: 363 364 ```shell 365 hdc list targets 366 ``` 367 368 返回信息为IP:port格式。 369 370 > **说明:** 371 > 372 > 如果需要关闭TCP连接模式,可在设备中关闭无线调试开关或断开网络连接。 373 374### 远程连接场景 375 376远程连接场景指客户端(通常是开发者使用的本地电脑)通过网络与服务器(通常是连接了调试设备的服务器或开发机)建立连接,实现客户端对目标设备的远程调试,控制和管理。 377 378 379 380远程连接使用-s参数来指定服务器的网络参数,包括地址和端口号,该设置只在当前命令执行期间有效,命令格式如下: 381 382```shell 383hdc -s [IP:]port [command] 384``` 385 386| 命令 | 说明 | 387| -------- | -------- | 388| -s | 指定当前服务进程的网络监听参数。 | 389 390**参数**: 391 392| 参数 | 说明 | 393| -------- | -------- | 394| IP | 可选参数,指定监听的IP地址,支持IPv4和IPv6。不指定IP默认监听本机127.0.0.1。 | 395| port | 指定监听的端口,范围为1~65535。 | 396| command | hdc支持的命令,参见[hdc命令列表](#hdc命令列表)。 | 397 398**返回信息**: 399 400| 返回信息 | 说明 | 401| -------- | -------- | 402| Connect server failed. | 与服务进程建立连接失败。 | 403| -s content port incorrect. | 端口号超出可设置范围(1~65535)。 | 404 405**使用方法** 406 407```shell 408# 在已有服务进程,且服务进程的网络监听参数为127.0.0.1:8710的环境中,执行查询设备命令 409$ hdc -s 127.0.0.1:8710 list targets 410``` 411 412**连接步骤** 413 4141. 服务器配置 415 服务器通过USB连接对应hdc设备后,执行以下命令: 416 417 ```shell 418 $ hdc kill # 关闭本地hdc服务 419 $ hdc -s IP:8710 -m # 启动网络转发的hdc服务 420 # 其中IP为服务器自身的IP,windows可通过ipconfig查询,unix系统可通过ifconfig查询 421 # 8710是默认端口号,也可设置其他端口号如:18710 422 # 启动后服务器将打印日志 423 ``` 424 4252. 客户端连接 426 客户端可以连通服务器IP地址,满足条件后执行以下命令: 427 428 ```shell 429 $ hdc -s IP:8710 [command] # 其中IP为服务器IP,8710为第一步服务器进程启动时设置的端口号, 430 # 如果端口号有变化,这里也需要变更。 431 # command可以为任意hdc可用命令,例如list targets 432 ``` 433 434> **说明:** 435> 436> 当命令行中明确使用 -s 参数指定服务器进程端口时,系统将忽略OHOS_HDC_SERVER_PORT环境变量中定义的端口设置。使用 -s 参数指定服务器地址时,如果监听地址不是本地回环地址(如127.0.0.1),需注意访问安全问题。 437 438### USB调试和无线调试切换 439 440用于连接模式切换的命令如下表所示: 441 442| 命令 | 说明 | 443| -------- | -------- | 444| tmode usb | 该命令已废弃,不会操作设备连接通道,请在设备设置界面通过USB调试开关进行设置。 | 445| tmode port [port-number] | 打开设备网络连接通道:设备端守护程序会重启,已建立的连接需要重新连接。 | 446| tmode port close | 关闭设备网络连接通道:设备端守护程序会重启,已建立的连接需要重新连接。 | 447| tconn IP:port [-remove] | 连接指定设备,使用“IP:port”指定,使用-remove参数断开。 | 448 449> **说明:** 450> 451> 推荐通过设备端的USB调试开关和无线调试开关来控制连接通道。 452 453### 打开设备网络连接通道 454 455命令格式如下: 456 457```shell 458hdc tmode port [port-number] 459``` 460 461**参数**: 462 463| 参数 | 参数说明 | 464| -------- | -------- | 465| port-number | 监听连接的网络端口号,范围:1~65535。 | 466 467**返回信息**: 468 469| 返回信息 | 说明 | 470| -------- | -------- | 471| Set device run mode successful. | 设置成功。 | 472| [Fail]ExecuteCommand need connect-key. | 打开失败,设备列表为空,无法建立设备的无线调试通道。 | 473| [Fail]Incorrect port range. | 端口号超出可设置范围1~65535。 | 474 475**使用方法**: 476 477```shell 478$ hdc tmode port 65512 479Set device run mode successful. 480``` 481 482> **注意:** 483> 484> 切换前,请确保条件满足:远端设备与近端电脑处于同一网络,可通过ping命令检查: 485> 486> 1. 近端电脑在命令行中执行命令ping 远端设备的IP地址; 487> 488> 2. 如果能接收到远端设备的回应数据包,表明二者处于同一网络。 489> 490> 如不满足以上条件,切勿使用该命令进行切换。 491> 492> 执行完毕后,远端守护程序将退出并重启,需要重新连接。 493 494### 关闭网络连接通道 495 496命令格式如下: 497 498```shell 499hdc tmode port close 500``` 501 502**返回信息**: 503 504| 返回信息 | 说明 | 505| -------- | -------- | 506| [Fail]ExecuteCommand need connect-key. | 设备列表为空,无法执行命令。 | 507 508**使用方法**: 509 510```shell 511hdc tmode port close 512``` 513 514> **说明:** 515> 516> 执行完毕后,远端设备上的守护程序将退出并重启,需要重新连接。 517 518### TCP连接设备 519 520通过TCP连接指定设备,命令格式如下: 521 522```shell 523hdc tconn IP:port [-remove] 524``` 525 526**参数**: 527 528| 参数 | 参数说明 | 529| -------- | -------- | 530| IP:port | 设备的IP地址和端口号。 | 531| -remove | 可选参数,断开指定设备的连接。 | 532 533**返回信息**: 534 535| 返回信息 | 说明 | 536| -------- | -------- | 537| Connect OK. | 连接成功。 | 538| [Info]Target is connected, repeat opration. | 设备当前已连接。 | 539| [Fail]Connect failed. | 连接失败。 | 540 541**使用方法**: 542 543```shell 544$ hdc tconn 192.168.0.1:8888 545Connect OK 546 547# 断开指定网络设备连接 548$ hdc tconn 192.168.0.1:8888 -remove 549``` 550 551## 执行交互命令 552 553```shell 554hdc shell [-b bundlename] [command] 555``` 556 557**参数**: 558 559| 参数 | 说明 | 560| -------- | -------- | 561| -b bundlename | 3.1.0e版本新增参数。指定可调试应用包名,在可调试应用数据目录内,以非交互式模式执行命令。<br/>[命令行方式访问应用沙箱](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-device-file-explorer#section48216711204)。<br/>此参数当前仅支持以非交互式模式执行命令,不支持缺省command参数执行命令进入交互式shell会话。<br/>未配置此参数时,默认执行路径为系统根目录。 | 562| command | 需要在设备上执行的单次命令,不同类型或版本的系统支持的command命令有所差异,可以通过hdc shell ls /system/bin查阅支持的命令列表。当前大多数命令都是由[toybox](../tools/toybox.md)提供,可通过 hdc shell toybox --help 获取命令帮助。<br/>缺省该参数,hdc将会启动一个交互式的shell会话,开发者可以在命令提示符下输入命令,比如 ls、cd、pwd 等。 | 563 564> **说明:** 565> 566> 使用参数[-b bundlename]指定包名,该包名对应的已安装应用必须满足以下条件:使用调试证书签名,并且已在设备上启动。有关如何申请调试证书及签名可参考:[申请调试证书](https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-debugcert-0000001914263178)。 567 568**返回信息**: 569 570| 返回信息 | 说明 | 571| -------- | -------- | 572| 交互命令返回内容。 | 返回内容详情请参见其他交互命令返回内容。 | 573| /bin/sh: XXX : inaccessible or not found. | 不支持的交互命令。 | 574| [Fail]具体失败信息。 | 执行失败,参见[hdc错误码](#hdc错误码)。 | 575 576**使用方法**: 577 578```shell 579# 进入交互式模式执行命令 580$ hdc shell 581$ 582 583# 以非交互式模式执行命令 584$ hdc shell "ps -ef | grep hdcd" 585shell 39491 1 1 14:40:58 ? 00:00:00 hdcd 586 587# 查询全部可用命令 588$ hdc shell help -a 589---toybox--------------------------------------------------------------------- 590 591usage: toybox [--long | --help | --version | [command] [arguments...]] 592 593With no arguments, shows available commands. First argument is 594name of a command to run, followed by any arguments to that command. 595 596--long Show path to each command 597... 598 599# 在指定包名的应用数据目录内以非交互式模式执行命令,支持touch、rm、ls、stat、cat、mkdir等命令。 600$ hdc shell -b com.example.myapplication ls data/storage/el2/base/ 601``` 602 603**常用调试工具** 604 605| 命令 | 说明 | 606| -------- | -------- | 607| [aa](../tools/aa-tool.md) | 应用调试工具 | 608| [bm](../tools/bm-tool.md) | 包管理工具 | 609| [cem](../tools/cem-tool.md) | 公共事件管理工具 | 610| [anm](../tools/anm-tool.md) | 通知管理工具 | 611| [edm](../tools/edm-tool.md) | 企业设备管理工具 | 612| [param](../tools/param-tool.md) | 操作系统参数管理工具 | 613| [power-shell](../tools/power-shell.md) | 设备电源状态转换工具 | 614| [atm](../tools/atm-tool.md) | 程序访问控制管理工具 | 615| [hilog](./hilog.md) | 日志管理工具 | 616| [hidumper](./hidumper.md) | 系统信息导出工具 | 617| [hitrace](./hitrace.md) | 系统打点及采集工具 | 618| [hiperf](./hiperf.md) | 性能分析工具 | 619| [mediatool](../tools/mediatool.md) | 媒体资源库工具 | 620| [devicedebug](../tools/devicedebug-tool.md) | 调试应用发送信号工具 | 621| [rawheap-translator](../tools/rawheap-translator.md) | rawheap文件解析工具 | 622 623## 应用管理 624 625| 命令 | 说明 | 626| -------- | -------- | 627| install src | 安装指定的应用文件。 | 628| uninstall bundlename | 卸载指定的应用package包名。 | 629 630### 安装应用文件 631 632安装应用文件,命令格式如下: 633 634```shell 635hdc install [-r|-s] src 636``` 637 638**参数**: 639 640| 参数名 | 说明 | 641| -------- | -------- | 642| src | 应用安装包的文件名。 | 643| -r | 替换已存在的应用(.hap)。 | 644| -s | 安装一个共享包(.hsp)。 | 645 646**返回信息**: 647 648| 返回信息 | 说明 | 649| -------- | -------- | 650| [Info]App install path:XXX msg:install bundle successfully.<br/>AppMod finish. | 成功情况下返回安装信息及AppMod finish完成的通知。 | 651| 具体安装失败原因。 | 失败情况下返回安装失败信息。 | 652 653**使用方法**: 654 655```shell 656# 以安装example.hap包为例: 657$ hdc install E:\example.hap 658AppMod finish 659``` 660 661### 卸载应用 662 663命令格式如下: 664 665```shell 666hdc uninstall [-k|-s] bundlename 667``` 668 669**参数**: 670 671| 参数名 | 说明 | 672| -------- | -------- | 673| bundlename | 应用安装包。 | 674| -k | 卸载应用后,系统会保留/data和/cache目录。 | 675| -s | 卸载共享包。 | 676 677**返回信息**: 678 679| 返回信息 | 说明 | 680| -------- | -------- | 681| [Info]App uninstall path: msg:uninstall bundle successfully.<br/>AppMod finish. | 成功情况下返回卸载信息和AppMod finish完成的通知。 | 682| 具体卸载失败原因。 | 失败情况下返回卸载失败信息。 | 683 684**使用方法**: 685 686```shell 687# 以卸载com.example.hello包为例: 688$ hdc uninstall com.example.hello 689AppMod finish 690``` 691 692## 文件传输 693 694| 命令 | 说明 | 695| -------- | -------- | 696| file send SOURCE DEST | 从本地发送文件至远端设备。 | 697| file recv DEST SOURCE | 从远端设备接收文件至本地。 | 698 699### 本地发送文件至远端设备 700 701命令格式如下: 702 703```shell 704hdc file send [-a|-sync|-z|-m|-b bundlename] SOURCE DEST 705``` 706 707**参数**: 708 709| 参数名 | 说明 | 710| -------- | -------- | 711| SOURCE | 本地待传输的文件路径。 | 712| DEST | 远程目标文件路径。 | 713| -a | 保留文件修改时间戳。 | 714| -sync | 只传输文件mtime有更新的文件。<br/>mtime(modified timestamp):修改后的时间戳。 | 715| -z | 通过LZ4格式压缩传输,此功能未开放,请勿使用。 | 716| -m | 文件传输时同步文件DAC权限,uid,gid,MAC权限。<br/>DAC(Discretionary Access Control):自主访问控制,<br/>uid(User identifier):用户标识符(或用户ID),<br/>gid(Group identifier):组标识符(或组ID),<br/>MAC(Mandatory Access Control):强制访问控制(或非自主访问控制)。 | 717| -b | 3.1.0e版本新增参数(低版本使用会提示[Fail]Unknown file option: -b),用于指定可调试应用包名。<br/>使用方法可参考[通过命令往应用沙箱目录中发送文件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-device-file-explorer#section48216711204)。 | 718| bundlename | 指定可调试应用包名。 | 719 720**返回信息**: 721 722文件发送成功时,返回传输成功的确认信息。文件发送失败时,返回传输失败的具体错误信息。 723 724**使用方法**: 725 726```shell 727$ hdc file send test /test/ 728FileTransfer finish, Size:10, File count = 1, time:0ms rate:100kB/s 729``` 730 731### 接收远端设备文件至本地 732 733命令格式如下: 734 735```shell 736hdc file recv [-a|-sync|-z|-m|-b bundlename] DEST SOURCE 737``` 738 739**参数**: 740 741| 参数名 | 说明 | 742| -------- | -------- | 743| SOURCE | 本地待接收的文件路径。 | 744| DEST | 远程待传输的文件路径。 | 745| -a | 保留文件修改时间戳。 | 746| -sync | 只传输文件mtime有更新的文件。<br/>mtime(modified timestamp):修改后的时间戳。 | 747| -z | 通过LZ4格式压缩传输,此功能未开放,请勿使用。 | 748| -m | 文件传输时同步文件DAC权限,uid,gid,MAC权限。<br/>DAC(Discretionary Access Control):自主访问控制,<br/>uid(User identifier):用户标识符(或用户ID),<br/>gid(Group identifier):组标识符(或组ID),<br/>MAC(Mandatory Access Control):强制访问控制(或非自主访问控制)。 | 749| -b | 3.1.0e版本新增参数,用于传输指定的可调试应用进程应用数据目录下的文件。<br/>使用方法可参考[从沙箱目录中下载文件到本地计算机](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-device-file-explorer#section48216711204)。 | 750| bundlename | 可调试应用进程的包名。 | 751 752**返回信息**: 753 754文件接收成功时,返回传输成功的确认信息。文件接收失败时,返回传输失败的具体错误信息。 755 756**使用方法**: 757 758```shell 759$ hdc file recv /test/test ./ 760FileTransfer finish, Size:10, File count = 1, time:0ms rate:100kB/s 761``` 762 763> **说明:** 764> 765> 使用参数[-b bundlename]指定包名,应满足条件:指定包名的已安装应用为“使用调试证书签名的应用”且在设备上已启动, 如何申请调试证书及签名可参考:[申请调试证书](https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-debugcert-0000001914263178)。 766> 767> **版本更新说明**:从3.1.0a版本开始,支持使用中文字符作为文件传输命令参数,便于多语言环境下使用。 768 769## 端口转发 770 771| 命令 | 说明 | 772| -------- | -------- | 773| fport ls | 列出全部转发端口转发任务。 | 774| fport [IP:port] [IP:port] | 设置正向端口转发任务:监听“主机端口”,接收请求并进行转发, 转发到“设备端口”。设备端口范围1~65535。 | 775| rport [IP:port] [IP:port] | 设置反向端口转发任务:监听“设备端口”,接收请求并进行转发,转发到“主机端口”。设备端口范围1024~65535。 | 776| fport rm [IP:port] [IP:port] | 删除指定的端口转发任务。 | 777 778> **说明:** 779> 780> 电脑端支持的端口转发类型:tcp。 781> 782> 设备端支持的端口转发类型:tcp,dev,localabstract,localfilesystem,jdwp,ark。 783 784### 查询端口转发任务列表 785 786命令格式如下: 787 788```shell 789hdc fport ls 790``` 791 792**返回信息**: 793 794| 返回信息 | 说明 | 795| -------- | -------- | 796| tcp:1234 tcp:1080 [Forward] | 正向端口转发任务。 | 797| tcp:2080 tcp:2345 [Reverse] | 反向端口转发任务。 | 798| [Empty] | 无端口转发任务。 | 799 800**使用方法**: 801 802```shell 803$ hdc fport ls 804[Empty] 805``` 806 807### 创建正向端口转发任务 808 809设置正向端口转发任务,系统将指定的“主机端口”转发到“设备端口”,命令格式如下: 810 811```shell 812hdc fport [IP:port] [IP:port] 813``` 814 815**返回信息**: 816 817| 返回信息 | 说明 | 818| -------- | -------- | 819| Forwardport result:OK. | 端口转发任务设置正常。 | 820| [Fail]Incorrect forward command. | 端口转发任务设置失败,端口转发参数错误。 | 821| [Fail]TCP Port listen failed at XXXX. | 端口转发任务设置失败,本地转发端口被占用。 | 822| [Fail]Forward parament failed. | 端口转发任务格式有误,或转发端口协议或端口范围有误。 | 823| [Fail]Not support forward-type. | 当前平台不支持参数中使用的转发端口协议。 | 824 825**使用方法**: 826 827```shell 828$ hdc fport tcp:1234 tcp:1080 829Forwardport result:OK 830``` 831 832> **说明:** 833> 834> 在创建正向端口转发任务时,如果本地端口为TCP协议,指定端口为port,且启动服务进程时使用了-e参数, 则本地主机会监听-e参数指定的IP地址的port端口;如果启动服务进程时未使用-e参数,则本地主机会监听127.0.0.1:port。 835 836### 创建反向端口转发任务 837 838设置反向端口转发任务,系统将指定的“设备端口”转发到“主机端口”,命令格式如下: 839 840```shell 841hdc rport [IP:port] [IP:port] 842``` 843 844**返回信息**: 845 846| 返回信息 | 说明 | 847| -------- | -------- | 848| Forwardport result:OK. | 端口转发任务设置正常。 | 849| [Fail]Incorrect forward command. | 端口转发任务设置失败,端口转发参数错误。 | 850| [Fail]TCP Port listen failed at XXXX. | 端口转发任务设置失败,本地转发端口被占用。 | 851| [Fail]Forward parament failed. | 端口转发任务格式有误,或转发端口协议或端口范围有误。 | 852 853**使用方法**: 854 855```shell 856$ hdc rport tcp:1234 tcp:1080 857Forwardport result:OK 858``` 859 860### 删除端口转发任务 861 862删除指定的转发任务,命令格式如下: 863 864```shell 865hdc fport rm [IP:port][IP:port] 866``` 867 868**参数**: 869 870| 参数 | 说明 | 871| -------- | -------- | 872| IP:port | 端口转发任务,形如 tcp:XXXX tcp:XXXX。 | 873 874**返回信息**: 875 876| 返回信息 | 说明 | 877| -------- | -------- | 878| Remove forward ruler success, ruler:tcp:XXXX tcp:XXXX. | 端口转发任务删除正常。 | 879| [Fail]Remove forward ruler failed, ruler is not exist tcp:XXXX tcp:XXXX. | 端口转发任务删除失败,指定的转发任务不存在。 | 880 881**使用方法**: 882 883```shell 884$ hdc fport rm tcp:1234 tcp:1080 885Remove forward ruler success, ruler:tcp:1234 tcp:1080 886``` 887 888## 服务进程管理 889 890| 命令 | 说明 | 891| -------- | -------- | 892| start [-r] | 启动hdc服务进程,使用-r参数触发服务进程重新启动。 | 893| kill [-r] | 终止hdc服务进程,使用-r参数触发服务进程重新启动。 | 894| -p | 绕过对服务进程的查询步骤,用于快速执行客户端命令。 | 895| -m | 使用前台启动模式启动服务进程。<br/>前台启动模式(添加-m参数):实时打印服务日志到客户端窗口。<br/>后台启动模式(不添加-m参数):客户端不打印服务日志,日志内容写入本地磁盘文件,具体文件存放路径可参考[服务器进程日志](#服务器进程日志)。 | 896| -e | 指定在TCP端口转发时,本地监听的IP地址,默认是127.0.0.1。该参数必须和-m一起使用。| 897 898### 启动服务 899 900启动hdc服务进程,命令格式如下: 901 902```shell 903hdc start [-r] 904``` 905 906**返回信息**: 907 908| 返回信息 | 说明 | 909| -------- | -------- | 910| 无返回信息 | 服务进程启动成功。 | 911 912**使用方法**: 913 914```shell 915hdc start -r # 服务进程启动状态下,触发服务进程重新启动。 916``` 917 918> **说明:** 919> 920> 当启动hdc服务进程且系统未检测到运行的服务进程时,日志等级的设置优先级如下:若在同一命令中指定了-l参数和配置了OHOS_HDC_LOG_LEVEL环境变量,环境变量优先级高于-l参数;如果仅指定了-l参数,则采用该参数配置的日志等级;若两者均未指定,则服务进程将以默认日志等级LOG_INFO启动。 921 922### 终止服务 923 924命令格式如下: 925 926```shell 927hdc kill [-r] 928``` 929 930**返回信息**: 931 932| 返回信息 | 说明 | 933| -------- | -------- | 934| Kill server finish. | 服务进程终止成功。 | 935| [Fail]具体失败信息。 | 服务进程终止失败。 | 936 937**使用方法**: 938 939```shell 940$ hdc kill -r # 终止并重启服务进程,实际使用可执行hdc -l 5 kill -r命令查看详细重启的log。 941Kill server finish 942 943$ hdc kill # 终止服务进程。 944Kill server finish 945``` 946 947### 快速执行命令 948 949绕过对服务进程的查询步骤,用于快速执行客户端命令。服务未启动时执行命令不会重新启动服务,使用参数前确保服务已正常启动。命令格式如下: 950 951```shell 952hdc -p [command] 953``` 954 955**参数**: 956 957| 参数 | 说明 | 958| -------- | -------- | 959| command | hdc支持的命令。 | 960 961**返回信息**: 962 963| 返回信息 | 说明 | 964| -------- | -------- | 965| Connect server failed. | 与服务器进程建立连接失败。 | 966 967**使用方法**: 968 969```shell 970$ hdc start # 启动后台服务进程。 971 972$ hdc -p list targets # 跳过检查,直接执行命令。 973connect-key1 974connect-key2 975... 976``` 977 978> **说明:** 979> 980> 在未指定 -p 参数的情况下直接执行 command 命令时,客户端将首先检查本地是否已有运行的服务进程。如果系统未检测到运行的服务进程,客户端将自动启动服务进程,并建立连接以传递命令;如果系统检测到运行的服务进程,客户端将直接与该后台服务建立连接并下发相应的命令。 981 982### 前台启动服务 983 984使用前台启动模式启动服务进程,命令格式如下: 985 986```shell 987hdc -m 988``` 989 990**返回信息**: 991 992| 返回信息 | 说明 | 993| -------- | -------- | 994| Initial failed. | 服务进程初始化失败。 | 995| [I][1970-01-01 00:00:00.000] Program running. Ver: X.X.Xx Pid:XXX.<br/>... | 正常打印对应等级的日志,显示服务器进程活动状态。 | 996 997**使用方法**: 998 999```shell 1000$ hdc -s 127.0.0.1:8710 -m # 指定当前服务进程的网络监听参数并启动服务进程 1001[I][1970-01-01 00:00:00.000] Program running. Ver: 3.1.0e Pid:8236 1002$ hdc -e 0.0.0.0 -m # 指定端口转发本地监听IP地址为0.0.0.0并启动服务进程 1003[I][1970-01-01 00:00:00.000] Program running. Ver: 3.1.0e Pid:8236 1004... 1005``` 1006 1007> **说明:** 1008> 1009> 1. 在前台启动模式下,可通过附加 -s 参数来指定服务进程的网络监听参数。如果既没有使用 -s 指定网络监听参数,也没有配置环境变量OHOS_HDC_SERVER_PORT配置监听端口,系统将采用默认网络监听参数:127.0.0.1:8710。也可以通过-e参数来指定端口转发时本地主机监听的IP地址,如果没有使用-e参数,则默认监听127.0.0.1。 1010> 1011> 2. 在服务进程前台启动模式下,系统默认的日志输出等级为 LOG_DEBUG。如果需要变更日志等级,可通过使用 -l 参数来进行相应的设置。 1012> 1013> 3. 在运行环境中,仅允许存在一个服务进程实例。如果运行环境中已存在一个活跃的后台服务进程,尝试在前台启动新的服务进程实例将无法成功。 1014 1015## 设备操作 1016 1017| 命令 | 说明 | 1018| -------- | -------- | 1019| hilog [-h] | 打印设备端的日志信息,可通过hdc hilog -h查阅支持的参数列表。 | 1020| jpid | 显示设备上已打开应用的进程pid。 | 1021| track-jpid [-a\|-p] | 实时显示设备上已打开应用的进程pid和应用名,其中只有debug标签的应用可以被调试。不加参数时只显示debug应用的进程pid,使用-a或-p参数显示debug和release应用的进程标签,使用-p参数不显示debug和release的进程标签。 | 1022| target boot [-bootloader\|-recovery] | 重启目标设备,使用-bootloader参数重启后进入fastboot模式,使用-recovery参数重启后进入recovery模式。 | 1023| target boot [MODE] | 重启目标设备,加参数重启后进入相应的模式,其中MODE为/bin/begetctl命令中reboot支持的参数,可通过hdc shell "/bin/begetctl -h \| grep reboot"查看。 | 1024| <!--DelRow--> target mount | 以读写模式挂载系统分区(设备root后支持此命令)。 | 1025| <!--DelRow--> smode [-r] | 授予设备端hdc后台服务进程root权限, 使用-r参数取消授权(设备root后支持此命令)。 | 1026 1027### 打印设备端日志 1028 1029命令格式如下: 1030 1031```shell 1032hdc hilog [-h] 1033``` 1034 1035**参数**: 1036 1037| 参数 | 说明 | 1038| -------- | -------- | 1039| -h | hilog支持的参数,可通过hdc hilog -h查阅支持的参数列表。 | 1040 1041**返回信息**: 1042 1043| 返回信息 | 说明 | 1044| -------- | -------- | 1045| 返回具体信息。 | 抓取的日志信息。 | 1046 1047**使用方法**: 1048 1049```shell 1050$ hdc hilog -h 1051Usage: 1052-h --help 1053 Show all help information. 1054 Show single help information with option: 1055... 1056``` 1057 1058### 显示设备已打开应用的进程pid 1059 1060命令格式如下: 1061 1062```shell 1063hdc jpid 1064``` 1065 1066**返回信息**: 1067 1068| 返回信息 | 说明 | 1069| -------- | -------- | 1070| 进程号列表 | 开启了JDWP调试协议的应用的PID。 | 1071| [Empty] | 无开启了JDWP调试协议的进程。 | 1072 1073**使用方法**: 1074 1075```shell 1076$ hdc jpid 10771234 10781080 1079... 1080``` 1081 1082### 实时显示设备已打开应用的进程pid和应用名 1083 1084实时显示设备上已打开应用的进程pid和应用名称,命令格式如下: 1085 1086```shell 1087hdc track-jpid [-a|-p] 1088``` 1089 1090**参数**: 1091 1092| 参数 | 说明 | 1093| -------- | -------- | 1094| 不加参数 | 只显示已打开的应用的进程pid。 | 1095| -a | 显示debug和release应用的进程pid和包名/进程名,同时显示debug和release的标签。 | 1096| -p | 显示debug和release应用的进程pid和包名/进程名,但不显示debug和release的标签。 | 1097 1098**返回信息**: 1099 1100| 返回信息 | 说明 | 1101| -------- | -------- | 1102| 进程号和包名/进程名列表。 | 不加参数时仅显示已打开应用的进程pid,使用-p参数额外显示应用包名,使用-a参数同时显示debug和release标签。 | 1103| [Empty] | 无开启JDWP调试协议的应用进程。 | 1104 1105**使用方法**: 1106 1107```shell 1108$ hdc track-jpid -a 11091234 com.example.hello release 1110... 1111 1112$ hdc track-jpid -p 11131234 com.example.hello 1114... 1115``` 1116 1117### 重启目标设备 1118 1119命令格式如下: 1120 1121```shell 1122hdc target boot [-bootloader|-recovery] 1123hdc target boot [MODE] 1124``` 1125 1126**参数**: 1127 1128| 参数名 | 说明 | 1129| -------- | -------- | 1130| 不加参数 | 重启设备。 | 1131| -bootloader | 重启后进入fastboot模式。 | 1132| -recovery | 重启后进入recovery模式。 | 1133| MODE | 重启后进入MODE模式,MODE为/bin/begetctl命令中reboot支持的参数。 | 1134 1135**使用方法**: 1136 1137```shell 1138hdc target boot -bootloader # 重启后进入fastboot模式 1139hdc target boot -recovery # 重启后进入recovery模式 1140hdc target boot shutdown # 关机 1141``` 1142<!--Del--> 1143### 以读写模式挂载系统分区 1144 1145命令格式如下: 1146 1147 ```shell 1148 hdc target mount 1149 ``` 1150 1151 **返回值:** 1152 | 返回值 | 说明 | 1153 | -------- | -------- | 1154 | Mount finish | 挂载成功 | 1155 | [Fail]Mount failed | 挂载失败 | 1156 1157 **使用方法:** 1158 1159 ```shell 1160 hdc target mount 1161 ``` 1162 1163 > **说明:** 1164 > 1165 > 设备root后才支持此命令,对系统分区的修改存在一定风险,请谨慎使用。 1166 1167### 授予设备端hdc后台服务进程root权限 1168 1169命令格式如下: 1170 1171 ```shell 1172 hdc smode [-r] 1173 ``` 1174 1175 **返回值:** 1176 | 返回值 | 说明 | 1177 | -------- | -------- | 1178 | 无返回值 | 授予权限成功 | 1179 | [Fail]具体失败信息 | 授予权限失败 | 1180 1181 **使用方法:** 1182 1183 ```shell 1184 hdc smode 1185 hdc smode -r // 取消root权限 1186 ``` 1187 1188 > **说明:** 1189 > 1190 > 设备root后才支持此命令。 1191<!--DelEnd--> 1192 1193## 安全相关命令 1194 1195| 命令 | 说明 | 1196| -------- | -------- | 1197| keygen FILE | 生成一个新的密钥对,并将私钥和公钥分别保存到FILE和FILE.pub,其中FILE为自定义的文件名。 | 1198 1199命令格式如下: 1200 1201```shell 1202hdc keygen FILE 1203``` 1204 1205**参数**: 1206 1207| 参数 | 说明 | 1208| -------- | -------- | 1209| FILE | FILE为自定义的文件名。 | 1210 1211**使用方法**: 1212 1213```shell 1214# 在当前目录下生成key和key.pub文件 1215$ hdc keygen key 1216``` 1217 1218## 查询hdc版本号 1219 1220| 命令 | 说明 | 1221| -------- | -------- | 1222| -v | 打印客户端进程版本信息。 | 1223| version | 打印服务进程版本信息。 | 1224| checkserver | 获取客户端与服务进程版本。 | 1225 1226### 查询hdc客户端进程版本 1227 1228查询hdc客户端进程的版本信息,命令格式如下: 1229 1230```shell 1231hdc -v 1232``` 1233 1234**返回信息**: 1235 1236| 返回信息 | 说明 | 1237| -------- | -------- | 1238| Ver: X.X.Xx. | hdc(SDK)客户端进程版本信息。 | 1239 1240**使用方法**: 1241 1242```shell 1243$ hdc -v 1244Ver: 3.1.0e 1245``` 1246 1247### 查询hdc服务进程版本 1248 1249查询hdc服务进程的版本信息,命令格式如下: 1250 1251```shell 1252hdc version 1253``` 1254 1255**返回信息**: 1256 1257| 返回信息 | 说明 | 1258| -------- | -------- | 1259| Ver: X.X.Xx. | hdc(SDK)服务进程版本信息。 | 1260 1261**使用方法**: 1262 1263```shell 1264$ hdc version 1265Ver: 3.1.0e 1266``` 1267 1268### 查询客户端和服务器进程版本 1269 1270命令格式如下: 1271 1272```shell 1273hdc checkserver 1274``` 1275 1276**返回信息**: 1277 1278| 返回信息 | 说明 | 1279| -------- | -------- | 1280| Client version: Ver: X.X.Xx, Server version: Ver: X.X.Xx. | client(客户端),server(服务器)版本号。 | 1281 1282**使用方法**: 1283 1284```shell 1285$ hdc checkserver 1286Client version: Ver: 3.1.0e, Server version: Ver: 3.1.0e 1287``` 1288 1289## hdc调试日志 1290 1291### 服务器进程日志 1292 1293**指定运行时日志等级** 1294 1295hdc运行时日志等级,默认为LOG_INFO,命令格式如下: 1296 1297```shell 1298hdc -l [level] [command] 1299``` 1300 1301**参数**: 1302 1303| 参数 | 说明 | 1304| -------- | -------- | 1305| [level] | 指定运行时日志等级,等级随数字递增。设置日志级别时会启用当前及以下所有等级类型。例如,设置日志等级为3,可打印1~3类型的所有日志。<br/>0:LOG_OFF<br/>1:LOG_FATAL<br/>2:LOG_WARN<br/>3:LOG_INFO<br/>4:LOG_DEBUG<br/>5:LOG_ALL<br/>6:LOG_LIBUSB | 1306| command | hdc支持的命令。 | 1307 1308> **说明:** 1309> 1310> 1. 当配置运行时日志级别为6(LOG_LIBUSB)时,将激活libusb相关的增量日志输出,增量日志级别的详细程度高、数据量大,有助于准确诊断服务进程中与USB相关的异常情况,建议开发者按需使用。USB相关操作主要由服务进程执行,因此,只有服务进程具备打印增量日志的功能。相应地,客户端侧的日志几乎不包含增量日志信息。 1311> 1312> 2. 指定运行日志等级仅适用于当前进程(包括客户端与服务进程),无法更改已存在的进程日志等级。 1313 1314**返回信息**: 1315 1316| 返回信息 | 说明 | 1317| -------- | -------- | 1318| 日志信息。 | 指定等级的日志打印信息。 | 1319 1320**使用方法**: 1321 1322```shell 1323# 客户端打印LOG_DEBUG及以下级别日志,以执行shell ls为例 1324$ hdc -l 5 shell ls 1325[D][1970-01-01 00:00:00.000][12dc][xxxx.xxx:123] Mallocchannel:1234567 1326... 1327 1328# 服务进程前台模式启动指定LOG_LIBUSB级别日志 1329$ hdc kill && hdc -l 6 -m 1330Kill server finish 1331[I][1970-01-01 00:00:00.000][4f28][xxxx.xxx:123] Program running. Ver: 3.1.0e Pid:12345 1332... 1333 1334# 服务进程后台启动模式指定LOG_LIBUSB级别日志 1335$ hdc kill && hdc -l 6 start 1336Kill server finish 1337[D][1970-01-01 00:00:00.000][12dc][xxxx.xxx:123] Mallocchannel:1234567 1338... 1339``` 1340 1341> **说明:** 1342> 1343> 使用-m参数可以以前台启动服务进程,从而直接观察前台日志输出。如果需要退出进程,可按下Ctrl+C。 1344> 1345> 以后台启动时,可以在hdc.log中观察日志输出。 1346 1347**日志获取** 1348 1349请执行以下命令开启日志获取: 1350 1351```shell 1352hdc kill 1353hdc -l 5 start 1354``` 1355 1356收集到的完整日志存放路径如下: 1357 1358| 平台 | 路径 | 备注 | 1359| -------- | -------- | -------- | 1360| Windows | %temp%\ | 实际路径参考:C:\\Users\用户名\AppData\Local\Temp<br/>(实际使用请替换用户名变量)。 | 1361| Linux | /tmp/ | | 1362| MacOS | $TMPDIR/ | 实际路径可通过echo $TMPDIR查看,执行cd $TMPDIR命令可直接跳转至相应目录。 | 1363 1364日志文件类型包括: 1365 1366| 日志类型 | 日志名称格式 | 日志用途 | 备注 | 1367| -------- | -------- | -------- | -------- | 1368| 实时日志 | hdc.log | 实时记录服务器进程日志。 | 每次重启hdc服务进程,将会重命名原有日志并记录新的hdc.log。 | 1369| 历史日志临时文件 | hdc-%Y%m%d-%H%M%S.log | 转储历史日志归档生成的中间文件。 | 以时间2024年9月19日16:18:57.921为例,对应时间格式为:20240919-161857921,生成的日志临时文件名为:hdc-20240919-161857921.log。 | 1370| 历史日志归档文件 | hdc-%Y%m%d-%H%M%S.log.tgz | 压缩存储历史日志。 | 归档文件为.tgz类型压缩文件,可使用解压工具进行解压查看。以历史日志临时文件名hdc-20240919-161857921.log为例,对应的历史日志归档文件名为:hdc-20240919-161857921.log.tgz,历史日志归档文件生成后,对应的历史日志临时文件将自动删除。 | 1371| 实时日志缓存临时文件 | .hdc.cache.log | 实时日志产生的临时缓存。 | | 1372 1373### 设备端日志 1374 1375使用hilog日志工具获取对应日志,命令如下: 1376 1377```shell 1378hdc shell hilog -w start # 开启hilog日志落盘(已开启hilog日志工具再次执行会报错) 1379hdc shell hilog -w stop # 关闭hilog日志落盘(已关闭hilog日志工具再次执行会报错) 1380hdc shell ls /data/log/hilog # 查看已落盘hilog日志 1381hdc file recv /data/log/hilog {local_path} # 获取hilog已落盘日志(包含内核日志,local_path为本地路径,不同系统有所区别,这里未列举实际示例) 1382``` 1383 1384## 可选配置项 1385 1386### OHOS_HDC_SERVER_PORT 1387 1388默认值:8710。 1389 1390用于设置服务器进程运行时监听的端口号,该端口用于客户端与服务器之间的数据通讯。 1391 1392服务器进程启动时,默认会监听电脑的8710端口,客户端使用TCP协议通过此端口连接服务器。如果电脑的8710端口已经被使用或希望使用其他端口,可以通过添加环境变量OHOS_HDC_SERVER_PORT到系统环境变量中来修改服务器进程启动时监听的端口号。可以设置的端口范围为1~65535。 1393 1394例如,添加变量名为:OHOS_HDC_SERVER_PORT,变量值可设置为任意未被占用的端口,如18710。 1395 1396### OHOS_HDC_LOG_LEVEL 1397 1398默认值:3。 1399 1400用于设置服务进程日志记录级别,日志级别详情参考:[服务器进程日志](#服务器进程日志)指定运行时日志等级章节。 1401 1402### OHOS_HDC_HEARTBEAT 1403 1404默认:心跳功能开启。 1405 1406用于设置服务器和守护程序的心跳功能开关。 1407 1408服务器和守护程序启动后,默认会互相发送心跳数据包,收到心跳数据包后会记录在hdc的日志中,方便后期查看设备的连接情况。 1409 1410服务器进程运行的电脑中配置环境变量OHOS_HDC_HEARTBEAT为“1”后,服务器会关闭心跳特性;当有设备连接这台电脑后,服务器会给守护程序发送心跳特性关闭的信息,双方不再互相发送心跳数据包。 1411 1412设置为"1"表示关闭心跳功能,设置为其它数字表示开启心跳功能。 1413 1414### OHOS_HDC_CMD_RECORD 1415 1416默认:hdc命令录制关闭。 1417 1418用于设置hdc命令录制功能的开关。此功能仅记录执行的hdc命令,不记录命令的执行结果。 1419 1420设置为"1"表示开启命令录制功能;不设置或者设置为其它数字表示关闭命令录制功能。 1421 1422从API version 20开始,支持该参数。 1423 1424录制日志的存放路径如下: 1425 1426| 平台 | 路径 | 备注 | 1427| -------- | -------- | -------- | 1428| Windows | %temp%\hdc_cmd\ | 实际路径参考:C:\\Users\用户名\AppData\Local\Temp\hdc_cmd\<br/>(实际使用请替换用户名变量)。 | 1429| Linux | /tmp/hdc_cmd/ | | 1430| MacOS | $TMPDIR/hdc_cmd/ | | 1431 1432### OHOS_HDC_ENCRYPT_CHANNEL 1433 1434默认:通道加密功能关闭。 1435 1436用于设置服务器和守护程序之间的TCP连接通道加密功能开关。 1437 1438设置为"1"表示开启TCP连接的通道加密功能;不设置或者设置为其它数字表示关闭通道加密功能。 1439 1440从API version 20开始,支持该参数。 1441 1442> **说明:** 1443> 1444> 服务器进程运行时默认监听电脑端的8710端口,可通过设置系统环境变量OHOS_HDC_SERVER_PORT自定义监听的端口号。 1445 1446### 环境变量配置方法 1447 1448以配置OHOS_HDC_LOG_LEVEL值为5举例,介绍环境变量配置方法,更详细的步骤可参考[环境准备](#环境准备)。 1449 1450| 操作系统 | 配置方法 | 1451| -------- | -------- | 1452| Windows | 在电脑设置中搜索“查看高级系统设置”,在环境变量 > 系统变量 > Path > 编辑中,添加环境变量名称为OHOS_HDC_LOG_LEVEL,变量值为5。配置完毕后点击确认。环境变量配置完成后,关闭并重启命令行或其他使用到HarmonyOS SDK的软件,以生效新配置的环境变量。 | 1453| Linux | 在~/.bash_profile文件末尾追加内容export OHOS_HDC_LOG_LEVEL=5并保存后,执行source ~/.bash_profile生效当前环境变量。 | 1454| MacOS | 在~/.zshrc文件末尾追加内容export OHOS_HDC_LOG_LEVEL=5并保存后,执行source ~/.zshrc生效当前环境变量。环境变量配置完成后,关闭并重启命令行或其他使用到HarmonyOS SDK的软件,以生效新配置的环境变量。 | 1455 1456## hdc版本配套表 1457 1458| hdc版本 | API版本 | 新增特性 | 1459| -------- | -------- | -------- | 1460| 3.1.0a | 12 | wait命令支持-t参数:详细说明参见[等待设备正常连接](#等待设备正常连接)。 | 1461| 3.1.0e | 15 | - file send命令支持-b参数:详细说明参见[文件传输](#文件传输)。<br/>- file recv命令支持-b参数:详细说明参见[文件传输](#文件传输)。<br/>- shell命令支持-b参数:详细说明参见[执行交互命令](#执行交互命令)。 | 1462| 3.2.0b | 20 | - 端口转发任务支持监听远端主机IP:详细说明参见[创建正向端口转发任务](#创建正向端口转发任务)。 | 1463 1464> **注意:** 1465> 1466> 如果开发者当前运行的hdc版本较低,某些功能存在兼容性问题,需要根据功能特性提升版本时,可参考对应API版本说明下载最新版本。 1467 1468## 常见问题 1469 1470### 设备无法识别 1471 1472**现象描述** 1473 1474命令行执行hdc list targets命令后,返回结果为[Empty]。 1475 1476**可能原因&解决方法** 1477 1478**情况一**: 1479 1480查看设备管理器是否显示hdc设备。 1481 1482Windows环境: 1483 1484在设备管理器>通用串行总线设备中是否显示HDC Device(单一端口设备)或HDC Interface(复合端口设备)。 1485 1486Linux环境: 1487 1488在命令行执行lsusb,在返回的内容中检查是否有HDC Device(单一端口设备)或HDC Interface(复合端口设备)。 1489 1490MacOS环境: 1491 1492查看USB设备的系统信息或系统概述,步骤如下: 1493 14941. 按住键盘上的Option键,点按菜单(通常位于屏幕左上角); 1495 14962. 选取系统信息或系统概述选项; 1497 14983. 在随后出现的窗口中,选择左边的USB选项; 1499 15004. 在随后显示的设备树中,查看是否有HDC Device(单一端口设备)或HDC Interface(复合端口设备)。 1501 1502**可采取的解决方法** 1503 1504如果上述环境中未显示hdc设备,说明设备未能被正确识别,开发者可以尝试以下方法解决: 1505 15061. 请尝试使用其他USB物理接口。 1507 15082. 更换USB数据线。 1509 15103. 使用其他计算机进行调试。 1511 15124. 启用设备的USB调试模式。 1513 15145. 当设备出现授权信任弹窗,请点击“信任”或“永久信任”。 1515 15166. 设备执行恢复出厂设置操作。 1517 1518**情况二**: 1519 1520存在USB设备,但是驱动损坏,显示"HDC Device"⚠警告图标。 1521 1522现象描述:该问题常见于Windows环境,表现在设备管理器>通用串行总线设备中,HDC Device显示为黄标警告,且描述信息为该设备无法正常工作。可尝试重新安装驱动解决,如重新安装驱动无法解决,可以尝试更换USB连接数据线/拓展坞/USB接口。 1523 1524**重新安装驱动的方法** 1525 15261. 打开设备管理器,右键点击存在警告图标的HDC Device; 1527 15282. 出现的菜单中点击更新驱动程序; 1529 15303. 出现的提示窗口(第1/3个)中,点击浏览我的电脑以查找驱动程序; 1531 15324. 出现的提示窗口(第2/3个)中,点击让我从计算机上的可用驱动程序列表中选取; 1533 15345. 出现的提示窗口(第3/3个)中,点击取消勾选显示兼容硬件,选择厂商:WinUSB设备,选择型号:WinUSB设备,选择完成后点击下一步按钮。 1535 1536**情况三**: 1537 1538连接设备时出现[Fail]Failed to communicate with daemon。 1539 1540现象描述:命令行执行hdc相关命令,返回[Fail]Failed to communicate with daemon。 1541 1542可能存在以下原因,可参考排查: 1543 15441. hdc或SDK版本与设备不匹配:如果设备更新到最新版本,可更新hdc或SDK工具至最新版本。 1545 15462. 端口被占用: 1547 1548当hdc和hdc_std使用同一端口同时运行时,OHOS_HDC_SERVER_PORT设置的端口互相冲突(未设置则使用默认端口8710,仍然会冲突)。只运行其中一个实例,其他软件占用hdc默认端口也会导致该问题发生。 1549 1550**情况四**: 1551 1552连接设备时出现Connect server failed。 1553 1554出现该现象,可能存在以下原因: 1555 1556**端口抢占** 1557 1558解决方法如下: 1559 15601. 排查具有自带hdc功能的软件进程。 1561 如果存在自带hdc的软件(DevEco Studio、DevEco Testing),请关闭这些软件后再执行hdc相关命令。 1562 15632. 查询hdc端口情况。 1564 以设置OHOS_HDC_SERVER_PORT为8710端口为例,不同平台的查询命令如下: 1565 1566 Unix: 1567 1568 ```shell 1569 netstat -an |grep 8710 1570 ``` 1571 1572 Windows: 1573 1574 ```shell 1575 netstat -an |findstr 8710 1576 ``` 1577 1578 如存在抢占的软件,请关闭该软件进程或更换OHOS_HDC_SERVER_PORT环境变量为其他端口号。 1579 15803. 排查未关闭的其他版本服务器进程。 1581 1582 Windows: 1583 1584 使用任务管理器>详细信息查询hdc.exe进程,右键打开文件所在位置,核对位置是否为配置的环境变量中的hdc文件位置,如果不一致,可尝试结束hdc.exe进程(执行hdc kill命令或者在任务管理器直接结束进程)并重新执行hdc命令。(关闭服务器进程后执行hdc命令会重启服务器)。 1585 1586 Unix: 1587 1588 使用ps -ef |grep hdc查询hdc后台服务器进程,核对进程启动位置是否为配置的环境变量中的hdc文件位置,如果不一致,可尝试结束hdc进程(hdc kill或者kill -9 hdc进程的pid)并重新执行hdc命令。(关闭服务器进程后执行hdc命令会重启服务器)。 1589 1590**注册表异常** 1591 1592解决方法:清理注册表,步骤如下: 1593 15941. 同时按下Win+R键,启动运行工具,输入栏输入regedit打开注册表; 1595 15962. 在注册表地址栏中输入以下内容并按回车键,即可进入USB类设备驱动程序的注册表; 1597 1598 ```shell 1599 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{88bae032-5a81-49f0-bc3d-a4ff138216d6} 1600 ``` 1601 16023. 找到UpperFilters,右键点击”修改”,**备份**并清空其中的数值数据内容(如果清空后无法解决问题,可以依照备份恢复); 1603 16044. 刷新设备管理器,插拔USB接口,或重启计算机。 1605 1606### Linux系统非管理员权限运行hdc提示无法找到设备 1607 1608**现象描述** 1609 1610Linux非管理员角色运行hdc后,使用USB方式连接设备后执行hdc list targets命令无法找到设备。 1611 1612**可能原因&解决方法** 1613 1614非管理员角色默认无USB设备操作权限,如果需要开启该权限,可按以下方法操作: 1615 1616- (临时权限)设置USB设备操作权限最大化: 1617 1618```shell 1619sudo chmod -R 777 /dev/bus/usb/ 1620``` 1621 1622- (永久权限)永久修改USB设备权限: 1623 1. 使用lsusb命令查找USB设备的vendorID和productID; 1624 2. 创建一个新的udev规则; 1625 编辑udev加载规则,用设备的“idVendor”和“idProduct”来替换默认值。 1626 1627 MODE="0666"来表示USB设备的权限GROUP;GROUP代表用户组,要确保此时登录的系统用户在该用户组中: 1628 1629 ```shell 1630 $ sudo vim /etc/udev/rules.d/90-myusb.rules 1631 SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", GROUP="users", MODE="0666" 1632 ``` 1633 1634 3. 重启电脑或重新加载udev规则: 1635 1636 ```shell 1637 sudo udevadm control --reload 1638 ``` 1639 1640> **注意:** 1641> 1642> 开启非管理员角色的USB设备操作权限可以解决在Linux环境在非管理员权限下使用hdc因权限不足无法找到设备的情况。但权限最大化可能存在潜在安全问题,请开发者根据使用场景自行评估是否开启此权限。 1643 1644### hdc无法运行 1645 1646**现象描述** 1647 1648使用命令行执行hdc命令无法运行。 1649 1650**可能原因&解决方法** 1651 16521. 运行环境异常。 1653 Linux运行环境:建议使用Ubuntu18.04及以上64位版本。如出现libc++.so引用错误,请使用ldd或readelf命令检查库引用。 1654 1655 MacOS运行环境:建议使用MacOS 11及以上版本。 1656 1657 Windows运行环境:建议使用Windows10或Windows11 64位版本,如低版本缺失WinUSB库或驱动,请使用Zadig工具进行更新。对于需要安装驱动的设备,请使用Zadig工具安装libusb-win32驱动。详情请见:[Zadig链接](https://github.com/pbatard/libwdi/releases)。 1658 16592. 运行方式不当:请使用命令行依照正确命令运行hdc工具,而非鼠标双击文件。 1660 1661### 使用hdc file send/recv传输中文文件出现乱码 1662 1663**现象描述** 1664 1665hdc文件传输命令执行出现乱码,如使用file recv从设备侧发送带有中文名称的文件到本地,报错提示[Fail]Error opening file: no such file or directory, path:XXXXX,其中path显示中文乱码。 1666 1667 1668 1669**可能原因&解决方法** 1670 16713.1.0a版本开始,文件传输命令支持参数路径中包含中文,版本过低需要更新至最新版本。 1672 1673执行hdc checkserver命令检查当前版本。如果低于3.1.0a版本,需将SDK升级到API12或更高版本。 1674 1675### 执行hdc list targets显示"Unauthorized" 1676 1677**现象描述** 1678 1679使用hdc list targets命令查询已连接设备,连接设备标识后显示Unauthorized。 1680 1681 1682 1683**可能原因&解决方法** 1684 1685- 首次连接未授权:连接设备后解锁设备,屏幕显示“是否信任此设备?”窗口,点击“始终信任”或“信任”完成授权。 1686 1687- 授权窗口关闭或拒绝授权:设备侧授权窗口会在超时后关闭,或开发者在授权窗口点击“不信任”拒绝授权。需要再次授权可在设备侧 设置 > 系统 > 开发者选项 > USB调试/无线调试 中,关闭已开启的调试开关后再开启,或执行hdc kill -r重启服务进程。屏幕会再次显示“是否信任此设备?”窗口,点击“始终信任”或“信任”完成授权。 1688 1689### 执行任意hdc命令报错:CryptAcquireContext second failed 1690 1691**现象描述** 1692 1693执行hdc相关命令报错:CryptAcquireContext second failed XXX。 1694 1695**可能原因&解决方法** 1696 1697修改电脑环境注册表信息: 1698 16991. 同时按下Win+R键,启动运行工具,在输入栏中输入regedit以打开注册表; 1700 17012. 注册表地址栏输入以下内容并按下回车 1702 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Protect\Providers\df9d8cd0-1501-11d1-8c7a-00c04fc297eb; 1703 17043. 右键新建DWORD(32位)值(D),新增值名称为ProtectionPolicy 值为 1 (16进制),然后点击确定; 1705 17064. 重启电脑后问题解决。 1707 1708### Windows设备管理器出现 未知USB设备(设备描述符请求失败) 1709 1710**现象描述** 1711 1712使用USB方式连接调试设备,电脑端设备管理器通用串行总线控制器出现未知USB设备(设备描述符请求失败) 1713 1714**可能原因&解决方法** 1715 17161. 进入Windows服务管理(services.msc),禁止后重启Plug and Play服务; 1717 17182. 卸载设备管理器中出现故障的USB设备,并拔出USB线; 1719 17203. 重启计算机。 1721 1722尝试后,如果仍然无法识别,或者将设备连接到其他计算机上也无法识别,可能是USB设备的驱动出现故障,可以尝试更换USB连接线。 1723 1724### hdc命令执行异常 1725 1726**现象描述** 1727 1728hdc命令执行后未输出预期内容,可能涉及以下场景。 1729 1730- 场景一:执行hdc命令提示:Connect server failed。 1731 1732- 场景二:执行hdc命令提示:connect failed status:-4078。 1733 1734- 场景三:执行hdc命令无任何输出。 1735 1736**可能原因&解决方法** 1737 1738端口异常问题的解决方法如下: 1739 17401. 排查自带hdc的软件进程。包括自带hdc的软件(如DevEco Studio、DevEco Testing),如果存在这些软件,请关闭后再执行hdc相关命令。 1741 17422. 查询hdc端口情况。以设置的OHOS_HDC_SERVER_PORT为8710端口为例,在不同平台查询命令如下: 1743 Unix: 1744 1745 ```shell 1746 netstat -an |grep 8710 1747 ``` 1748 1749 Windows: 1750 1751 ```shell 1752 netstat -an |findstr 8710 1753 ``` 1754 1755 如存在抢占的软件,可以终止该软件进程,或者修改OHOS_HDC_SERVER_PORT环境变量为其他端口号。 1756 17573. 排查未关闭的其他版本服务器进程。 1758 1759 Windows:使用任务管理器>详细信息查询hdc.exe进程,右键打开文件所在位置,核对位置是否为配置的环境变量中的hdc文件位置,如果不一致,可尝试结束hdc.exe进程(命令行工具中执行hdc kill或者任务管理器直接结束进程)并重新执行hdc命令。(关闭服务器进程后执行hdc命令会重新启动服务器)。 1760 1761 Unix:使用ps -ef | grep hdc查询hdc后台服务器进程,核对进程启动位置是否为配置的环境变量中的hdc文件位置,如果不一致,可尝试结束hdc进程(hdc kill或者kill -9 hdc进程的pid)并重新执行hdc命令。(关闭服务器进程后执行hdc命令会重新启动服务器)。 1762 1763### 其他问题排查常用步骤 1764 17651. 命令行执行hdc list targets查看返回信息。 1766 17672. 检查设备管理是否有HDC Device。 1768 17693. 执行hdc kill关闭服务器进程后,执行hdc -l5 start收集日志(hdc.log位于执行端TEMP目录下,不同平台目录位置存在差异,可参考[服务器进程日志](#服务器进程日志))。 1770 17714. 通过hdc.log日志定位相关问题。 1772 1773> **说明:** 1774> 1775> 更多常见问题处理可见[FAQ](https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-performance-analysis-kit)。 1776 1777## hdc错误码 1778 1779### E000001 hdc版本太低 1780 1781**错误信息** 1782 1783The sdk hdc.exe version is too low, please upgrade to the latest version. 1784 1785**错误描述** 1786 1787hdc版本太低,需更新至最新版本。 1788 1789**可能原因** 1790 1791客户端版本低于3.0.0b时,不支持授权,无法接入系统。 1792 1793**处理步骤** 1794 1795可参考[hdc版本配套表](#hdc版本配套表)升级到最新版本。 1796 1797### E000002 设备未授权 1798 1799**错误信息** 1800 1801The device unauthorized. 1802 1803This server's public key is not set. 1804 1805Please check for a confirmation dialog on your device. 1806 1807Otherwise try 'hdc kill' if that seems wrong. 1808 1809**错误描述** 1810 1811设备未授权。请检查是否在设备授权弹窗“信任”授权,如果已经授权,请尝试执行"hdc kill"命令后重新执行调试命令。 1812 1813**可能原因** 1814 1815- 场景一:首次连接设备未在设备侧授权调试计算机。 1816 1817- 场景二:授权窗口弹出,如果开发者点击了“信任”而非“始终信任”,在断开设备后重新连接时需要再次授权。 1818 1819**处理步骤** 1820 1821- 场景一:设备侧弹出授权窗口,点击授权。具体操作为:连接设备后,系统会自动弹出授权弹窗。 1822 1823- 场景二:进入设备侧 设置 > 系统 > 开发者选项,关闭调试开关后重新打开,重新连接设备进行授权;或者执行命令hdc kill -r后重新启动hdc,再次触发授权弹窗,点击“始终信任”。 1824 1825### E000003 设备侧用户未授权 1826 1827**错误信息** 1828 1829The device unauthorized. 1830 1831The user denied the access for the device. 1832 1833Please execute 'hdc kill' and redo your command, 1834 1835then check for a confirmation dialog on your device. 1836 1837**错误描述** 1838 1839设备未授权。设备侧拒绝授权调试,请执行"hdc kill"命令后重新执行调试命令,并且检查设备侧授权窗口提醒。 1840 1841**可能原因** 1842 18431. 设备侧授权窗口超时自动关闭,未确认授权。 1844 18452. 开发者点击“不信任”,拒绝授权。 1846 1847**处理步骤** 1848 1849进入设备侧 设置 > 系统 > 开发者选项,关闭调试开关后重新打开,重新连接设备进行授权;或执行命令hdc kill -r后重新启动hdc,再次触发授权弹窗,点击“始终信任”。 1850 1851### E000004 通信连接不稳定 1852 1853**错误信息** 1854 1855The communication channel is being established. 1856 1857Please wait for several seconds and try again. 1858 1859**错误描述** 1860 1861通信通道未建立,请等待几秒后重试。 1862 1863**可能原因** 1864 1865网络或USB连接未建立或连接不稳定。 1866 1867**处理步骤** 1868 1869连接设备后等待大约10秒,待连接建立后进行调试。 1870 1871### E001000 tmode不支持设置USB调试 1872 1873**错误信息** 1874 1875For USB debugging, please set it on the device's Settings UI. 1876 1877**错误描述** 1878 1879执行hdc tmode命令不支持设置USB调试。 1880 1881**可能原因** 1882 1883hdc tmode usb命令已废弃,参见[USB调试和无线调试切换](#usb调试和无线调试切换)。 1884 1885**处理步骤** 1886 1887参见[USB调试和无线调试切换](#usb调试和无线调试切换) tmode usb命令说明。 1888 1889### E001001 命令未知 1890 1891**错误信息** 1892 1893Unknown command. 1894 1895**错误描述** 1896 1897hdc tmode 命令有误。 1898 1899**可能原因** 1900 1901hdc tmode命令缺少参数或参数有误。 1902 1903**处理步骤** 1904 1905参考[USB调试和无线调试切换](#usb调试和无线调试切换),完善执行命令。 1906 1907### E001003 USB连接异常 1908 1909**错误信息** 1910 1911USB communication abnormal, please check the USB communication link. 1912 1913**错误描述** 1914 1915USB通信异常,请检查USB通信链路。 1916 1917**可能原因** 1918 1919- USB连接线松动或断开。 1920 1921- 执行hdc shell reboot后,设备重启,连接正常断开,无需处理。 1922 1923- 执行hdc tmode port XXX,设备由USB调试方式转换为无线调试方式,连接正常断开,无需处理。 1924 1925**处理步骤** 1926 1927- 确认设备与电脑的USB线连接牢固。正常连接仍有异常,可尝试更换USB线或其他USB端口。 1928 1929- 参考[hdc版本配套表](#hdc版本配套表)章节,将版本升级到最新。 1930 1931### E001104 tconn命令IP地址非法 1932 1933**错误信息** 1934 1935IP address incorrect. 1936 1937**错误描述** 1938 1939IP地址格式不正确。 1940 1941**可能原因** 1942 1943使用tconn命令无线调试连接时,输入IP地址不符合IPv4格式。 1944 1945**处理步骤** 1946 1947检查输入IP地址是否合法,正确IP格式参照127.0.0.1:8888保证无异常非法字符,修正后重新连接。 1948 1949### E001005 设备未知或断连 1950 1951**错误信息** 1952 1953Device not found or connected. 1954 1955**错误描述** 1956 1957找不到连接设备或为非连接状态。 1958 1959**可能原因** 1960 1961设备断连。 1962 1963**处理步骤** 1964 1965参考[设备无法识别](#设备无法识别)中描述的实际场景对应的解决方式进行操作。 1966 1967### E001300 模拟器不支持tmode命令 1968 1969**错误信息** 1970 1971Not support tmode for Emulator. 1972 1973**错误描述** 1974 1975模拟器场景不支持hdc tmode命令。 1976 1977**可能原因** 1978 1979DevEco Studio中模拟器调试不支持hdc tmode命令。 1980 1981**处理步骤** 1982 1983如需调试tmode相关命令,请连接实体设备后进行调试。 1984 1985### E002101 服务器进程无法结束 1986 1987**错误信息** 1988 1989Terminal hdc process failed, please terminal the hdc process in the task manager first. 1990 1991**错误描述** 1992 1993服务器进程无法结束。 1994 1995**可能原因** 1996 1997当删除.hdcserver.pid文件后执行hdc kill时,由于无法获取服务器的进程pid,导致无法结束进程。 1998 1999**处理步骤** 2000 2001在任务管理器中手动结束hdc进程。 2002 2003### E002105 命令不支持 2004 2005**错误信息** 2006 2007Unsupport command. 2008 2009**错误描述** 2010 2011命令不支持。 2012 2013**可能原因** 2014 2015设备侧版本过低,不支持执行调试命令。 2016 2017**处理步骤** 2018 2019尝试升级设备版本,或参考[hdc命令列表](#hdc命令列表)检查命令是否准确。 2020 2021### E002106 设备通信异常 2022 2023**错误信息** 2024 2025Failed to communicate with daemon. 2026 2027**错误描述** 2028 2029服务器与设备侧守护程序通信异常。 2030 2031**可能原因** 2032 2033- USB调试连接断开。 2034 2035- TCP无线调试方式网络不稳定。 2036 2037**处理步骤** 2038 2039检查并确保设备已正常连接。 2040 2041检查网络状态,网络稳定后重新尝试连接。 2042 2043### E003001 (命令行)指定的包名非法 2044 2045**错误信息** 2046 2047Invalid bundle name: bundlename. 2048 2049**错误描述** 2050 2051命令hdc shell [-b bundlename] [command]中指定的 bundlename 不是已安装的可调试应用包名且已在设备启动,或应用目录不存在。 2052 2053**可能原因** 2054 20551. 场景一:设备上未安装指定的应用。 2056 20572. 场景二:指定包名的应用不是可调试应用。 2058 20593. 场景三:指定包名的应用未启动。 2060 2061**处理步骤** 2062 2063- 场景一:确认命令指定包名的应用已安装到设备上。 2064 执行hdc shell "bm dump -a | grep bundlename"查询对应包名的应用是否已安装到设备上,预期返回信息为 bundlename; 2065 2066 以应用名com.example.myapplication为例,查询命令如下: 2067 2068 ```shell 2069 hdc shell "bm dump -a | grep com.example.myapplication" 2070 ``` 2071 2072 如应用已安装到设备上,预期返回信息: 2073 2074 ```shell 2075 com.example.myapplication 2076 ``` 2077 2078- 场景二:确认命令指定的应用是否为可调试应用。 2079 1. 执行hdc shell "bm dump -n bundlename | grep appProvisionType"命令进行查询,预期返回信息为"appProvisionType": "debug"。 2080 以包名com.example.myapplication为例,可执行如下命令查询: 2081 2082 ```shell 2083 hdc shell "bm dump -n com.example.myapplication | grep appProvisionType" 2084 ``` 2085 2086 如包名对应的应用是可调试应用,预期返回的信息如下: 2087 2088 ```shell 2089 "appProvisionType": "debug", 2090 ``` 2091 2092 2. 要构建可调试应用,需要使用调试证书进行签名。可参考:[申请调试证书](https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-debugcert-0000001914263178)。 2093 2094- 场景三:确定命令指定的应用已启动。 2095 1. 启动应用后,系统会挂载相应的资源目录。可执行hdc shell "mount |grep bundlename"查询应用启动后的资源目录挂载情况。 2096 以应用名com.example.myapplication为例,可执行如下命令查询是否已挂载资源目录: 2097 2098 ```shell 2099 hdc shell "mount |grep com.example.myapplication" 2100 ``` 2101 2102 如果已挂载相应的资源目录,预期将返回挂载信息(返回内容以实际挂载情况为准,此处不作展示)。 2103 2104 如果未挂载相应的资源目录,预期不会返回任何信息。 2105 2. 如果未挂载相应的资源目录,可以通过手动点击应用或使用aa相关命令启动应用。 2106 以应用名com.example.myapplication模块名EntryAbility为例,启动命令为: 2107 2108 ```shell 2109 hdc shell aa start -b com.example.myapplication -a EntryAbility 2110 ``` 2111 2112 更多详细用法请参考[aa命令介绍](../tools/aa-tool.md)。 2113 2114### E003002 命令行指定的参数不支持交互模式 2115 2116**错误信息** 2117 2118Unsupport interactive shell command option. 2119 2120**错误描述** 2121 2122命令hdc shell [-b bundlename] [command]不支持“交互模式”命令行。 2123 2124**可能原因** 2125 2126命令hdc shell [-b bundlename] [command]指定的 command 参数不可为空。 2127 2128**处理步骤** 2129 2130确认 command 参数不为空值,详细使用方法请参考[执行交互命令](#执行交互命令)。 2131 2132### E003003 交互命令参数不支持 2133 2134**错误信息** 2135 2136Unsupport shell option: XXX. 2137 2138**错误描述** 2139 2140命令hdc shell [-b bundlename] [command]指定了不支持的命令行参数。如-f,-B等。 2141 2142**可能原因** 2143 2144参数未区分大小写,或使用了不支持的参数。 2145 2146**处理步骤** 2147 2148参考[执行交互命令](#执行交互命令)使用当前版本支持的命令行参数,如-b参数。 2149 2150### E003004 设备侧不支持当前使用的参数 2151 2152**错误信息** 2153 2154Device does not support this shell option. 2155 2156**错误描述** 2157 2158当前设备不支持执行hdc shell [-b bundlename] [command]命令。 2159 2160**可能原因** 2161 2162设备系统版本较低,不支持新增的命令行参数。 2163 2164**处理步骤** 2165 2166升级设备操作系统版本到最新,具体版本可参考[hdc版本配套表](#hdc版本配套表)中版本配套说明。 2167 2168### E003005 命令行参数有误 2169 2170**错误信息** 2171 2172The parameter is missing, correct your input by referring below: Usage... 2173 2174**错误描述** 2175 2176hdc shell xxx,设备侧命令不支持。 2177 2178**可能原因** 2179 2180设备系统版本较低,不支持对应新增的命令行参数功能。 2181 2182**处理步骤** 2183 2184升级设备操作系统版本到最新,具体版本可参考[hdc版本配套表](#hdc版本配套表)中版本配套说明。 2185 2186### E005003 (文件传输)缺少参数 2187 2188**错误信息** 2189 2190The parameter is missing, correct your input by referring below: Usage... 2191 2192**错误描述** 2193 2194- 命令hdc file send [-b bundlename][SOURCE][DEST]缺少必要的参数。 2195 2196- 命令hdc file recv [-b bundlename][DEST][SOURCE]缺少必要的参数。 2197 2198**可能原因** 2199 2200命令指定-b参数时,缺少bundlename,SOURCE,DEST参数,命令详情参考[文件传输](#文件传输)。 2201 2202**处理步骤** 2203 2204确认命令参数bundlename,SOURCE,DEST参数均不为空。 2205 2206### E005004 SDK或设备系统不支持-b参数 2207 2208**错误信息** 2209 2210SDK/Device ROM doesn't support -b option. 2211 2212**错误描述** 2213 2214hdc file send/recv 命令带-b选项时,SDK中的hdc或设备系统版本不支持该选项。 2215 2216**可能原因** 2217 2218- 场景一:执行命令hdc file send [-b bundlename] [SOURCE] [DEST]时,设备系统版本不支持-b选项。 2219 2220- 场景二:执行命令hdc file recv [-b bundlename] [DEST] [SOURCE]时,SDK中的hdc不支持-b选项。 2221 2222**处理步骤** 2223 2224- 场景一:升级到最新系统版本,具体版本可参考[hdc版本配套表](#hdc版本配套表)中版本配套说明。 2225 2226- 场景二:升级到最新SDK版本,具体版本可参考[hdc版本配套表](#hdc版本配套表)中版本配套说明。 2227 2228### E005005 创建目录失败 2229 2230**错误信息** 2231 2232Error create directory: xxx, path: xxx. 2233 2234**错误描述** 2235 2236创建目录失败。 2237 2238**可能原因** 2239 2240执行hdc file send命令发送文件,设备侧对应目录为无权限目录或只读系统目录。 2241 2242**处理步骤** 2243 2244修改发送文件目标目录,确保目标目录有写权限。 2245 2246### E005101 (文件传输)指定的包名非法 2247 2248同错误码[E003001 (命令行)指定的包名非法](#e003001-命令行指定的包名非法)。 2249 2250### E005102 非法的远端路径 2251 2252**错误信息** 2253 2254Remote path: xxx is invalid, no such file/directory or it's out of the application directory. 2255 2256**错误描述** 2257 2258- 命令hdc file send [-b bundlename][SOURCE][DEST]指定的DEST表示的路径不存在或已超出应用数据目录。 2259 2260- 命令hdc file recv [-b bundlename][SOURCE][DEST]指定的DEST表示的路径不存在或已超出应用数据目录。 2261 2262**可能原因** 2263 2264- 场景一:远端路径不存在。 2265 2266- 场景二:参数DEST包含 .. 路径跳转符号,处理跳转后,实际目录超出了应用数据根目录。 2267 2268**处理步骤** 2269 2270检查参数DEST指定的应用数据目录相对路径是否真实存在。 2271 2272### E006001 安装包路径非法 2273 2274**错误信息** 2275 2276Not any installation package was found. 2277 2278**错误描述** 2279 2280没有找到任何安装包。 2281 2282**可能原因** 2283 2284命令hdc install后缺少安装包参数。 2285 2286**处理步骤** 2287 2288参考[应用管理](#应用管理)。 2289 2290### E007100 不支持的命令 2291 2292**错误信息** 2293 2294Operate need running under debug mode. 2295 2296**错误描述** 2297 2298命令仅在调试模式下支持。 2299 2300**可能原因** 2301 2302不支持的命令。 2303 2304**处理步骤** 2305 2306无需进行处理。 2307 2308### E005008 不支持的文件传输操作 2309 2310**错误信息** 2311 2312Operation not allowed. 2313 2314**错误描述** 2315 2316命令操作不被允许。 2317 2318**可能原因** 2319 2320涉及敏感文件(如系统配置,日志文件等)不允许操作。 2321 2322**处理步骤** 2323 2324无需进行处理。 2325 2326### E001106 -e指定的IP不正确 2327 2328**错误信息** 2329 2330-e content IP incorrect. 2331 2332**错误描述** 2333 2334-e指定的IP不正确。 2335 2336**可能原因** 2337 2338不是合法的IP地址格式。 2339 2340**处理步骤** 2341 2342检查输入是否为合法的IP格式,并确认该IP地址属于本机。 2343