Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Muka Rust HDC

华为 HDC(HarmonyOS Device Connector) 主机工具的 Rust 重实现 —— 可替代官方 hdc 二进制程序,通过 USBTCP/Wi-Fi 连接 HarmonyOS / OpenHarmony 设备。

项目背景

HDC 的源码已在 OpenHarmony 开源(developtools_hdc 仓库)。Muka Rust HDC 基于该开源源码,使用 Rust 重实现了主机端(以及一个守护进程桩),采用完全相同的线上协议,因此可以:

  • 与真实的 HarmonyOS 设备通信(已在 VID 0x12D1 / PID 0x1101 设备上验证),
  • 作为 DevEco Studio 的后端服务(在 127.0.0.1:8710 上提供双协议服务),
  • 使用同一份代码在 Windows(MSVC)、Linux 和 macOS 上构建运行。

工作区结构

Crate 路径 作用
hdc hdc/ 主机工具:命令行客户端 + 后台服务(hdc -m
hdcd hdcd/ 守护进程桩(面向 OpenHarmony 目标;端到端测试使用 Linux 桩)
hdc-protocol crates/hdc-protocol/ 共享协议原语(数据包帧、序列化、加密)

基于 OpenHarmony 开源 HDC 源码整理的协议参考文档位于 docs/

  • docs/HDC_SERVER_SOCKET_PROTOCOL.md —— 客户端↔服务端 Socket 协议(含 DevEco Studio 握手)
  • docs/USB_TRANSPORT.md —— USB 传输说明(WinUSB quirks、端点、超时参数)

功能特性

  • 传输方式
    • USB(基于 rusb/libusb,Windows 上使用 WinUSB;接口声明后不可调用 set_alternate_setting / clear_halt,详见 docs/USB_TRANSPORT.md
    • TCP:hdc tconn <ip:port>;UDP 设备发现(hdc discover,端口 8710)
    • 可选 AES-128-GCM PSK 加密通道(OHOS_HDC_ENCRYPT_CHANNEL=1
  • 认证:RSA 三方握手(3072 位密钥,存于 %USERPROFILE%/.harmony/hdckey / ~/.harmony/hdckey),"始终信任"签名流程,心跳机制(HeartbeatMsg
  • Shell:单条命令(hdc shell <cmd>)与交互式 PTY(hdc shell
  • 文件传输hdc file send / hdc file recv,511 KB IO 缓冲
  • 应用管理hdc install(支持 .hap,以及 .app App Pack 自动解包)、hdc uninstall
  • 端口转发fport / rport(含 ls / rm),支持 tcp:localabstract:localreserved:localfilesystem:dev:jdwp:pidark:pid@package(DevEco Studio 的 ArkTS 调试)
  • 设备控制target mounttarget boottarget reconnectsmode
  • 诊断hilogbugreportjpid / track-jpid(JDWP)
  • Flashdupdateflasheraseformat(主机侧协议,已对桩守护进程验证)
  • 多设备-t <key> 目标选择(USB 序列号或 ip:port),仅一台设备时自动选择
  • DevEco Studio 兼容hdc -m 在同一端口同时支持 Rust 客户端协议与 IDE 的 48 字节 OHOS HDC 握手 + 长度前缀命令帧

构建

需要较新的 stable Rust 工具链;Windows 上使用 MSVC 工具链;libusb v1.0.27 通过 libusb1-sys 内置编译。

cargo build --release --bin hdc

hdcd 面向 OpenHarmony 目标,需要 OpenHarmony 工具链;不支持构建到 Android。

使用方法

先启动后台服务(客户端在需要时也会自动启动):

hdc -m                          # 服务模式(同时在 127.0.0.1:8710 为 DevEco Studio 提供服务)

常用命令:

hdc list targets -v             # 枚举设备
hdc shell echo hello            # 执行单条 shell 命令
hdc shell                       # 交互式 PTY shell
hdc file send test.txt /data/local/tmp/test.txt
hdc file recv /data/local/tmp/test.txt recv.txt
hdc install entry-default-signed.hap
hdc install myapp.app           # .app App Pack:自动解包并依次安装其中的 .hap
hdc uninstall com.example.myapp
hdc fport tcp:8080 tcp:8080     # 将主机 :8080 转发到设备 :8080
hdc fport ls / hdc fport rm tcp:8080
hdc rport tcp:9000 tcp:9000     # 反向转发
hdc tconn 192.168.1.10:5555     # 通过 TCP/Wi-Fi 连接设备
hdc discover                    # UDP 设备发现
hdc -t 192.168.1.10:5555 shell echo hello   # 指定目标设备
hdc hilog                       # 查看设备日志
hdc bugreport                   # 收集故障报告
hdc jpid                        # 列出可调试(JDWP)进程

Git Bash 路径注意事项(Windows)

Git Bash 会自动转换 Unix 风格的远程路径,需使用双斜杠禁用转换:

# 错误:/data/local/tmp 会被转换为 C:/Program Files/Git/data/local/tmp
hdc file send test.txt //data//local//tmp//test.txt

发布构建

单文件发行(每个产物是一个可执行文件,不捆绑任何私有 DLL / so):

产物 平台 / 架构 依赖说明
hdc-windows-x86_64.exe Windows x86_64 MSVC 构建,静态链接 CRT,直接运行
hdc-linux-x86_64 Linux x86_64 动态链接,要求 glibc ≥ 2.34
hdc-linux-x86_64-glibc2.24 Linux x86_64 动态链接,兼容老系统,要求 glibc ≥ 2.18
hdc-linux-x86_64-musl-static Linux x86_64 完全静态(musl),无任何动态依赖
hdc-linux-aarch64 Linux arm64 动态链接,要求 glibc ≥ 2.34
hdc-linux-aarch64-glibc2.24 Linux arm64 动态链接,兼容老系统,要求 glibc ≥ 2.18
hdc-linux-aarch64-musl-static Linux arm64 完全静态(musl),无任何动态依赖

构建:

# Windows(x86_64 MSVC,静态 CRT)
RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-pc-windows-msvc --bin hdc

# Linux 多平台(在 Linux / WSL 中执行;工具链要求见 scripts/build-release.sh 注释)
./scripts/build-release.sh x86_64-gnu aarch64-gnu x86_64-musl aarch64-musl x86_64-glibc2.24 aarch64-glibc2.24
# 产物输出到 target/dist/<name>/

验证:

./scripts/verify-release.sh target/dist   # 架构 / glibc 版本需求 / 静态链接检查
./scripts/smoke-test.sh                   # 冒烟测试(server 模式 + list targets)

本项目由 AI 辅助实现。

About

一个可替代官方实现的 Rust 版 HDC(HarmonyOS Device Connector)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages