hdassistant:基于 HarmonyOS 生态的鸿蒙设备调试与 HAP 安装项目

用于在 HarmonyOS 电脑上连接管理手机、平板和电脑,查看日志文件并签名安装任意 HAP。项目内置 hdc,支持 USB/无线设备管理、应用与沙箱操作、证书申请及命令行工具 hda。

分支2Tags0
文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前

鸿蒙调试助手(HDA)

在 HarmonyOS 电脑上管理手机、平板和这台电脑本身的调试工具:连接设备、管理应用、浏览文件、看日志、截图,以及签名并安装任意 HAP 或应用包(.app)。

功能

  • 设备连接:USB 直连(内置官方 hdc + libusb),或无线调试(IP:端口);同一台设备的 USB 与无线连接自动合并,USB 在线时优先走 USB。
  • 概览:型号、系统版本、存储与内存、屏幕预览,重启 / 关机。
  • 应用:应用列表与详情(版本、权限说明、签名类型、运行状态),启动、停止、清缓存、卸载;调试应用可浏览、导出、导入沙箱数据。
  • 文件 / 日志 / 截图:设备文件浏览与收发,hilog 实时查看与导出,截图。
  • 安装应用包:双击 .hap 或 .app 即可签名安装到本机,或安装到所选设备。.app 是含多个模块的应用包:拆出各模块分别签名,按原 pack.info 回包后再对整个 APP 签一次,只装支持目标设备类型的模块(含应用内共享库)。带 hnp(命令行工具)的 HAP 也支持,会连同其中的工具一起安装。安装前列出权限与携带的 hnp。签名材料用华为开发者账号自动申请调试证书与 Profile,并在本地复用;签名页可管理云端证书与已登记设备。
  • 托盘:显示 hdc 状态,选择双击 .hap / .app 时的安装目标。

系统要求

  • HarmonyOS 电脑(PC / 2in1),API 26 及以上,已开启开发者模式。
  • 华为开发者账号(用于申请调试证书)。
  • 管理手机 / 平板时,设备需开启开发者模式与 USB 调试或无线调试。

安装

在电脑的终端里运行:

wget -O - "https://api.gitcode.com/api/v5/repos/autoend/hdassistant/raw/install.sh?ref=dist" | sh

脚本会下载命令行工具 hda,登录华为开发者账号(自动打开浏览器),用一次性调试证书为鸿蒙调试助手签名,再用系统的 bm 安装;临时证书与工具在结束后删除。

如果这台电脑还没有登记到开发者账号,安装过程中会提示打开「设置 > 系统 > 开发者选项 > 无线调试」并输入显示的端口,登记一次即可,之后不再询问。

命令行工具 hda

hda 为任意 HAP 或 .app 签名并安装。安装鸿蒙调试助手后,hda 随应用以 hnp 形式安装到 /data/service/hnp/bin,终端里直接可用。鸿蒙调试助手在运行(包括最小化到托盘)时,hda 使用应用里的签名材料与本机 UDID,不需要再登录。

单独获取(hda 是入口脚本,hda-cli-aarch64 是它调用的程序,两者放在同一目录):

mkdir -p ~/hda && cd ~/hda
wget -O hda "https://api.gitcode.com/api/v5/repos/autoend/hdassistant/raw/hda?ref=dist"
wget -O hda-cli-aarch64 "https://api.gitcode.com/api/v5/repos/autoend/hdassistant/raw/hda-cli-aarch64?ref=dist"
chmod 755 hda hda-cli-aarch64

用法:

hda install <hap|app|url>                  # 签名并安装到这台电脑
hda install <hap|app> --target <ip:端口>   # 经 hdc 安装到其他设备
hda install <hap|app> --account            # 不用应用的签名材料,登录账号并用临时证书签名(可换账号)
hda install <hap|app> --keep-signed <path> # 只签名,签名后的包(.hap / .app)保存到 path
hda certs [--delete <id|debug>]            # 列出 / 删除账号的云端证书(调试证书有数量上限)

其他选项:--udid <udid>(为指定设备签名)、--acl <权限>(额外加入 ACL)、--no-browser、-v。

.app 会拆出各模块分别签名,再按原 pack.info 回包并对整个 APP 签一次,最后只交付一个签名后的 .app(本机与远程都只推这一个包)。APP 包自身不过一次签名会报 9568448,模块没签名则报 9568320。只支持应用内共享库(HSP),应用间 HSP 不支持。

bm 只能由终端的 shell 直接调用(经自签名程序派生就会失败),所以安装由 hda 脚本调用 bm,不要直接用 hda-cli-aarch64 安装到本机。

从源码构建

需要 HarmonyOS 电脑上的 DevEco 命令行工具(含 OpenHarmony NDK、hvigor)以及 perl、make、python3。

scripts/build-openssl.sh   # 一次:生成 Native/third_party/openssl 下的静态库与头文件
scripts/build-hda-cli.sh   # 构建命令行工具(HAP 里的 hnp 要用到),产物在 build/hda-cli
hvigorw assembleHap --mode module -p product=default   # 构建 HAP(未签名,自动注入 hnp/arm64-v8a/hda.hnp)
HDA_HAP=entry/build/default/outputs/default/entry-default-unsigned.hap scripts/build-hda-cli.sh   # 整理发布文件到 build/hda-cli/dist

build-openssl.sh 会关掉 OpenSSL 的 SVE 检测:HarmonyOS 电脑上它会误判 CPU 支持 SVE,执行时非法指令崩溃。

构建出的 HAP 未签名,用 build/hda-cli/dist/hda install entry/build/default/outputs/default/entry-default-unsigned.hap 签名安装。

鸿蒙调试助手申请了几项仅对调试工具开放的受限权限(如 ohos.permission.ALLOW_USE_BM、ohos.permission.READ_WRITE_USB_DEV),hda 会自动把它们写进调试 Profile 的 ACL。

目录

目录 内容
entry/ 应用(ArkTS 界面与服务,src/main/cpp 为 NAPI 与 hdc 子进程)
Native/hda_core 共享 C++ 核心:开发者账号登录、AGC 接口、HAP 解析
Native/hda_cli 命令行工具
Native/hdc 官方 hdc 主机端(嵌入版)
Native/third_party 第三方依赖,见其中的 README
scripts/ 安装、构建脚本

第三方组件

hdc(Apache-2.0)、libusb(LGPL-2.1,以独立动态库提供)、OpenSSL(Apache-2.0)、hapsigntool(Apache-2.0)、securec(MulanPSL-2.0)、LZ4(BSD-2-Clause)、bzip2。详见 Native/third_party/README.md。

许可证

Apache-2.0,见 LICENSE。第三方组件各自遵循其许可证。

项目介绍

用于在 HarmonyOS 电脑上连接管理手机、平板和电脑,查看日志文件并签名安装任意 HAP。项目内置 hdc,支持 USB/无线设备管理、应用与沙箱操作、证书申请及命令行工具 hda。

定制我的领域