hdc(HarmonyOS Device Connector)是为开辟人员提供的用于调试的下令行工具,通过该工具可以在windows/linux/mac系统上与装备举行交互。
环境准备
hdc工具通过HarmonyOS SDK获取,存放于SDK的toolchains目录下,初次使用按照如下提示配置环境变量。
配置环境变量HDC_SERVER_PORT
Windows环境变量设置方法
在此电脑 > 属性 > 高级系统设置 > 高级 > 环境变量中,添加HDC端口变量名为:HDC_SERVER_PORT,变量值可设置为任意未被占用的端口,如7035。
环境变量配置完成后,关闭并重启DevEco Studio。
macOS环境变量设置方法
- 打开终端工具,执行以下下令,根据输出结果分别执行不同下令。
- 如输出结果为/bin/bash,则执行以下下令,打开.bash_profile文件。
- 如输出结果为/bin/zsh,则执行以下下令,打开.zshrc文件。
- 单击字母“i”,进入Insert模式。
- 输入以下内容,在PATH路径下添加HDC_SERVER_PORT端口信息。
- HDC_SERVER_PORT=7035
- launchctl setenv HDC_SERVER_PORT $HDC_SERVER_PORT
- export HDC_SERVER_PORT
复制代码 - 编辑完成后,单击Esc键,退出编辑模式,然后输入“:wq”,单击Enter键保存。
- 执行以下下令,使配置的环境变量见效。
- 假如步调1时打开的是.bash_profile文件,请执行如下下令:
- 假如步调1时打开的是.zshrc文件,请执行如下下令:
- 环境变量配置完成后,关闭并重启DevEco Studio。
(可选)配置全局环境变量
说明
如未配置全局环境变量,开辟者可通过下令行进入SDK的toolchains目录,在目录中执行hdc相关下令举行调试。
Windows环境变量设置方法
在此电脑 > 属性 > 高级系统设置 > 高级 > 环境变量 > 系统变量中,将SDK的toolchains完备路径添加到Path变量值中,具体路径信息以SDK现实配置路径为准。
以下图示内容以本地SDK的toolchains完备路径$DevEco Studio安装目录/sdk/[SDK版本]/openharmony/toolchains为例:
Linux/macOS环境变量设置方法
- 打开终端工具,执行以下下令,根据输出结果分别执行不同下令。
- 如输出结果为/bin/bash,则执行以下下令,打开.bash_profile文件。
- 如输出结果为/bin/zsh,则执行以下下令,打开.zshrc文件。
- 单击字母“i”,进入Insert模式。
- 输入以下内容,在PATH路径下增长SDK路径信息,具体路径信息以SDK现实配置路径为准。
以下内容以本地SDK的toolchains完备路径$DevEco Studio安装目录/sdk/[SDK版本]/openharmony/toolchains为例:
- HDC_SDK_PATH=/User/username/sdk/HarmonyOS/10/toolchains
- launchctl setenv HDC_SDK_PATH $HDC_SDK_PATH # 仅MacOS需要在此执行,Linux无须执行
- export PATH=$PATH:$HDC_SDK_PATH
复制代码 - 编辑完成后,单击Esc键,退出编辑模式,然后输入“:wq”,单击Enter键保存。
- 执行以下下令,使配置的环境变量见效。
- 假如步调1时打开的是.bash_profile文件,请执行如下下令:
- 假如步调1时打开的是.zshrc文件,请执行如下下令:
全局option相关下令
Option说明-h/help打印hdc帮助信息-v/version打印hdc版本信息-t [connect-key] [command]毗连指定的目标装备,connect-key可通过hdc list targets查询-l [level]指定运行时日志等级,默以为LOG_INFOcheckserver获取client-server版本
- 显示hdc相关的帮助信息,下令格式如下:
返回值:
返回值说明 HarmonyOS device connector(HDC) ...
---------------------------------global commands:----------------------------------
-h/help [verbose] - Print hdc help, 'verbose' for more other cmds
...(此处省略具体帮助信息)
hdc下令使用帮助信息使用方法:
- 显示hdc的版本信息,下令格式如下:
返回值:
返回值说明Ver: X.X.Xahdc(SDK)的版本信息使用方法:
- 毗连单台装备时,执行下令无需指定装备标识符;毗连了多台装备时,每次执行下令时必要指定目标装备的标识符,下令格式如下:
- hdc -t [connect-key] [command]
复制代码 参数:
参数名说明connect-key装备标识符commandhdc支持的下令
说明
connect-key为每个装备唯一的标识符。假如通过usb毗连,标识符为序列号;假如通过网络毗连装备,标识符为“IP地点:端标语”;
返回值:
返回值说明下令执行返回内容请参考对应下令的返回值[Fail]Not match target founded, check connect-key please没有找到与connect-key匹配的装备[Fail]Device not founded or connected装备未找到或尚未毗连[Fail]ExecuteCommand need connect-key? please confirm a device by help info多装备毗连时必要指定一个装备Unknown operation command...不支持的下令 使用方法:
该方法必要与具体的操纵下令搭配使用,下面以shell下令举例:
- hdc list targets // 查询已连接的所有目标设备的connect-key
- hdc -t [connect-key] shell // -t后面添加的connect-key需要替换为指定的设备标识符
复制代码
- 指定运行时日志等级,默以为LOG_INFO,下令格式如下:
参数:
参数说明[level] 指定运行时日志等级
0:LOG_OFF
1:LOG_FATAL
2:LOG_WARN
3:LOG_INFO
4:LOG_DEBUG
5:LOG_ALL
commandhdc支持的下令返回值:
返回值说明下令执行返回内容请参考对应下令的返回值LOG日志信息对应指定的运行时等级日志打印使用方法:
- 获取client-server版本,下令格式如下:
返回值:
返回值说明Client version: Ver: X.X.Xa, Server version: Ver: X.X.Xaclient-server版本号使用方法:
查询装备列表相关下令
下令说明list targets [-v]查询已毗连的所有目标装备,添加-v选项,则会打印装备具体信息 显示所有已毗连的装备列表,下令格式如下:
返回值:
返回值说明装备信息已毗连的装备列表信息[Empty]没有查询到装备信息 使用方法:
- hdc list targets
- hdc list targets -v
复制代码 服务历程相关下令
下令说明target mount以读写模式挂载系统分区(user不可用)target boot重启目标装备smode [-r]授予装备端hdc背景服务历程root权限, 使用-r参数取消授权(user不可用)kill [-r]停止hdc服务历程,使用-r参数触发服务历程重新启动start [-r]启动hdc服务历程,使用-r参数触发服务历程重新启动
- 以读写模式挂载系统分区,下令格式如下:
返回值:
返回值说明Mount finish挂载成功[Fail]Mount failed挂载失败使用方法:
- 授予装备端hdc背景服务历程root权限,下令格式如下:
返回值:
返回值说明无返回值授予权限成功[Fail]具体失败信息授予权限失败使用方法:
- hdc smode
- hdc smode -r // 取消root权限
复制代码 - 停止hdc服务历程,下令格式如下:
返回值:
返回值说明Kill server finish服务历程停止成功[Fail]具体失败信息服务历程停止失败使用方法:
- hdc kill
- hdc kill -r // 重启并终止服务进程
复制代码 - 启动hdc服务历程,下令格式如下:
返回值:
返回值说明无返回值服务历程启动成功[Fail]具体失败信息服务历程启动失败使用方法:
- hdc start
- hdc start -r // 服务进程启动状态下,触发服务进程重新启动
复制代码 网络相关下令
下令说明fport ls列出全部转发端口转发任务fport localnode remotenode设置正向端口转发任务:监听“主机端口”,吸收哀求并举行转发, 转发到“装备端口”rport remotenode localnode设置反向端口转发任务:监听“装备端口”,吸收哀求并举行转发,转发到“主机端口”fport rm taskstr删除指定的端口转发任务tmode usb该下令不会现实操纵装备毗连通道,必要在装备设置界面通过USB调试开关举行设置tmode port [port-number]打开装备网络毗连通道:装备端daemon历程会重启,已建立的USB毗连会停止,必要重新毗连tmode port close关闭装备无线毗连通道:装备端daemon历程会重启,已建立的USB毗连会停止,必要重新毗连tconn [IP]:[port] [-remove]指定毗连装备:通过“IP地点:端标语”来指定毗连的装备,使用-remove参数断开毗连
- 列出全部转发端口转发任务,下令格式如下:
返回值:
返回值说明tcp:1234 tcp:1080 [Forward]正向端口转发任务tcp:2080 tcp:2345 [Reverse]反向端口转发任务[empty]无端口转发任务使用方法:
- 设置正向端口转发任务,执行后将设置指定的“主机端口”转发数据到“装备端口”转发任务,下令格式如下:
- hdc fport localnode remotenode
复制代码 返回值:
返回值说明Forwardport result:OK端口转发任务设置正常[Fail]Incorrect forward command端口转发任务设置失败,端口转发参数错误[Fail]TCP Port listen failed at XXXX端口转发任务设置失败,本地转发端口被占用使用方法:
- hdc fport tcp:1234 tcp:1080
复制代码 - 设置反向端口转发任务,执行后将设置指定的“装备端口”转发数据到“主机端口”转发任务,下令格式如下:
- hdc rport remotenode localnode
复制代码 返回值:
返回值说明Forwardport result:OK端口转发任务设置正常[Fail]Incorrect forward command端口转发任务设置失败,端口转发参数错误[Fail]TCP Port listen failed at XXXX端口转发任务设置失败,本地转发端口被占用使用方法:
- hdc rport tcp:1234 tcp:1080
复制代码 - 删除端口转发任务,执行后将指定的转发任务删除,下令格式如下:
参数:
参数说明taskstr端口转发任务,形如 tcp:XXXX tcp:XXXX返回值:
返回值说明Remove forward ruler success, ruler:tcp:XXXX tcp:XXXX端口转发任务删除正常[Fail]Remove forward ruler failed, ruler is not exist tcp:XXXX tcp:XXXX端口转发任务删除失败,不存在指定的转发任务使用方法:
- hdc fport rm tcp:1234 tcp:1080
复制代码 - 打开装备USB毗连通道,下令格式如下:
使用方法:
说明
该下令不会现实操纵装备毗连通道,必要在装备设置界面通过USB调试开关举行设置。
- 打开装备网络毗连通道,下令格式如下:
- hdc tmode port [port-number]
复制代码 参数:
参数参数说明port-number监听毗连的网络端标语,范围:1~65536返回值:
返回值说明Set device run mode successful.打开成功[Fail]ExecuteCommand need connect-key打开失败,装备列表无装备,无法打开装备无线调试通道[Fail]Incorrect port range端标语超出可设置范围(1~65536)使用方法:
注意
切换前,请确保条件满足:远端装备与近端执行机处于同一网络,且执行机可ping通远端装备IP。
如不满足以上条件请勿使用该下令举行切换。
说明
执行完毕后,远端daemon历程将会退出并重启,USB毗连将会断开,必要重新毗连。
- 关闭装备无线毗连通道,下令格式如下:
返回值:
返回值说明[Fail]ExecuteCommand need connect-key装备列表无装备,无法执行下令使用方法:
说明
执行完毕后,远端daemon历程将会退出并重启,USB毗连将会断开,必要重新毗连。
- 通过TCP毗连指定的装备,下令格式如下:
- hdc tconn [IP]:[port] [-remove]
复制代码 参数:
参数参数说明[IP]:[port]装备的IP地点与端标语-remove【可选】断开指定装备的毗连返回值:
返回值说明Connect OK毗连成功[Info]Target is connected, repeat opration装备当前已毗连[Fail]Connect failed毗连失败使用方法:
- hdc tconn 192.168.0.1:8888
- hdc tconn 192.168.0.1:8888 -remove // 断开指定网络设备连接
复制代码 文件相关下令
下令说明file send localpath remotepath从本地发送文件至远端装备file recv remotepath localpath从远端装备发送文件至本地
- 从本地发送文件至远端装备,下令格式如下:
- hdc file send localpath remotepath
复制代码 参数:
参数名说明localpath本地待发送的文件路径remotepath长途待吸收的文件路径返回值:
文件发送成功,返回传输成功的结果信息。文件发送失败,返回传输失败的具体信息。
使用方法:
- hdc file send E:\example.txt /data/local/tmp/example.txt
复制代码 - 从远端装备发送文件至本地,下令格式如下:
- hdc file recv remotepath localpath
复制代码 参数:
参数名说明localpath本地待吸收的文件路径remotepath长途待发送的文件路径返回值:
文件吸收成功,返回传输成功的结果信息。文件吸收失败,返回传输失败的具体信息。
使用方法:
- hdc file recv /data/local/tmp/a.txt ./a.txt
复制代码 应用相关下令
下令说明install src安装指定的应用文件uninstall packageName卸载指定的应用包package包名
- 安装APP package,下令格式如下:
参数:
参数名说明src应用安装包的文件名-r替换已存在应用(.hap)-s安装一个共享包(.hsp)返回值:
返回值说明AppMod finish成功情况下返回安装信息和AppMod finish具体安装失败缘故原由失败情况下返回具体安装失败信息使用方法:
以安装example.hap包为例:
- hdc install E:\example.hap
复制代码 - 卸载应用,下令格式如下:
- hdc uninstall [-k|-s] packageName
复制代码 参数:
参数名说明packageName应用安装包-k保存/data和/cache目录-s卸载共享包返回值:
返回值说明AppMod finish成功情况下返回卸载信息和AppMod finish具体卸载失败缘故原由失败情况下返回具体卸载失败信息使用方法:
以卸载com.example.hello包为例:
- hdc uninstall com.example.hello
复制代码 调试相关下令
下令说明jpid显示可调试应用列表hilog [options]打印装备端的日志信息,options表示hilog支持的参数,可通过hdc hilog -h查阅支持的参数列表shell [command]交互下令,command表示必要执行的单次下令,不同类型或版本的系统支持的command下令有所差异,可以通过hdc shell ls /system/bin查阅支持的下令列表
- 抓取log信息,下令格式如下:
参数:
参数说明[options]hilog支持的参数,可通过hdc hilog -h查阅支持的参数列表返回值:
返回值说明返回具体信息抓取的日志信息使用方法:
- hdc hilog
- hdc shell "hilog -r" // 清理hilog缓存日志
复制代码 - 显示可调试应用列表,下令格式如下:
返回值:
返回值说明应用名列表可调试应用名列表[empty]无可调式应用使用方法:
- 交互下令,下令格式如下:
参数:
参数说明[command]调试下令行可用下令,具体可用下令help来获取全部下令提示返回值:
返回值说明交互下令返回内容返回内容详情请拜见其他交互下令返回内容/bin/sh: XXX : inaccessible or not found不支持的交互下令使用方法:
- hdc shell ps -ef
- hdc shell help -a // 查询全部可用命令
复制代码 常见场景
USB毗连场景
环境确认
确认项正常异常处理惩罚USB调试选项开启装备的USB调试模式如无法主动开启,请尝试重启装备USB数据毗连线使用USB数据毗连线毗连到调试PC的USB接口如使用低带宽、无数据通信功能的USB毗连线可能导致无法识别HDC装备,发起更换官方USB数据毗连线USB接口主板直出USB接口(台式机为后面板的USB接口,条记本为机身的USB接口)如使用转接头/拓展坞/台式机前面板USB接口,存在带宽低和USB同步异常等标题,会导致频繁断连,推荐使用直连方式毗连PC和装备hdc环境变量终端下令行输入hdc -h有回显帮助信息内容拜见环境准备章节驱动毗连HDC装备后,装备管理器通用串行总线装备存在装备"HDC Device"或"HDC Interface"致意装驱动 毗连步调
- hdc shell //USB直连需要确认设备非处在tcp连接模式,直接连接即可。
复制代码 TCP毗连场景
环境确认
确认项正常异常处理惩罚网络毗连PC、手机装备处于同一网络毗连同一WiFi或手机开启热门网络状态telnet IP:port正常,网速稳定请选择稳定的网络毗连方式hdc环境变量终端下令行输入hdc有回显帮助信息拜见环境准备章节 毗连步调
- PC通过USB毗连装备。
- 将装备通过USB模式切换至tcp模式,执行以下下令:
- hdc tmode port 8710 //port 后加指定端口号(可自行设置)
复制代码 - 通过tcp毗连装备(必要事先知道装备IP),执行以下下令:
IP可在手机检察装备侧的IP地点,端标语为上一步指定的,默认值为8710。
- 检察已毗连装备,执行以下下令:
返回值为IP:port形式即为毗连成功。
- (可选)TCP模式切换回USB模式,在已毗连TCP模式状态下,执行以下下令:
切换后将恢复USB模式。
长途毗连场景
长途毗连结构如图所示:
服务端配置
服务端通过USB毗连到对应的HDC装备后执行以下下令:
- hdc kill // 关闭本地hdc服务
- hdc -s IP:8710 -m // 启动网络转发的hdc服务
- // 其中IP为服务端自身的IP,windows可通过ipconfig查询,unix系统可通过ifconfig查询
- // 8710为默认端口号,也可设置为其他端口号如:18710
- // 启动后服务端将打印日志
复制代码 客户端毗连
客户端毗连必要确保可以连通服务端IP地点,满足前述条件后执行以下下令:
- hdc -s IP:8710 [command] // 其中IP为服务端IP,
- // command可以为任意hdc可用命令,例如list targets
复制代码 日志获取场景
server端日志
执行以下下令开启日志获取:
收集到的完备日志存放路径:
平台路径备注Windows%temp%\hdc.log 现实路径参考,现实使用请替换用户名变量
C:\Users\用户名\AppData\Local\Temp\hdc.log
Linux/tmp/hdc.log-MacOS$TMPDIR/hdc.log- 装备端日志
开启hilog日志工具,获取对应日志,下令如下:
- hdc shell hilog -w start // 开启hilog日志落盘
- hdc shell ls /data/log/hilog // 查看已落盘hilog日志
- hdc file recv /data/log/hilog // 获取hilog已落盘日志(包含内核日志)
复制代码 常见标题
装备无法识别
征象形貌
下令行执行hdc list targets下令后,返回结果为[empty]。
可通过以下方式排查。
- 情况一:检察装备管理是否显示HDC装备。
Windows环境:
在装备管理器>通用串行总线装备中是否显示HDC Device(单一端口装备)或HDC Interface(复合端口装备)。
Linux环境:
在下令行执行lsusb,在返回的内容中检察是否有HDC Device(单一端口装备)或HDC Interface(复合端口装备)。
MacOS环境:
使用系统信息或系统概述来检察USB装备,步调如下:
- 按住键盘上的Option键,点按菜单。
- 选取系统信息或系统概述。
- 在随后出现的窗口中,选择左边的USB。
- 在随后显示的装备树检察是否有HDC Device(单一端口装备)或HDC Interface(复合端口装备)。
可采取的办理方法
以上环境如没有显示HDC装备,则说明无法识别装备,可以根据现实场景尝试以下方法:
- 使用其他USB物理接口。
- 更换USB数据毗连线。
- 使用其他盘算机调试。
- 装备开启USB调试模式。
- 装备出现弹窗点击允许调试。
- 如可通过TCP模式毗连,可执行hdc tmode usb下令恢复USB毗连。
- 装备恢复出厂设置。
- 情况二:存在USB装备,但是驱动损坏,显示"HDC Device"⚠警告图标。
征象形貌:该标题常见于Windows环境,征象为装备管理器>通用串行总线装备中,HDC Device显示为黄标警告,且形貌信息为该装备无法正常工作。可尝试重新安装驱动办理,如重新安装驱动无法办理,可以尝试更换USB毗连数据线/拓展坞/USB接口。
重新安装驱动的方法
- 打开装备管理器,右键点击存在警告图标的HDC Device;
- 出现的菜单中点击更新驱动程序;
- 出现的提示窗口(第1/3个)中,选取欣赏我的电脑以查找驱动程序;
- 出现的提示窗口(第2/3个)中,选取让我从盘算机上的可用驱动程序列表中选取;
- 出现的提示窗口(第3/3个)中,取消勾选显示兼容硬件,选择厂商:WinUSB装备,选择型号:WinUSB装备,选择完成后点击下一步按钮。
- 情况三:毗连装备时出现[Fail]Failed to communicate with daemon。
征象形貌:下令行执行hdc相关下令,执行失败返回[Fail]Failed to communicate with daemon。
可能存在以下缘故原由,可参考排查:
- hdc或SDK版本与装备不匹配: 假如装备更新到最新版本,可更新hdc或SDK工具至最新版本。
- 端口被占用:
常见于hdc和hdc_std使用同一端口,同时运行时HDC_SERVER_PORT设置的端口相互冲突(未设置则使用默认端口8710,仍然会冲突),注意只运行此中一个。其他软件占用hdc默认端口也会导致该标题发生。
- 情况四:毗连装备时出现Connect server failed。
出现该征象,可能有如下缘故原由:
- 端口抢占
办理方法如下:
- 排查自带hdc的软件历程。
包括自带hdc的软件(DevEco Studio、DevEco Testing),如存在请关闭这些软件后再执行hdc相关下令。
- 查询HDC端口情况。
以设置的HDC_SERVER_PORT为8710端口为例,在不同平台查询下令如下:
Unix:
Windows:
- netstat -an |findstr 8710
复制代码 如存在抢占的软件,可以关闭该软件历程或者更换HDC_SERVER_PORT环境变量为其他端标语。
- 排查未关闭的其他版本hdc server
Windows:
使用任务管理器>具体信息查询hdc.exe历程,右键打开文件所在位置,核对位置是否为配置的环境变量中的hdc文件位置,假如不一致,可尝试结束hdc.exe历程(hdc kill或者任务管理器直接结束历程)并重新执行hdc下令。(关闭hdc server后执行hdc下令会重新启动hdc server)
Unix:
使用ps -ef |grep hdc查询hdc背景server历程,核对历程启动位置是否为配置的环境变量中的hdc文件位置,假如不一致,可尝试结束hdc历程(hdc kill或者kill -9 hdc历程的PID)并重新执行hdc下令。(关闭hdc server后执行hdc下令会重新启动hdc server)
- 注册表异常
办理方法:清算注册表,步调如下:
- 同时按下Win+R键,启动运行工具,输入栏输入regedit打开注册表。
- 注册表地点栏输入以下内容并按下回车,即可进入USB类装备驱动程序的注册表。
- 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{88bae032-5a81-49f0-bc3d-a4ff138216d6}
复制代码 - 找到UpperFilters键,右键修改编辑,备份并清空此中数值数据内容(如清空后无法办理标题可依照备份恢复)。
- 革新装备管理器/插拔USB接口/重启盘算机。
hdc无法运行
征象形貌
使用下令行执行hdc.exe/hdc 二进制文件无法运行。
可能缘故原由&办理方法
- 运行环境异常
Linux运行环境:发起使用Ubuntu18.04及以上64版本,如发送libc++.so引用错误请使用ldd/readelf等下令查抄库引用。
MacOS运行环境:发起使用MacOS 11及以上版本。
Windows运行环境:发起使用Windows10/Windows11 64位版本,如低版本缺失WinUSB库/驱动,请使用Zadig工具更新。对于符合装备,必要使用Zadig工具安装libusb-win32驱动。
- 运行方式不当:请使用下令行依照正确下令运行hdc工具,而非鼠标双击文件。
其他标题排查常用步调
- 下令行执行hdc list targets检察返回值。
- 检察装备管理是否有HDC Device。
- 执行hdc kill关闭server后,执行hdc -l5 start收集日志(hdc.log位于执行端TEMP目录,不同平台目录位置存在差异。
- 通过hdc.log日志定位相关标题。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |