HarmonyOS 5 高效使用命令:HDC 文件与日志调试
本文介绍了鸿蒙开发中HDC工具的文件传输和日志调试技巧。主要内容包括:1)使用file send/recv命令快速传输文件到设备或导出数据;2)利用hilog命令抓取和过滤系统日志,支持按标签、等级筛选及日志存储;3)进阶诊断工具如截图命令和端口转发功能。文章还提供了常用命令速查表,帮助开发者提升调试效率。这些技能是从初级开发进阶为调试高手的必备工具。
大家好,我是不想掉发的鸿蒙开发工程师城中的雾。
前两期我们搞定了设备连接和应用安装。现在,App 已经在手机里跑起来了。但是,程序的世界哪有那么顺利?App 闪退了、数据不对了、界面卡死了……这时候,光盯着屏幕看是没用的。我们可以使用命令,查看设备内部的文件和日志,找出 Bug ,本期,我们将学习 HDC 的 文件传输 和 日志调试 技能,这是从“初级码农”进阶到“调试大师”的必经之路。
1. 文件传输
开发过程中,我们经常需要把测试数据塞进手机,或者把手机里的数据库导出来分析。虽然 IDE 的 Device File Explorer 也能做,但它经常卡顿,而且在批量操作时显得笨拙。
HDC 的 file 命令非常简单粗暴,就是快。
发送文件 (Send)
将电脑上的文件推送到手机里。
场景:推送测试图片、配置文件、SSL 证书等。
# 格式:hdc file send [本地路径] [设备路径]
hdc file send ./test_image.jpg /data/local/tmp/
经验之谈:
为什么是 /data/local/tmp/?
因为在非 Root 的真机上,大多数目录我们是没有写入权限的。而 /data/local/tmp/ 是个神奇的公共区域,谁都能写,非常适合作为中转站。
接收文件 (Recv)
将手机里的文件拉取到电脑上。
场景:导出应用的 SQLite 数据库、崩溃日志文件、截图等。
# 格式:hdc file recv [设备路径] [本地路径]
hdc file recv /data/local/tmp/crash_log.txt ./logs/
高阶技巧:文件夹传输
HDC 支持直接传输整个文件夹,不需要压缩包!
# 把整个 dist 文件夹推送到手机
hdc file send ./dist/ /data/local/tmp/
2. 日志调试: 命令调用HiLog
如果你问我,除了 IDE 的 Debug 模式,什么工具最重要?那绝对是 HiLog。它是鸿蒙系统的日志系统,记录了系统和应用发生的一切。
在命令行看日志,比 IDE 的 Logcat 更硬核,但也更灵活(尤其是在服务器环境或自动化脚本中)。
基础抓取
直接打印所有日志(慎用,屏幕会疯狂滚动):
hdc hilog
🛑 如何停止输出?
日志一旦开始就会像瀑布一样刷屏。想要停下来,请在终端窗口中按下键盘组合键:
Ctrl + C
这会发送中断信号,立即停止日志抓取。
过滤日志:找到你关心的那一行
海量日志中 99% 都是废话。我们需要参数来过滤。
按标签 (Tag) 过滤 (-T)
这是最常用的。假设你的代码里定义了 Tag 为 MyPage。
# 仅显示 Tag 为 MyPage 的日志
hdc hilog -T MyPage
按等级 (Level) 过滤 (-L)
日志等级从低到高:D(Debug) < I(Info) < W(Warn) < E(Error) < F(Fatal)。
# 仅仅想看报错?
hdc hilog -L E
常用
查看 MyPage 标签下 Info 及以上级别的日志:
hdc hilog -T MyPage -L I
格式化与存储
有时候日志太长,终端看不过来,或者你想把日志发给同事甩锅。
保存到文件:
利用系统管道符 >。
hdc hilog > ./bug_report.log
简单文本搜索:
配合 grep (Linux/Mac) 或 findstr (Windows) 使用,比 HDC 自带的过滤器更强大。
# Linux / MacOS
hdc hilog | grep "NullPointerException"
# Windows (CMD)
hdc hilog | findstr "NullPointerException"
清空缓冲区
开始新一轮测试前,最好把之前的旧日志清掉,避免干扰。
hdc shell hilog -r
3. 进阶诊断:Shell 下的秘密武器
HDC 的 shell 命令让我们能直接进入设备的 Linux 环境。这里有几个命令,是排查疑难杂症的利器。
截图 (Snapshot)
不需要手机截屏再导出来,一行命令搞定。
基础用法:
# 1. 截图并保存到手机临时目录
hdc shell snapshot_display -f /data/local/tmp/snap.jpeg
# 2. 拉取到电脑
hdc file recv /data/local/tmp/snap.jpeg ./
懒人脚本:一键截图到桌面 (Windows)
每次敲两行命令太麻烦?创建一个 snap.bat 文件,双击即可将截图自动保存到桌面的 Snapshot 文件夹,并以时间戳命名。
@echo off
setlocal
echo ==========================================
echo HarmonyOS One-Click Snapshot
echo ==========================================
:: 1. 设置保存路径为桌面 Snapshot 文件夹
set "SAVE_DIR=%USERPROFILE%\Desktop\Snapshot"
if not exist "%SAVE_DIR%" mkdir "%SAVE_DIR%"
:: 2. 生成时间戳文件名 (格式:snap_YYYYMMDD_HHMMSS.jpeg)
set "FILENAME=snap_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.jpeg"
set "FILENAME=%FILENAME: =0%"
:: 3. 执行截图 -> 拉取 -> 清理
echo [1/3] Taking snapshot on device...
hdc shell snapshot_display -f /data/local/tmp/%FILENAME%
echo [2/3] Pulling to PC...
hdc file recv /data/local/tmp/%FILENAME% "%SAVE_DIR%\"
echo [3/3] Cleaning up temp file...
hdc shell rm /data/local/tmp/%FILENAME%
echo.
echo [Success] Saved to: %SAVE_DIR%\%FILENAME%
timeout /t 3 >nul
4. 端口转发:连接本地服务 (fport)
这个功能主要用于 Web 调试 或 Socket 通信。
比如,你在 Chrome 浏览器中调试手机 WebView 内容(chrome://inspect),或者手机 App 需要连接电脑上的本地服务器。
# 格式:hdc fport [PC端口] [设备端口]
hdc fport tcp:8080 tcp:8080
- 查看转发列表:
hdc fport ls - 移除转发:
hdc fport rm tcp:8080 tcp:8080
总结:调试命令速查表
| 场景 | 命令 | 备注 |
|---|---|---|
| 传文件进手机 | hdc file send [本地] [远端] |
推荐传到 /data/local/tmp |
| 传文件回电脑 | hdc file recv [远端] [本地] |
支持文件夹 |
| 看日志 | hdc hilog |
配合 grep 更好用 |
| 停止日志 | Ctrl + C | 终止刷屏 |
| 过滤日志 | hdc hilog -T [Tag] -L [Level] |
常用组合 |
| 清日志 | hdc shell hilog -r |
测试前必做 |
| 查当前页面 | `hdc shell "dumpsys … | grep …"` |
| 截图 | hdc shell snapshot_display ... |
快速取证 |
经过这三期的洗礼,你已经掌握了 连接 -> 安装 -> 调试 的全套连招。大部分的日常开发工作,你现在都可以完全脱离鼠标,用键盘噼里啪啦地完成了。
下一期(最终章):使用hdc搭建应用部署脚本
📚 充电时间
如果有想加入鸿蒙生态的大佬们,快来加入鸿蒙认证吧!初高级证书还没获取的,点这里:
如果您有任何疑问、对文章写的不满意、发现错误或者有更好的方法,欢迎在评论、私信中提出,非常感谢您的支持。
更多推荐


所有评论(0)