前面在windows的wsl里面编译Termony时,用的是默认配置。编译出来的HAP包有1.4G,安装到模拟器直接崩掉了。因为Termony默认集成了七十多个工具,有非常丰富庞大的功能,因此编译出来的包比较大。
查看了build-linux.sh脚本,可以看到,编译这些工具,是通过make编译build-hnp各个子目录完成的。

build_termony_hnps() {
        cd ${PROJ_BASE_HOME} && make -C build-hnp
}

查看build-hnp目录,里面的Makefile的PKGS变量定义了这些工具,可以通过修改PKGS来增删Termony包含的工具列表。
在这里插入图片描述

编译修改

通过修改build-linux.shMakefile,控制编译的目标平台和集成的工具列表。

目标平台

Termony可以支持arm64和x86_64,如果要目标平台是鸿蒙PC,则要设置OHOS_ARCHx86_64

# for x86_64, set OHOS_ARCH and OHOS_ABI to x86_64
#export OHOS_ARCH=aarch64
#export OHOS_ABI=arm64-v8a
export OHOS_ARCH=x86_64
export OHOS_ABI=x86_64

集成工具列表

为快速验证,修改默认集成的工具列表为bashgettextbusybox这三个工具,目标是先在模拟器上能够把Termony安装上去。
在这里插入图片描述

环境变量

只需要设置TOOL_HOME环境变量,并不需要将OHOS_SDK_HOME里面的工具暴露到PATH环境变量。如果导出了toolchains目录,会导致编译失败。

注意clean

build-linux.sh脚本没有提供清理的功能,需要手动到build-hnp目录去清理。
什么情况下需要清理?比如,前面没有任何修改,默认编译了所有的工具,现在修改删减了一些,如果直接调用build-linux.sh -b,打包时仍会将之前编译好的工具打包进去。

如何清理?

Makefile里面clean是会删除sysroot目录。如果还想保留之前的工具,可以将sysroot备份一下,免得又要编译很久。

$ cd build-hnp
$ export OHOS_ARCH="x86_64"
$ make clean

编译

配置好上述步骤,编译就只是等待了。

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

安装

删减后的HAP包编译后只有几十M,安装起来无压力。

$ ls entry/build/default/outputs/default/entry-default-unsigned.hap  -lh
-rwxrwxrwx 1 test test 46M Dec  9 18:03 entry/build/default/outputs/default/entry-default-unsigned.hap

在模拟器里面安装,不需要签名,可以直接安装。

$ hdc app install entry-default-unsigned.hap

运行

鸿蒙PC模拟器运行界面如下。
在这里插入图片描述
在这里插入图片描述

注意事项

  1. 注意清理
    build-linux.sh没有清理功能,如果前面编译过arm64平台的hnp包,打包HAP时会打包进去。可以根据需要删除不需要的hnp包。
  2. 提示config.h未找到
    可以参考如下issue处理:config.h未找到
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐