hdw2
Version:
鸿蒙 hdc 调试工具
322 lines (237 loc) • 11.1 kB
Markdown
# HDW - HarmonyOS HDC 开发调试工具
HDW 是一款基于 Node.js 的 npm 包,集成了华为 HarmonyOS 的 HDC (HarmonyOS Device Connect) 工具,专为 HarmonyOS Next 应用开发设计。它提供了更友好的命令行接口和额外的实用功能,简化了 HarmonyOS 开发流程中的常见任务。
作为华为 HDC 工具的高级封装,HDW 不仅保留了 HDC 的全部功能,还增加了许多便捷特性,让开发者可以更高效地进行 HarmonyOS 应用开发和调试。
## 🌟 特色功能
1. **内置华为 HDC 工具** - 无需从华为官网单独下载 HDC 命令行工具,自动适配各操作系统平台
2. **Webview 一键调试** - 避免华为官方提供的复杂调试步骤,快速建立远程调试连接
3. **常用功能封装** - 封装 HDC 的常用功能:设备列表、HAP 安装、文件推送/拉取等
4. **端口映射管理** - 提供端口映射列表打印、清除等功能,方便调试多个 WebView 实例
5. **无缝命令映射** - 通过 `hdw hdc ...` 可以使用 HDC 的所有原生命令
6. **全平台支持** - 支持 Windows、macOS (X86/ARM)、Linux 多平台,内置各平台专用工具链
7. **TypeScript 重构** - 使用 TypeScript 完全重写,提供更好的类型安全和开发体验
8. **现代化构建** - 采用 tsup 构建工具,优化代码架构,提高可维护性
## 📦 安装
```bash
# 使用 npm 全局安装
npm install hdw2 -g
# 或使用 yarn 全局安装
yarn global add hdw2
# 或使用 pnpm 全局安装
pnpm install hdw2 -g
```
> **注意**: 最低 Node.js 版本要求为 18+
## ✅ 验证安装
安装完成后,可以通过以下命令验证 HDW 是否正确安装:
```bash
# 检查版本
hdw --version
# 查看所有可用命令
hdw --help
```
如果命令成功执行并返回版本信息或帮助信息,则表示 HDW 已正确安装。
## 🚀 快速开始
安装完成后,您可以直接使用 `hdw` 命令:
```bash
# 查看所有可用命令
hdw --help
# 输出:
Usage: hdw <命令> [选项]
#
Options:
-v --version 输出当前版本号
-h, --help 显示帮助信息
#
Commands:
devices [options] 检查当前环境,获取设备列表
use [options] 选择默认设备或设置设备备注
check 检查当前环境是否可进行webview调试
list 查询当前webview调试端口映射列表
clear 清空当前webview调试端口映射
debug [options] 开始webview调试
push [options] [extArgs...] 推送文件到设备,默认推送路径为/data/local/tmp/
pull [options] [extArgs...] 拉取文件到本地,默认拉取路径为/data/local/tmp/
ls [options] [extArgs...] 获取手机端指定目录文件列表,默认为/data/local/tmp/
install [options] [extArgs...] 应用安装,传参同hdc install,支持zip、hap格式
set <key> [values...] Hdc的常用设置
get <name> 获取Hdc的常用数据
hdc [options] [extArgs...] 执行hdc命令
rm [options] [extArgs...] 删除设备端指定文件或目录,默认为/data/local/tmp/,输入*删除指定目录下所有文件
send [options] [extArgs...] 推送小程序、基础库、模板等到设备端应用
config <action> [values...] hdw配置设置、获取、删除等操作
help [命令] 显示命令帮助信息
#
官方参考文档:
https://developer.huawei.com/consumer/cn/develop/
```
## 🛠️ 功能详解
### 设备管理
```bash
# 列出连接的所有设备
hdw devices
# 列出所有设备(包括历史设备)
hdw devices -a
# 选择默认设备(交互式选择)
hdw use
# 选择默认设备并显示历史设备
hdw use -a
# 为指定设备设置备注
hdw use -s <deviceId> <nickname>
# 获取设备UDID
hdw get udid
# 移除设备记录
hdw use -r <deviceId>
# 清除默认设备选择
hdw use -c
# 清除所有设备记录
hdw use -C
```
`use` 命令选项说明:
- `-a, --all`: 显示历史设备
- `-s, --set <deviceId nickname>`: 为指定设备设置备注
- `-r, --remove <deviceId>`: 移除指定设备记录
- `-c, --clear`: 清除默认设备选择
- `-C, --clear-all`: 清除所有设备记录
### 应用安装
HDW 2.0 特色功能之一是支持 ZIP 包直接安装。在鸿蒙项目中,当构建产物包含 HSP 和 HAP 文件时,单独安装 HAP 包是无法正常运行的。此时,您可以先将 HSP 文件和 HAP 文件压缩成 ZIP 包,然后使用 `hdw install ./xxxx.zip` 命令,一键将 HSP 和 HAP 同时安装到真机设备中。
```bash
# 安装单个 HAP 包到设备
hdw install path/to/your/app-installer-default-unsigned.hap
# 安装包含 HSP 和 HAP 的 ZIP 包(HDW 2.0 特色功能)
# 注意:当项目构建产物包含 HSP 和 HAP 时,需要将它们打包成 ZIP 文件进行安装
hdw install path/to/your/bundle.zip
# 例如,如果您的项目构建产物包含:
# - module-name.hap
# - module-name.hsp
# 可以将它们压缩成 bundle.zip,然后使用以下命令安装:
hdw install ./bundle.zip
```
这种 ZIP 包安装方式特别适用于 HarmonyOS 的模块化开发场景,能够一次性安装多个组件,确保应用正常运行。
### 文件传输
HDW 提供了便捷的文件传输功能,支持推送文件到设备、从设备拉取文件、列出设备文件和删除设备文件。
```bash
# 推送文件到设备指定目录
hdw push local_file_path /data/local/tmp/remote_directory/
# 推送文件到设备的Download目录(使用-d参数,此时可省略远端路径)
hdw push -d local_file_path
# 推送文件到设备的分享目录(使用-s参数,此时可省略远端路径)
hdw push -s local_file_path
# 从设备Download目录拉取文件文件到当前目录(使用-d参数,此时可省略远端路径)
hdw pull -d remote_file_name
# 从设备分享目录拉取文件到当前目录(使用-s参数,此时可省略远端路径)
hdw pull -s remote_file_name
# 从设备拉取文件到本地
hdw pull /data/local/tmp/remote_file local_file_path
# 列出设备指定目录内容
hdw ls /data/local/tmp/
# 列出设备Download目录内容(使用-d参数,此时可省略远端路径)
hdw ls -d
# 列出设备分享目录内容(使用-s参数,此时可省略远端路径)
hdw ls -s
# 删除设备上的文件或目录
hdw rm /data/local/tmp/file_or_directory
# 删除设备Download目录下的所有文件(使用-d参数,此时可省略远端路径)
hdw rm * -d
# 删除设备分享目录下的文件(使用-s参数,此时可省略远端路径)
hdw rm -s filename
```
HDW 的文件传输功能支持便捷的 `-d` 和 `-s` 参数:
- `-d` 或 `--download`: 操作设备端的 Download 目录
- `-s` 或 `--share`: 操作设备端的分享目录(华为分享功能相关目录)
参数说明:
- `local_file_path`: 本地文件路径,支持相对路径
- `remote_file_name`: 远端路径,必须是全路径;但在使用 `-d` 或 `-s` 参数时可省略
- 当使用 `-d` 或 `-s` 参数时,会自动定位到相应的预设目录,无需指定完整路径
### WebView 调试
```bash
# 检查当前环境是否支持 WebView 调试
hdw check
# 启动 WebView 调试并建立端口映射
hdw debug
# 列出当前的调试端口映射
hdw list
# 清除当前的调试端口映射
hdw clear
```
### 配置管理
```bash
# 设置配置项
hdw config set key value
# 获取配置项值
hdw config get key
# 列出所有配置项
hdw config list
# 删除配置项
hdw config del key
```
### 直接使用 HDC
如果 HDW 不支持特定的 HDC 功能,可以直接使用原生 HDC 命令:
```bash
# 直接执行 HDC 命令
hdw hdc list targets
# 在设备上执行 shell 命令
hdw hdc shell bm dumpsys bundle
```
### 系统设置
```bash
# 设置 HDC 为 TCP 模式
hdw set tcp 192.168.1.100:12345
# 设置 HDC 为 USB 模式
hdw set usb
```
## 🔧 支持的命令详情
| 命令 | 描述 |
|---|---|
| `devices [options]` | 检查当前环境,获取设备列表,支持 `-a` 选项显示所有设备 |
| `use [options]` | 选择默认设备或设置设备备注,支持 `-a`、`-s`、`-r`、`-c`、`-C` 选项 |
| `check` | 检查当前环境是否可进行 WebView 调试 |
| `list` | 查询当前 WebView 调试端口映射列表 |
| `clear` | 清空当前 WebView 调试端口映射 |
| `debug [options]` | 开始 WebView 调试 |
| `push [options] [extArgs...]` | 推送文件到设备,默认推送路径为 /data/local/tmp/ |
| `pull [options] [extArgs...]` | 拉取文件到本地,默认拉取路径为 /data/local/tmp/ |
| `ls [options] [extArgs...]` | 获取设备指定目录文件列表,默认为 /data/local/tmp/ |
| `install [extArgs...]` | 应用安装,传参同 hdc install,支持 zip、hap 格式 |
| `set <key> [values...]` | HDC 的常用设置 |
| `get <name>` | 获取 HDC 常用数据 |
| `hdc [options] [extArgs...]` | 执行 hdc 命令 |
| `rm [options] [extArgs...]` | 删除设备端指定文件或目录,默认为 /data/local/tmp/,输入 * 删除指定目录下所有文件 |
| `send [options] [extArgs...]` | 推送小程序、基础库、模板等到设备端应用 |
| `config <action> [values...]` | HDW 配置设置、获取、删除等操作 |
## ⚠️ 常见问题与故障排除
### 1. 设备未识别
- 确认鸿蒙手机是否开启了开发者模式
- 确保设备已开启USB调试模式
- 检查USB线缆连接是否正常
- 尝试重新插拔USB线缆
### 2. 端口占用错误
- 如果遇到端口占用错误,请使用 `hdw clear` 清除当前端口映射
- 或使用 `hdw list` 查看当前映射,手动终止不需要的进程
### 3. 安装应用失败
- 确保安装的应用包路径正确
- 检查设备是否有足够的存储空间
- 对于包含HSP和HAP的项目,推荐打包为ZIP格式后安装
### 4. WebView调试无法启动
- 确保设备上运行的应用支持WebView调试
- 检查设备网络连接是否正常
- 使用 `hdw check` 验证环境是否支持WebView调试
## 🛡️ 环境要求
- Node.js 18 或更高版本(HDW 是基于 Node.js 的 npm 包)
- HarmonyOS 开发设备(模拟器或真机)
- 正确的 USB 调试设置(用于物理设备)
## 📄 许可证
MIT License
## 📚 相关资源
- [HarmonyOS 开发者官网](https://developer.huawei.com/consumer/cn/)
- [HDC 工具文档](https://developer.huawei.com/consumer/cn/develop/)
## 📝 版本历史
### v2.3.1
- 新增 `use` 命令,支持选择默认设备和设置设备备注
- 新增设备管理功能,支持显示历史设备
- 优化设备选择交互体验
### v2.0
- 使用 TypeScript 完全重写,提供更好的类型安全和开发体验
- 支持多平台(Windows、macOS X86/ARM、Linux),内置各平台专用工具链
- 采用现代化的构建工具链(tsup)
- 优化代码架构,提高可维护性
- 支持 Node.js 18+
- 更完善的错误处理和日志系统