在Linux下使用Termony搭建HNP自验证环境全指南
在开始实战前,我们先对齐一下概念,防止小白晕车。Termony:你可以把它理解为鸿蒙版的 Termux 或 iTerm2。它是一个运行在 OpenHarmony 设备上的 App,提供了一个完整的终端环境,允许你在手机/平板上运行 Shell 命令。:这是鸿蒙原生的一种包格式,类似于 Linux 的.deb或.rpm。我们将编译好的二进制文件打包成 HNP,就能通过包管理器在 Termony 中一
在 OpenHarmony(鸿蒙)的北向生态建设中,将 Linux 经典命令行工具(如 curl, git, vim, htop 等)移植到鸿蒙系统是一项基础且重要的工作。然而,很多开发者在交叉编译完成后,往往卡在“如何优雅地在设备上验证”这一步。
传统的 hdc shell 调试虽然可用,但环境简陋、缺乏依赖管理。今天,我们将介绍一款神器——Termony(鸿蒙原生终端模拟器),并手把手教你在 Linux 环境下,如何构建一套完整的HNP(Harmony Native Package)自验证环境。即使你是刚入门的开发者,看完这篇也能轻松搞定!
目录
什么是 Termony 和 HNP?
在开始实战前,我们先对齐一下概念,防止小白晕车。
-
Termony:你可以把它理解为鸿蒙版的 Termux 或 iTerm2。它是一个运行在 OpenHarmony 设备上的 App,提供了一个完整的终端环境,允许你在手机/平板上运行 Shell 命令。
-
HNP (Harmony Native Package):这是鸿蒙原生的一种包格式,类似于 Linux 的
.deb或.rpm。我们将编译好的二进制文件打包成 HNP,就能通过包管理器在 Termony 中一键安装、卸载和管理依赖。
我们今天的目标:在 Linux PC 上编译打包一个 HNP 工具,将其推送到鸿蒙设备,并在 Termony 中安装运行,完成“开发-部署-验证”的闭环。
准备工作 (Prerequisites)
1. 硬件环境
-
PC 端:运行 Ubuntu 20.04+ 的电脑(或虚拟机/WSL2)。
-
设备端:一台已解锁的 OpenHarmony 设备(如 RK3568 开发板、Mate60 Pro 纯血鸿蒙版等)。
2. 软件环境
-
PC 端:
-
已配置好 OpenHarmony SDK(含
hdc工具)。 -
已安装
hnp-cli打包工具(下文会讲如何获取)。
-
-
设备端:
-
已安装 Termony 应用(HAP包)。
-
博主提示:确保你的
hdc list targets能识别到设备,这是所有操作的基础。
第一步:理解自验证流程架构
在动手之前,看一张流程图:
![graph LR A[Linux PC: 源码/二进制] -->|打包| B(HNP 软件包 .hnp) B -->|hdc file send| C[鸿蒙设备: /data/local/tmp] C -->|Termony内安装| D{Termony 环境} D -->|执行验证| E[运行结果]](https://i-blog.csdnimg.cn/direct/2696e578bda04738ba9226e3357a52fb.png)
第二步:在 Linux 上准备 HNP 包
假设我们要移植一个简单的工具,比如 hello-world 或者以 fastfetch 为例。为了演示方便,我们假设你已经通过交叉编译得到了一个名为 helloworld 的二进制文件。
1. 安装 HNP 打包工具
如果你的 Linux 环境还没有 hnp 打包工具,通常可以通过 npm 或者下载官方发布的二进制工具链。
# 假设我们使用 npm 安装 hnp 命令行工具(示例)
npm install -g @openharmony/hnp
2. 创建打包目录结构
HNP 包有严格的目录规范,我们需要手动创建(或使用脚本生成)。
mkdir -p ~/hnp_build/helloworld
cd ~/hnp_build/helloworld
# 创建标准目录结构
mkdir -p bin lib share/doc
3. 编写 hnp.json 配置文件
在根目录下创建一个 hnp.json,这是包的“身份证”。
{
"name": "helloworld",
"version": "1.0.0",
"description": "My first HNP package for Termony",
"install": {
"bin": [
"bin/helloworld"
]
},
"dependencies": {}
}
4. 放入二进制文件并打包
将你交叉编译好的鸿蒙版二进制文件复制进去。
# 将你的编译产物复制到 bin 目录
cp /path/to/your/compiled/helloworld ./bin/
# 赋予执行权限
chmod +x bin/helloworld
# 执行打包命令
hnp pack .
执行完毕后,你会得到一个 helloworld-1.0.0.hnp 文件。这就是我们要集成的“外部包”。
第三步:将 HNP 包集成到设备
这一步是将 PC 上的“子弹”输送到鸿蒙设备的“战场”。
1. 推送文件
使用 hdc 工具将生成的 .hnp 包推送到设备的临时目录。推荐使用 /data/local/tmp,因为这里通常有读写权限。
# 在 PC 终端执行
hdc file send ./helloworld-1.0.0.hnp /data/local/tmp/
2. 确认推送成功
hdc shell ls -l /data/local/tmp/helloworld-1.0.0.hnp
# 如果看到文件信息,说明推送成功
第四步:在 Termony 中完成装载与验证 (核心步骤)
现在拿起你的鸿蒙设备,或者使用 Scrcpy 投屏。
1. 打开 Termony 应用
启动应用,你应该能看到一个熟悉的黑色终端界面。
2. 初始化环境(如果是首次使用)
Termony 通常自带基础的 HNP 管理器。在 Termony 的命令行输入:
hnp --version
如果能看到版本号,说明环境正常。
3. 安装外部 HNP 包
这是最关键的一步。我们需要告诉 Termony 去安装我们刚刚推进去的那个包。
在 Termony 的界面中输入以下命令:
# 1. 切换到临时目录(可选,或者直接指定绝对路径)
cd /data/local/tmp
# 2. 执行安装命令
# 注意:根据 Termony 版本的不同,命令可能是 hnp install 或者 termony install
hnp install ./helloworld-1.0.0.hnp
此时终端会输出类似日志:
Verifying package integrity... OK
Extracting to /data/storage/el2/base/files/usr/ ... OK
Linking binaries... OK
Package 'helloworld' installed successfully!
4. 刷新环境变量
有些时候安装后需要刷新一下路径才能识别新命令(类似 Linux 的 source)。
source /etc/profile
# 或者重启 Termony App
第五步:验证运行与调试
现在是见证奇迹的时刻。直接在 Termony 中输入你的命令:
helloworld
预期输出:
Hello OpenHarmony!
This is running inside Termony.
进阶调试技巧
如果在运行时报错(比如 No such file or directory 或 Permission denied),请按以下步骤排查:
-
检查依赖库:
如果你的工具依赖 libc++.so 或其他动态库,使用 ldd helloworld (如果 Termony 里有 ldd) 或者直接看报错信息。
解决方法:将依赖库打包进 HNP 的 lib 目录,或者设置 LD_LIBRARY_PATH。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/libs -
检查架构:
确保你编译的是 aarch64 (ARM64) 架构。如果在 PC 上编译成了 x86,在手机上是跑不起来的。
验证命令:file /bin/helloworld(查看 ELF 头信息)。
-
日志追踪:
如果程序闪退,可以结合 hilog 查看系统级报错。
# 在 PC 另开一个终端 hdc hilog | grep "helloworld"
总结与建议
通过以上五个步骤,我们成功在 Linux 下利用 Termony + HNP 搭建了一套高效的命令行自验证环境。
这就好比给你的鸿蒙设备装了一个“Linux子系统”,你可以:
-
脱离 PC 验证:在地铁上、咖啡厅里,掏出手机就能测试你写的 C++ 代码。
-
构建私有仓库:搭建一个 HTTP服务器,让 Termony 像 apt-get 一样远程下载你自己编译的工具集。
更多推荐




所有评论(0)