前言

最近准备体验一下小鸿 AI 的开发。

官方文档推荐的开发环境非常简单:

  • Ubuntu 22.04
  • VSCode Remote SSH
  • OpenHarmony 6.1

但是……

我是:

  • MacBook Pro M1
  • macOS Sequoia
  • Cursor
  • 不想装双系统
  • 也不想买一台 Linux 电脑

于是开始了一场漫长的环境搭建之旅。

最后发现:

真正困难的不是 OpenHarmony,而是环境。


我的开发环境

硬件:

  • MacBook Pro M1
  • 16GB RAM
  • 剩余 SSD 空间约 100GB

软件:

  • macOS
  • UTM(免费)
  • Ubuntu ARM
  • Cursor
  • Remote SSH

为什么不用 Parallels?

原因很简单。

Parallels 很好,但是收费。

UTM 基于 QEMU,完全免费,对于开发来说已经足够。


第一步:安装 Ubuntu

官方推荐 Ubuntu 22.04。

由于我是 M1,因此下载的是:

Ubuntu ARM64 Server。

在 UTM 中创建虚拟机时:

CPU:

4 Core

内存:

8192 MB

磁盘:

64GB

这里有一个需要注意的地方。

UTM 的磁盘并不是立刻占满。

例如设置:

64GB

实际上宿主机只会随着 Ubuntu 使用空间逐渐增长。

因此不用担心一下占满 SSD。


第二步:安装 Ubuntu Desktop

Server 默认没有图形界面。

执行:

sudo apt update
sudo apt install ubuntu-desktop
sudo reboot

安装完成以后就是完整桌面版 Ubuntu。


第三步:安装 Cursor Remote SSH

由于我的主力编辑器一直都是 Cursor。

所以并没有安装 VSCode。

安装 Remote SSH 后,

直接:

Mac
↓

SSH

↓

Ubuntu

所有代码都放在 Ubuntu 中。

Cursor 只是远程编辑。

体验几乎和本地一致。

这一点真的非常舒服。


第四步:配置 Bash

官方要求:

Ubuntu Shell 必须使用 bash。

检查:

ls -l /bin/sh

如果输出不是:

bash

执行:

sudo dpkg-reconfigure dash

选择:

No

即可。


第五步:安装开发依赖

官方文档给了一大串 apt install。

但是……

Ubuntu 26 已经删掉了很多包。

例如:

libxml2

直接提示:

no installation candidate

后来发现:

Ubuntu 新版本只保留:

libxml2-dev

因此需要删除:

libxml2

保留:

libxml2-dev

即可。


第六步:Python 又开始坑人

Ubuntu 26 自带:

Python 3.14

而 OpenHarmony 很明显还是按照 Python 3.10 左右开发的。

首先遇到:

PEP668。

执行:

pip install requests

直接报:

externally-managed-environment

解决方法:

不要用 pip。

直接:

sudo apt install python3-requests

即可。


第七步:repo 工具

repo 安装完成以后,

执行:

repo

提示:

python not found

原因:

Ubuntu 26 已经没有:

python

只有:

python3

因此需要:

sudo ln -s /usr/bin/python3 /usr/bin/python

然后 repo 才能正常运行。


第八步:同步源码

执行:

repo init

随后:

repo sync

第一次同步时间比较长。

由于 OpenHarmony 仓库非常多,

同步时间接近一个小时。

这是整个环境搭建最耗时间的一步。

幸运的是,

整个同步过程一次成功。


第九步:prebuilts_download

接下来又掉进 Python 的坑。

首先:

python3-venv

不存在。

需要安装:

python3.14-venv

随后:

又因为 PEP668,

脚本内部 pip install 全部失败。

只能:

--break-system-packages

强行安装。


第十步:hb 工具

安装:

python3 -m pip install --user build/hb

然后:

hb

再次报错。

原因:

Python3.14 删除了:

pipes

而 OpenHarmony 的 hb 仍然引用:

import pipes

这是典型的新 Python 不兼容旧项目的问题。


第十一步:GN 开始报错

终于开始编译。

结果:

第一行:

Unknown function:

path_exists

继续查。

最后发现:

下载下来的 GN:

2021

源码却使用了更新版本才支持的:

path_exists()

说明:

工具链版本并不一致。


第十二步:终于来到最后一个坑

经过各种修改以后。

终于开始真正编译。

结果:

riscv32-linux-musl-gcc

Exec format error

看到这里。

终于知道真正原因。

我的 Ubuntu 是:

ARM64

而 SDK 自带编译器:

x86_64 ELF

ARM 根本跑不了。

直到这里。

整个问题终于彻底定位。

不是源码的问题。

不是 Cursor。

不是 Ubuntu。

而是:

官方提供的工具链只有 x86_64。


一天下来最大的收获

虽然最后没有真正完成编译。

但是整个开发环境已经全部跑通。

包括:

✅ UTM

✅ Ubuntu

✅ Cursor Remote

✅ Git

✅ Repo

✅ OpenHarmony 源码

✅ 小鸿源码

✅ Python

✅ hb

真正剩下的问题只有一个:

SDK 编译器架构。

这一点基本可以确定:

官方环境实际上默认的是:

Ubuntu x86_64

而不是:

Ubuntu ARM。


如果重新来一次

如果今天重新开始。

我会直接:

安装 Ubuntu 22.04 x86_64。

不要安装 Ubuntu 26。

更不要安装 ARM。

这样几乎可以避开今天遇到的大部分坑。


总结

今天最大的感受其实不是:

OpenHarmony 很难。

而是:

新系统 + 老工具链,真的太容易踩坑。

很多问题都不是因为代码。

而是:

  • Python 版本变化
  • GN 版本变化
  • Linux 发行版变化
  • CPU 架构变化

这些坑官方文档几乎没有提到。

不过也正因为如此。

今天这一路踩下来,

对 OpenHarmony 的整个构建体系反而有了更深的理解。

明天继续。

希望最终能够成功编译出属于自己的第一份小鸿 AI 固件。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐