Skip to main content

Open Harmony 镜像编译

分类:  鸿蒙以及开源鸿蒙 标签:  #鸿蒙以及开源鸿蒙 发布于: 2025-07-16 23:21:09

去年就想学习一下Open Harmony系统相关的开发技术,当时也看了一些入门的资料,也认真阅读完了官方的入门文档,都还完成的不错。
不过无论是鸿蒙还是鸿蒙Next都是专有产品,开发基于鸿蒙Next应用都是比较方便的,工具和API都非常完备,文档也很齐全, 但是如果想开发一些小型设备或者轻量级设备,就只能选择Open Harmony了。本来以为自己的知识储备是足够的,毕竟也玩了Linux很多年,各种编译环境都是见过的,以为编译Open Harmony虽然有挫折,但是也不至于被难倒,等真正上手才发现,真是折磨,断断续续的折磨了我大半年才终于找到正确的方法来编译镜像。

虽然开源鸿蒙的官方网站上提供的文档看起来像是很完备,但是照着他们的文档就没有成功过,去gitee.com提交issue也是超长时间没有人理会,就很抓狂,最后硬是靠着各种搜索,DeepSeek以及各种挖掘开源鸿蒙的官方文档,终于搞明白了正确的编译步骤,真是太折磨人了,真是记忆犹新。

编译镜像的基本要求

千万不要小看这些要求,不满足的话,经常编译到一半就卡了,然后不得不修正从头来,非常耗费时间。

编译方式选择

开源鸿蒙提供了好几种编译方式,两种方式比较推荐:

  1. 基于Docker的编译环境: 这种方式我还没有试过,但是我看文档上他的镜像版本很老,还是3.x,不确定有没有最新的版本支持,最新文档版本都到5.1.0了。
  2. 基于Ubuntu系统的编译: 需要注意的是,目前仅仅支持Ubuntu 18.04 LTS 和 Ubuntu 20.04 LTS, 其他的发行版本不支持。

我们这篇文档使用Ubuntu系统进行编译,您可以选择18.04 LTS或者 20.04 LTS,无论哪个版本步骤都一样。

系统基本要求

  1. Ubuntu 18.04 LTS或者 Ubuntu 20.04 LTS
  2. 内存大于等于16GB, 不要小于16GB
  3. 硬盘空余大小要大于200GB, 我开始的时候虚拟机只分了100GB, 千辛万苦编译一半,硬盘撑爆了,又不得不从头再来,好在是虚拟机,加上Ubuntu使用了逻辑卷,磁盘扩展比较容易。

其他就没什么了。

源码准备

官方的文档上建议使用repogitee.com上下载,但是我尝试使用repo只能clonemaster分支,像其他的分支,例如5.1.05.0.3等等发布分支一律无法同步,光这个问题我就卡了半天,开始我还以为工具不对,最后这几天实在不得已给他们上了一个bug但是也是没人理的状态:https://gitee.com/openharmony/manifest/issues/ICLZ0V?from=project-issue

所以我建议不要用文档推荐的方式,这个方式在我看来是有问题的,可以直接从这里下载源码:https://repo.huaweicloud.com/harmonyos/os/, 这里有开源鸿蒙的各种版本,还有已经为某些固定的板子编译好的镜像,例如rk3568系列的板子。

我下载的是:https://repo.huaweicloud.com/harmonyos/os/5.0.3-Release/code-v5.0.3-Release-20250702.tar.gz

下载回来之后,用工具上传到Ubuntu系统下,用tar zxvf code-v5.0.3-Release-20250702.tar.gz 就可以解压了。

解压之后的目录如下:

ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release$ pwd
/home/ghw/OpenHarmony-v5.0.3-Release
ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release$ tree -L 1 -d
.
├── OpenHarmony
└── openharmony_prebuilts

2 directories
ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release$

这里目录OpenHarmony 就是源码目录。

解压之后,进入到源码目录:

ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release$ ls
OpenHarmony  openharmony_prebuilts  README.md
ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release$ cd OpenHarmony/
ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release/OpenHarmony$ pwd
/home/ghw/OpenHarmony-v5.0.3-Release/OpenHarmony
ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release/OpenHarmony$

请确保当前目录在OpenHarmony下,后继的动作都需要在这个目录下进行。

编译环境准备

进入到源码目录之后,建议用下述方式准备编译环境:

确保你的shell用的是bash

使用下述命令检查一下:

ls -l /bin/sh

如果输出是:

ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release/OpenHarmony$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jul 16 08:47 /bin/sh -> bash

那么就已经是bash了。

如果输出是:

ghw@ubuntuserver:~/OpenHarmony-v5.0.3-Release/OpenHarmony$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jul 16 08:47 /bin/sh -> dash

那么你需要使用如下的命令更改:

sudo dpkg-reconfigure dash

在出现的如下界面上选择No




就可以了。

安装必要的包和工具

确保当前目录在OpenHarmony里,即源码目录

运行脚本:

./build/build_scripts/env_setup.sh

等待运行结束后,运行:

source ~/.bashrc

使得环境生效。

继续运行:

./build/prebuilts_download.sh 

安装编译工具 (可选)

Open Harmony有两种编译方式,一种是使用编译工具hb编译,另外一种使用编译脚本编译,我在使用编译工具hb时遇到了很多问题,重新定义好步骤之后,我没有时间继续使用hb编译工具尝试,如果您想试一下,您可以按照下述方案安装这个工具:

确保当前目录在OpenHarmony里,即源码目录

python3 -m pip install --user build/hb

安装完成后,编辑.bashrc 文件

确保目录~/.local/binPATH环境变量里。

然后运行:

source ~/.bashrc

确保生效。

运行hb help 查看是否已经安装成功。

如果要使用hb编译,可以按照如下步骤:

hb set

在出现的界面上选择你需要的支持的板子,例如rk3568

最后直接运行hb build 进行编译。

使用编译脚本编译

确保当前目录在OpenHarmony里,即源码目录

我使用编译脚本编译,用法很简单:

./build.sh --product-name rk3568 --ccache  # 标准的x86 系统编译

或者:

./build.sh --product-name rk3568 --ccache --target-cpu arm64  # Arm系统的编译

rk3568 即是我需要支持的板子型号,是一个标准系统。

Good Luck and Have Fun!