Open Harmony 镜像编译
分类: 鸿蒙以及开源鸿蒙 ◆ 标签: #鸿蒙以及开源鸿蒙 ◆ 发布于: 2025-07-16 23:21:09

去年就想学习一下Open Harmony
系统相关的开发技术,当时也看了一些入门的资料,也认真阅读完了官方的入门文档,都还完成的不错。
不过无论是鸿蒙
还是鸿蒙Next
都是专有产品,开发基于鸿蒙Next
应用都是比较方便的,工具和API
都非常完备,文档也很齐全, 但是如果想开发一些小型设备或者轻量级设备,就只能选择Open Harmony
了。本来以为自己的知识储备是足够的,毕竟也玩了Linux
很多年,各种编译环境都是见过的,以为编译Open Harmony
虽然有挫折,但是也不至于被难倒,等真正上手才发现,真是折磨,断断续续的折磨了我大半年才终于找到正确的方法来编译镜像。
虽然开源鸿蒙的官方网站上提供的文档看起来像是很完备,但是照着他们的文档就没有成功过,去gitee.com
提交issue也是超长时间没有人理会,就很抓狂,最后硬是靠着各种搜索,DeepSeek
以及各种挖掘开源鸿蒙的官方文档,终于搞明白了正确的编译步骤,真是太折磨人了,真是记忆犹新。
编译镜像的基本要求
千万不要小看这些要求,不满足的话,经常编译到一半就卡了,然后不得不修正从头来,非常耗费时间。
编译方式选择
开源鸿蒙提供了好几种编译方式,两种方式比较推荐:
- 基于
Docker
的编译环境: 这种方式我还没有试过,但是我看文档上他的镜像版本很老,还是3.x
,不确定有没有最新的版本支持,最新文档版本都到5.1.0
了。 - 基于
Ubuntu
系统的编译: 需要注意的是,目前仅仅支持Ubuntu 18.04 LTS
和Ubuntu 20.04 LTS
, 其他的发行版本不支持。
我们这篇文档使用Ubuntu
系统进行编译,您可以选择18.04 LTS
或者 20.04 LTS
,无论哪个版本步骤都一样。
系统基本要求
Ubuntu 18.04 LTS
或者Ubuntu 20.04 LTS
- 内存大于等于
16GB
, 不要小于16GB
- 硬盘空余大小要大于
200GB
, 我开始的时候虚拟机只分了100GB
, 千辛万苦编译一半,硬盘撑爆了,又不得不从头再来,好在是虚拟机,加上Ubuntu
使用了逻辑卷,磁盘扩展比较容易。
其他就没什么了。
源码准备
官方的文档上建议使用repo
从gitee.com
上下载,但是我尝试使用repo
只能clone
到master
分支,像其他的分支,例如5.1.0
, 5.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/bin
在PATH
环境变量里。
然后运行:
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!