大数跨境
0
0

Open Harmony 镜像编译

Open Harmony 镜像编译 AzureDeveloper
2025-07-16
0
导读:去年就想学习一下Open Harmony系统相关的开发技术,当时也看了一些入门的资料,也认真阅读完了官方的入门

去年就想学习一下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 -L1-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!


往期文章:


在Ubuntu下扩充LVM的存储空间

在Windows Server Core下安装Windows Admin Cente

使用命令行初步配置Windows Server core

在Azure Bot中使用User-assigned managed identity完成认证

使用SQL Server Profiler追踪Power BI Desktop刷新问题

尝试缓解Power BI报表数据源为Azure Databricks在代理服务器环境中刷新出错的问题

在Azure Synpase Spark Pool中移动外部分区表数据到新位置后新建分区表发现丢失所有数据

无法删除Windows Server AD中的ou

启动Aspire AppHost无法访问问题排查

Teams Bot App 集成SSO 认证

诡异的Databricks Delta Lake Table History

安装TeX Live发行版

什么是TeX? 什么是LaTex? 为什么要学习它?

如何启用Power BI Desktop的诊断日志

在MVVM项目中使用async/await - 数据绑定
Windows Server 2022 Core迁移记录
async/wait和ConfigureWait(false)在异步编程中有什么关系?



AzureDeveloper(WebSite: https://www.azuredeveloper.cn), 一个分享和学习Azure技术的好去处,欢迎关注




【声明】内容源于网络
0
0
AzureDeveloper
Azure开发者,Azure开发技术分享
内容 377
粉丝 0
AzureDeveloper Azure开发者,Azure开发技术分享
总阅读57
粉丝0
内容377