开源鸿蒙终端工具Termony编译-WSL版


前言

Termony是一款开源运行在开源鸿蒙PC上的命令行操作工具,可内置多种开源命令行,但需要手动按照规则配置详细的交叉编译链路。
本文介绍wsl环境下编译Termony的步骤。


Termony是什么?

Termony 是一个面向 HarmonyOS 电脑的类 Termux 终端环境,目前仍在开发中。它的目标是在 HarmonyOS 上提供类似 Linux 的命令行体验,支持运行基础命令、编译和执行 C/C++ 程序,并集成了大量实用工具和开发组件。
像我们熟悉的 Linux命令行工具,如bash、fish、gcc、gdb、git、python、vim、tmux、htop、openssh、make、curl 等常用开发与系统工具都有包含。
Termony利用 HarmonyOS 的 HNP 机制 打包原生二进制程序(.hnp 文件),在安装 HAP 时自动解压到 /data/app/ 并创建软链接至 /data/app/bin/。
Termony 是 HarmonyOS 电脑平台上的“Linux 子系统雏形”,为开发者在鸿蒙生态中提供本地化、高自由度的命令行开发环境。

编译环境搭建

Termony编译除了要搭建基础编译环境,还需要用到鸿蒙sdk。

系统环境

  • WSL2 Ubuntu 22.04
  • 主机内存大于16G
  • Windows上配置好hdc等工具

下载源码

$ git clone https://github.com/TermonyHQ/Termony.git

软件包

ws的ubuntu环境,需要安装的基础的软件包可能没有写,但下面的软件包一定需要安装。

# python3.8环境
$ sudo apt-get install wget make gsed gettext automake coreutils flex cmake yacc libncurses5-dev pkg-config tcl zip nodejs openjdk-8-jdk
$ pip3 install meson=1.2.0
$ pip3 install toml

sdk

下载Command Line Tools 6.0.1 Linux版本的工具,解压到某个目录。官网下载地址:最新版本 - 下载中心 - 华为开发者联盟

TOOL_HOME环境变量

注意:TOOL_HOME识别不了~/路径,所以不要偷懒,使用绝对路径。

$ export TOOL_HOME="/home/test/command-line-tools"

编译

前面都准备好了,接下来就开始编译了。编译并不复杂,但太耗时间了。

$ cd Termony
$ ./build-linux.sh -b

在WSL环境编译可能要好几个小时,如果编译机器性能好,时间会短些。
编译过程中,会大量的下载源码,所以一定要保持网络畅通,否则代码下载不全,可能会导致编译失败。
遇到错误,查看具体的错误原因,如源码不完整,工具没装,待准备好后,重新编译。

编译成功后的HAP目录

> hvigor Finished :entry:default@SignHap... after 37 ms
> hvigor Finished :entry:default@CollectDebugSymbol... after 48 ms
> hvigor Finished :entry:assembleHap... after 1 ms
> hvigor BUILD SUCCESSFUL in 19 s 279 ms

如上提示即为编译成功。
编译好的HAP包有1G多,实在太过庞大。

$  ls entry/build/default/outputs/default/ -lh
total 1.4G
-rwxrwxrwx 1 test test 1.4G Dec  7 18:46 entry-default-unsigned.hap
drwxrwxrwx 1 test test 4.0K Dec  7 07:33 mapping
-rwxrwxrwx 1 test test  533 Dec  7 07:31 pack.info

安装

Termony可能还不支持在DevEco模拟器里的安装,至少我没有安装成功。把模拟器安装挂几次,最终只有放弃了。
需要在实际的鸿蒙PC上安装,官方说明文档也是写的MateBook Pro。安装到鸿蒙PC需要签名,需要执行签名脚本。配置build-profile.json5相关签名,然后执行。

$ ./build-linux -s

签名后即可通过hdc工具将HAP包安装到鸿蒙PC(实际未验证)。

其它

Termony本身是一个HAP,它内部集成了整套工具链,甚至包含qemu。
另外还有两个正在开发中的鸿蒙终端工具,也挺有意思的,是基于qemu开发的。Harmonix和HiSH,这两个工具是同一个开发者,前者是基于qemu-user,后者基于qemu。
这两个终端工具可以直接在模拟器里安装,可以不用编译直接使用。

可能遇到的问题

  1. 提示git submodule update --init
    这种错误,一般是代码没有下载全,需要下载完整的代码才能编译。
  2. hvigor ERROR: spawn java ENOENT
    需要安装openjdk-8-jdk软件包。
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐