项目地址:https://github.com/jiegec/Termony
目前只能自己编译安装,小白调试助手没办法正常安装带hnp的hap包(https://github.com/likuai2010/auto-installer/issues/63)。
hnp全称可能是 HarmonyOS Native Package,看起来是一种向鸿蒙系统添加ELF可执行文件和库的标准方式。华为目前还没有为其编写文档,但他们在自己的 CodeArts IDE 里面用了,然后被Termony项目发现了。
hnp有public和private两种模式,public模式把命令安装到 /data/service/hnp 文件夹,可以直接在鸿蒙自带HiShell终端里使用;private模式把命令安装在仅限应用可见的 /data/app 文件夹,只有应用自身能调用这些命令。
CodeArts IDE 只使用了 private 模式 hap,所以命令只能在 IDE 内部使用。但是 Termony 项目同时添加了 public 和 private 模式的 hap,所以命令既可以在 Termony 终端模拟器内部使用,也可以直接在鸿蒙HiShell终端使用(不过缺点是要占两份空间)。
此外,Termony 项目还实现了一个 ELF 加载器,可以利用 Termony 终端模拟器申请到的 JIT 权限实现任意 ELF 文件的运行。不过我自己编译的 Termony 不知道为什么用这个loader的时候会段错误。
不过就算loader用不了,也可以通过打包hnp的方式来部署新命令和库。现在唯一的问题就是侧载工具与带hnp的hap包不兼容,导致普通用户没办法安装。等兼容之后就可以通过这种方式大量发布鸿蒙版原生命令了,包括 python3-numpy 等包都可以用这种方法发布。
我移植的 aria2c 命令也做了一个 hnp 版,但因为侧载工具装不上,还没有打包发布。