行业知识
Openharmony hdc和adb指令对应
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)帮助命令,可以获取帮助信息
#hdc 指令hdc -h / hdc help #adb 指令adb / adb help#hdc 指令hdc -v / hdc version #adb 指令adb version
(2)获取设备列表(包括详细信息)
#hdc指令hdc list targetshdc list targets -v#adb 指令adb devicesadb devices -l
(3)指定对应的设备
其中deviceId已经在上一步中获取了
#hdc 指令hdc -t deviceId#adb 指令adb -s deviceId
(4)进入终端
#hdc 指令hdc -t deviceId shell#adb 指令adb -s deviceId shell
(5)查看版本
#hdc 指令hdc checkserver#adb 指令adb version
(6)挂载服务
#hdc 指令hdc target mount#adb 指令android没有挂载模式
参数
参数说明
无
无
返回值
返回值说明
①Mount finish
②返回具体信息
①成功情况下返回的信息
②失败情况下的具体信息
(7)设备重启
#hdc 指令hdc target boot#adb 指令adb reboot
(8)获取root权限
这边需要注意,android设备需要root后才能获取
#hdc 指令hdc smode #取消root授权hdc smode -r#adb 指令adb root
(9)网络连接
需要连接到对应的ip:port网络的时候,可以通过如下指令:
#hdc 指令hdc tconnect ip:port#hdc取消连接hdc tconnect ip:port -remove#adb 指令adb connect ip:port
其中,adb并没有提供断联的方法,只能通过adb kill-server重新启动adb连接
(10)端口映射
对应了将本地端口转发到远程端口以及从远程端口转发到本地端口的方法
#hdc 指令hdc fport localnode remotenodehdc rport remotenode localnodehdc fport ls #列出所有的前向转发hdc fport rm localnode remotenode #删除该端口的转发#adb 指令adb forward localnode remotenodeadb reverse remotenode localnodeadb forward --listadb forward --remove localnode #删除该端口转发
hdc命令说明
参数
参数说明
无
无
返回值
返回值说明
‘tcp:1234 tcp:1080’ [Forward]
正向端口转发任务
‘tcp:2080 tcp:2345’ [Reverse]
反向端口转发任务
使用方法:
hdc fport rm tcp:1234 tcp:1080
(11)文件传输
发送本地文件到具体的设备上,local和remote分别表示在本地的位置和远程的位置
#hdc 指令hdc file send local remote#adb 指令adb push local remote
使用方法(举例):
hdc file send E:\a.txt /data/local/tmp/a.txt
#hdc 指令hdc file recv [-a] remote local#如果加上了-a,则文件保留时间戳模式#adb 指令adb pull remote local
hdc file recv /data/local/tmp/a.txt ./a.txt
(12)安装应用
#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信息
#hdc 指令hdc hiloghdc shell hilog -r #清理缓存日志#adb 指令adb logcatadb logcat -c #清理缓存日志
(14)远程连接
这个方法貌似只有hdc有,adb得自己写个转发程序,将本地的5037转发到远程的5037。
#hdc需要先关闭本地的serverhdc kill#远程server上执行hdc -s :port -m#本地连接的client上执行hdc -s :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
-
- 连接步骤
- 使用场景