hdc使用指导
1. 简介
什么是hdc
hdc(OpenHarmony Device Connector)是 OpenHarmony 为开发人员提供的用于调试的命令行工具,通过该工具可以在Windows/Linux/MacOS等系统上与开发机或者模拟器进行交互。
什么是adb
ADB(Android Debug Bridge)是一个命令行工具,用于与Android设备进行通信。它允许用户通过各种命令来管理设备上的应用程序、调试应用程序、传输文件、查看日志以及执行其他系统级别的操作。ADB是Android SDK的一部分,通常用于开发者和测试工程师在开发、测试和调试Android应用程序时与设备进行交互。
2. 工具获取方式
hdc 工具获取方式:
通过OpenHarmony sdk获取,hdc在sdk的toolchains目录下。
使用举例:
下面以windows侧使用方式举例:
获取windows的sdk,将hdc.exe放到磁盘某个位置即可使用,最好写到path中,这样可以直接命令行使用。
注意事项
- 使用hdc,如果出现异常,可以尝试通过hdc kill命令杀掉hdc服务,或者通过hdc start -r命令重启服务进程进行解决。
- 如果出现hdc list targets获取不到设备信息,通过任务管理器查看是否有hdc进程存在,如果进程存在,可以通过杀掉该进程进行解决。
adb 工具获取方式:
adb
包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,该管理器会将其安装在 android_sdk/platform-tools/
下。如果您需要独立的 Android SDK 平台工具软件包,请点击此处进行下载。
使用举例:
下面以windows侧使用方式举例:
将adb.exe放到磁盘某个位置即可使用,最好写到path中,这样可以直接命令行使用。
注意事项
- 使用adb,如果出现异常,可以尝试通过adb kill-server命令杀掉adb服务,或者通过adb start -server 命令重启服务进程进行解决。
- 如果出现adb devices获取不到设备信息,通过任务管理器查看是否有hdc进程存在,如果进程存在,可以通过杀掉该进程进行解决。
3. 命令对照
(1)帮助命令,可以获取帮助信息
bash
#hdc 指令
hdc -h / hdc help
#adb 指令
adb / adb help
#hdc 指令
hdc -v / hdc version
#adb 指令
adb version
(2)获取设备列表(包括详细信息)
bash
#hdc指令
hdc list targets
hdc list targets -v
#adb 指令
adb devices
adb devices -l
(3)指定对应的设备
其中deviceId已经在上一步中获取了
bash
#hdc 指令
hdc -t deviceId
#adb 指令
adb -s deviceId
(4)进入终端
bash
#hdc 指令
hdc -t deviceId shell
#adb 指令
adb -s deviceId shell
(5)查看版本
bash
#hdc 指令
hdc checkserver
#adb 指令
adb version
(6)挂载服务
bash
#hdc 指令
hdc target mount
#adb 指令
android没有挂载模式
|-----------------------|-------------------------|
| 参数 | 参数说明 |
| 无 | 无 |
| 返回值 | 返回值说明 |
| ①Mount finish ②返回具体信息 | ①成功情况下返回的信息 ②失败情况下的具体信息 |
(7)设备重启
bash
#hdc 指令
hdc target boot
#adb 指令
adb reboot
(8)获取root权限
这边需要注意,android设备需要root后才能获取
bash
#hdc 指令
hdc smode
#取消root授权
hdc smode -r
#adb 指令
adb root
(9)网络连接
需要连接到对应的ip:port网络的时候,可以通过如下指令:
bash
#hdc 指令
hdc tconnect ip:port
#hdc取消连接
hdc tconnect ip:port -remove
#adb 指令
adb connect ip:port
其中,adb并没有提供断联的方法,只能通过adb kill-server重新启动adb连接
(10)端口映射
对应了将本地端口转发到远程端口以及从远程端口转发到本地端口的方法
bash
#hdc 指令
hdc fport localnode remotenode
hdc rport remotenode localnode
hdc fport ls #列出所有的前向转发
hdc fport rm localnode remotenode #删除该端口的转发
#adb 指令
adb forward localnode remotenode
adb reverse remotenode localnode
adb forward --list
adb forward --remove localnode #删除该端口转发
hdc命令说明
|---------------------------------|----------|
| 参数 | 参数说明 |
| 无 | 无 |
| 返回值 | 返回值说明 |
| 'tcp:1234 tcp:1080' [Forward] | 正向端口转发任务 |
| 'tcp:2080 tcp:2345' [Reverse] | 反向端口转发任务 |
使用方法:
hdc fport rm tcp:1234 tcp:1080
(11)文件传输
发送本地文件到具体的设备上,local和remote分别表示在本地的位置和远程的位置
bash
#hdc 指令
hdc file send local remote
#adb 指令
adb push local remote
使用方法(举例):
hdc file send E:\a.txt /data/local/tmp/a.txt
bash
#hdc 指令
hdc file recv [-a] remote local
#如果加上了-a,则文件保留时间戳模式
#adb 指令
adb pull remote local
hdc file recv /data/local/tmp/a.txt ./a.txt
(12)安装应用
bash
#hdc 指令
hdc install [-r/-d/-g] 对应的hap包
hdc uninstall [-k] 对应的hap包
#adb 指令
adb install 对应的apk包
adb uninstall 包名
安装OpenHarmony应用参数
|------------|------------------------|
| 参数 | 参数说明 |
| -r | 替换已存在应用 |
| -d | 允许降级安装 |
| -g | 应用动态授权 |
| 返回值 | 返回值说明 |
| ①返回具体信息 ②无 | ①失败情况下的具体信息 ②成功情况下无返回值 |
卸载OpenHarmony应用参数
|------------|------------------------|
| 参数 | 参数说明 |
| -k | 保留/data/cache |
| 返回值 | 返回值说明 |
| ①返回具体信息 ②无 | ①失败情况下的具体信息 ②成功情况下无返回值 |
使用方法(举例):
hdc uninstall package
(13)获取Log信息
bash
#hdc 指令
hdc hilog
hdc shell hilog -r #清理缓存日志
#adb 指令
adb logcat
adb logcat -c #清理缓存日志
(14)远程连接
这个方法貌似只有hdc有,adb得自己写个转发程序,将本地的5037转发到远程的5037。
bash
#hdc需要先关闭本地的server
hdc kill
#远程server上执行
hdc -s <server的ip>:port -m
#本地连接的client上执行
hdc -s <server的ip>:port 具体指令
- 使用场景
本地client指定远程server上的设备,执行hdc命令。
- 连接步骤
-
- 关闭本地sever:
hdc kill
-
- -s [ip:]port -m
hdc -s severIP:8710 -m
-
- -s [ip:]port command
hdc -s severIP:8710 list targets