HarmonyOS 5 高效使用命令:HDC 基本使用

大家好,我是不想掉发的鸿蒙开发工程师城中的雾。

上一期我们终于把那根该死的数据线接通了,终端里终于蹦出了设备的序列号。如果你还没连上,请出门左转看 [Vol.01 连接篇]。

连上设备后,下一件头秃的大事是什么?当然是把 App 装进去

你可能会说:"点一下 IDE 绿色的 Run 按钮不就行了吗?"

兄弟,。当你在做自动化测试时、当测试给你的手机里装了旧版本死活覆盖不上时、当你不想打开笨重的 IDE 只想快速验证一个 HAP 包时,HDC 才是你唯一的救命稻草。

本期文章,我们来聊聊如何掌握 App 的"生杀大权":安装、卸载、查户口、以及像黑客一样直接启动页面

一、安装:不仅是 install 这么简单

在 IDE 里,安装就是个进度条。但在命令行里,安装充满了"博弈"。

1. 标准姿势

最基础的命令,把电脑上的 HAP 包推到手机里并安装:

复制代码
hdc install 你的安装包路径.hap

如果你的路径里有空格(比如 C:\Program Files...),记得用英文双引号把路径包起来,否则 HDC 会以为你传了两个参数。

2. 覆盖安装:"-r" 的救赎

很多时候,你修改了代码重新打了个包,想装到手机上,结果报错:

Error: INSTALL_FAILED_VERSION_DOWNGRADE 或者 INSTALL_FAILED_ALREADY_EXISTS。

这时候,系统在傲娇地告诉你:"里面已经有一个同名的 App 了,且版本比你的高/一样,我不装!"

别急,加个 -r (replace),强制覆盖:

复制代码
hdc install -r 你的安装包路径.hap

这就好比对系统说:"少废话,听我的,覆盖它!"这是开发过程中最高频使用的参数,建议刻在 DNA 里。

二、查户口:手机里到底装了谁?

有时候你想卸载一个 App,手指悬在键盘上准备敲命令,突然愣住了:

"哎?我的包名(Bundle Name)是啥来着?"

是 com.example.demo?还是 com.test.final.v2?

别去翻 AppScope/app.json5 了,直接问手机。

1. 查看所有已安装的包

我们需要进入手机的 Shell 环境,问问包管理器(Bundle Manager, 简称 bm):

复制代码
hdc shell bm dump -a

这会列出手机里成百上千个包名,看得你密集恐惧症犯。

2. 精准打击:搜特定包名

如果你记得包名里包含 "demo",可以用 grep (Linux/Mac) 或 findstr (Windows) 过滤一下:

复制代码
# Windows
hdc shell bm dump -a | findstr demo

# Mac/Linux
hdc shell bm dump -a | grep demo

这样,你就能从茫茫包海中找到那个 com.chengwu.superdemo

三、卸载:让往事随风

找到了包名,卸载就只是一行代码的事。

注意:这里用的是包名 (Bundle Name),不是 HAP 文件名!

复制代码
hdc uninstall com.chengwu.superdemo

执行完这句,手机上那个图标就消失了,所有本地数据(数据库、缓存)也会被彻底清空。

如果我只想卸载 App,但想保留里面的数据库方便下次调试怎么办?

在 Android ADB 里有 -k (keep data) 参数,但在鸿蒙目前的 HDC 版本中,卸载通常就是"净身出户"。如果需要保留数据,建议直接用 -r 覆盖安装,而不是先卸载再安装。

四、黑科技:AA 启动 (Ability Assistant)

这是本期的压轴大招

很多时候,我们要测试 App 里的某一个特定页面(比如支付成功页、通知落地页)。

传统做法:打开 App -> 点登录 -> 点商品 -> 点购买 -> 终于到了支付页。

HDC 做法:直接空降!

鸿蒙系统里有一个 Ability Assistant (aa) 工具,专门用来调度 Ability。

1. 基础启动

直接拉起应用的主 Ability:

复制代码
hdc shell aa start -a EntryAbility -b com.chengwu.superdemo
  • -a: 这里的 EntryAbility 是你在代码里写的 UIAbility 类名。
  • -b: 包名。

2. 携带参数启动 (模拟路由跳转)

如果页面需要参数(比如 orderId=10086)怎么办?用 -s 传参:

复制代码
hdc shell aa start -a EntryAbility -b com.chengwu.superdemo -s orderId 10086

然后在你的 EntryAbility.tsonCreateonNewWant 生命周期里,就能通过 want.parameters 拿到这个参数。这对于测试通知栏点击跳转H5 唤起 App 等场景简直是神技。

五、小思考:hdc install 和 hdc shell bm install 有啥区别?

在深入使用后,你可能会发现网上有两种安装命令:

  1. hdc install xxx.hap
  2. hdc shell bm install -p /data/local/tmp/xxx.hap

这俩有啥区别?

其实,hdc install 是一个复合动作:它先把你电脑上的 hap 文件推送到手机的临时目录,然后再调用手机内部的 bm install 命令进行安装。

而 hdc shell bm install 是纯手机内部的命令,前提是你得先把文件推进去。

结论 :平时开发,用 hdc install 就够了,它帮咱们省了一步"推送文件"的麻烦。懒,才是第一生产力。

六、总结

今天我们掌握了 App 在鸿蒙设备上的生老病死:

  1. 生 (安装)hdc install -r,遇事不决加个 -r
  2. 老 (查找)hdc shell bm dump -a,查户口专用。
  3. 病 (调试)hdc shell aa start,精准空降指定页面。
  4. 死 (卸载)hdc uninstall,挥一挥衣袖不带走一片云彩。

下一期,我们将进入数据篇。App 崩溃了日志怎么抓?电脑里的文件怎么塞进模拟器里?

不想掉发的朋友们,请务必点赞支持一下下一期 [Vol.03 数据篇:文件传输与日志追踪]!

📚 充电时间

如果有想加入鸿蒙生态的大佬们,快来加入鸿蒙认证吧!初高级证书还没获取的,点这里:

🔗 HarmonyOS第一课:官方认证培训

如果您有任何疑问、对文章写的不满意、发现错误或者有更好的方法,欢迎在评论、私信中提出,非常感谢您的支持。

相关推荐
奋斗的小青年!!12 小时前
Flutter浮动按钮在OpenHarmony平台的实践经验
flutter·harmonyos·鸿蒙
Georgewu12 小时前
【HarmonyOS应用开发】鸿蒙应用实现横竖屏切换的两种方式以及注意事项
harmonyos
万少15 小时前
告别素材焦虑!用 AI 一键生成鸿蒙项目图片素材
ai编程·harmonyos
wszy180917 小时前
外部链接跳转:从 App 打开浏览器的正确姿势
java·javascript·react native·react.js·harmonyos
奋斗的小青年!!18 小时前
OpenHarmony Flutter 拖拽排序组件性能优化与跨平台适配指南
flutter·harmonyos·鸿蒙
sinat_3842410919 小时前
HarmonyOS应用开发的trae cn全面实战指南
华为·harmonyos
小雨下雨的雨20 小时前
Flutter 框架跨平台鸿蒙开发 —— Stack 控件之三维层叠艺术
flutter·华为·harmonyos
晚风(●•σ )20 小时前
【华为 ICT & HCIA & eNSP 习题汇总】——题目集28
网络·计算机网络·华为·路由器·ensp·交换机
行者9621 小时前
OpenHarmony平台Flutter手风琴菜单组件的跨平台适配实践
flutter·harmonyos·鸿蒙
Van_Moonlight21 小时前
RN for OpenHarmony 实战 TodoList 项目:已完成未完成数量显示
javascript·开源·harmonyos