2. 开发环境搭建(上):安装虚拟机、配置 Ubuntu 20.04 系统、安装必要的开发工具

说实话,做 OpenHarmony 南向开发,第一步不是写代码,而是搭环境。很多新手一上来就急着编译源码,结果被各种依赖问题卡住,一卡就是半天。我刚开始接触鸿蒙时也踩过这个坑——环境没配好,折腾了两天才跑通第一个 Hello World。

这一章,咱们先把地基打牢。我会带你一步步装好虚拟机、配好 Ubuntu 20.04,再把 Git、Python、SCons 这些必备工具装齐。跟着我的节奏来,别跳步。

2.1 为什么选虚拟机?

你可能会问:为什么不用双系统?或者直接装 Windows 版?

我的建议是:虚拟机最省心。原因有三:

  • 隔离性好:编译环境搞坏了,删掉重来,不影响宿主机
  • 快照功能:配好一个干净环境,拍个快照,以后随时回滚
  • 跨平台:Windows、macOS 都能跑,团队协作统一环境

我个人习惯用 VMware Workstation,当然 VirtualBox 也行。下面以 VMware 为例。

2.2 安装 VMware Workstation

去官网下载 VMware Workstation Pro(个人用可以申请免费许可证)。安装过程很简单,一路 Next 就行。唯一要注意的是:安装路径不要有中文。

小技巧:装完后记得在「编辑 → 首选项 → 内存」里,把「预留所有虚拟机内存」勾掉。这样宿主机不会太卡。

2.3 创建 Ubuntu 20.04 虚拟机

Ubuntu 20.04 LTS 是 OpenHarmony 官方推荐的版本。别用 22.04 或 24.04,有些依赖包版本不兼容,我试过,会报奇奇怪怪的错误。

创建步骤:

  1. 点击「创建新的虚拟机」
  2. 选择「典型(推荐)」
  3. 选择「稍后安装操作系统」
  4. 客户机操作系统选「Linux」,版本选「Ubuntu 64 位」
  5. 虚拟机名称填 OpenHarmony_Dev
  6. 磁盘大小建议 100GB(勾选「将虚拟磁盘拆分成多个文件」)
  7. 自定义硬件:内存给 8GB,处理器给 4 核
注意:内存别低于 4GB,否则编译时会卡死。我曾经用 2GB 内存编译,等了两个小时还没跑完,最后直接 OOM 了。

2.4 安装 Ubuntu 20.04 系统

下载 Ubuntu 20.04.6 LTS 的 ISO 镜像,挂载到虚拟机的 CD/DVD 里,启动虚拟机开始安装。

安装过程中有几个关键点:

  • 语言选 English:终端操作时中文路径容易出问题
  • 分区选「Erase disk and install Ubuntu」:虚拟机里无所谓
  • 用户名建议用 openharmony:后面很多路径会用到
  • 勾选「Install third-party software」:显卡驱动和 Wi-Fi 固件

装完后重启,记得先拍个快照。嗯,这一步很重要——万一后面配乱了,直接恢复快照,不用重装系统。

2.5 配置系统基础环境

进系统后,第一件事是换源。国内连 Ubuntu 官方源太慢了,我一般用清华或阿里镜像。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源(Ubuntu 20.04)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 更新
sudo apt update && sudo apt upgrade -y

然后装一些基础工具:

sudo apt install -y vim curl wget git git-lfs unzip zip \
    build-essential cmake ninja-build ccache \
    python3 python3-pip python3-venv \
    scons

核心工具清单

工具版本要求用途
Git≥ 2.20代码版本管理
Python3.8 ~ 3.10编译脚本、工具链
SCons≥ 3.1.2构建系统
CMake≥ 3.16跨平台构建
Ninja≥ 1.10加速编译
ccache≥ 3.7编译缓存,提速明显

2.6 配置 Git

Git 是 OpenHarmony 开发的核心工具。源码托管在 Gitee 上,所以你得先配好 Git 用户信息。

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
git config --global credential.helper store

最后一行是让 Git 记住密码,省得每次 push 都输一遍。我个人习惯还会配别名:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
避坑指南:我曾经因为 Git 用户名用了中文,导致提交记录在 Jenkins 上显示乱码。建议统一用英文。

2.7 配置 Python 环境

OpenHarmony 的编译脚本依赖 Python 3.8+。Ubuntu 20.04 自带 Python 3.8,但 pip 需要单独装。

# 确认版本
python3 --version   # 应该是 Python 3.8.10

# 安装 pip 和 venv
sudo apt install -y python3-pip python3-venv

# 升级 pip
pip3 install --upgrade pip

# 安装常用 Python 包
pip3 install setuptools wheel
pip3 install requests pyyaml

为什么要装 pyyaml?因为 OpenHarmony 的配置文件很多是 YAML 格式,编译脚本会解析它们。不装的话,编译到一半会报 ModuleNotFoundError。

2.8 安装 SCons

SCons 是 OpenHarmony 的构建工具,类似于 Makefile 的升级版。Ubuntu 20.04 的 apt 源里自带 SCons,但版本可能比较老。我建议用 pip 装最新版:

# 卸载系统自带的旧版
sudo apt remove scons

# 用 pip 安装
pip3 install scons

# 验证
scons --version   # 应该 ≥ 4.0
注意:SCons 4.0+ 和 3.x 的语法有差异。如果你用 apt 装了 3.x 版本,编译 OpenHarmony 3.0 以上版本时会报语法错误。我当初就被这个坑过,排查了半天才发现是 SCons 版本问题。

2.9 安装其他依赖

OpenHarmony 编译还需要一些底层库。别漏了:

sudo apt install -y libssl-dev libffi-dev libncurses5-dev \
    libgmp-dev libmpfr-dev libmpc-dev flex bison \
    texinfo gperf libtool patchutils bc \
    zlib1g-dev libexpat1-dev

这些库的作用:

  • libssl-dev:HTTPS 和加密支持
  • flex/bison:词法分析和语法分析器,编译内核需要
  • texinfo:生成文档
  • gperf:生成完美哈希函数

说白了,这些就是编译器的「食材」。缺一样,编译就会卡住。

2.10 验证环境

装完所有工具后,跑个脚本验证一下:

#!/bin/bash
echo "=== 环境验证 ==="
echo "Git: $(git --version)"
echo "Python: $(python3 --version)"
echo "SCons: $(scons --version 2>&1 | head -1)"
echo "CMake: $(cmake --version | head -1)"
echo "Ninja: $(ninja --version)"
echo "ccache: $(ccache --version | head -1)"
echo "================="

如果所有版本都显示正常,恭喜你,环境搭好了。

2.11 本章知识结构

下面这张图帮你理清整个环境搭建的脉络:

开发环境搭建知识结构 开发环境搭建 虚拟机安装 Ubuntu 20.04 配置 开发工具安装 VMware 安装 虚拟机创建 系统安装 换源 & 更新 Git 配置 Python / SCons Git LFS CMake / Ninja 基础依赖库 编译工具链 💡 核心原则:先搭虚拟机 → 再配系统 → 最后装工具 每一步完成后建议拍快照,方便回滚

2.12 小结

这一章我们做了三件事:

  • 装好了 VMware 虚拟机,创建了 Ubuntu 20.04 系统
  • 配置了系统源、基础依赖和编译工具链
  • 安装了 Git、Python、SCons 等核心开发工具