从零搭建小鸿 AI(OpenHarmony)开发环境:Mac M1 + UTM + Ubuntu + Cursor Remote 全过程踩坑记录
前言
最近准备体验一下小鸿 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 固件。
更多推荐




所有评论(0)