2. 开发环境搭建(一):Ubuntu 22.04 LTS系统安装与配置、必要工具链安装
Camera HAL 开发对操作系统环境有明确要求:稳定性、工具链兼容性和长期支持是核心考量。本章以 Ubuntu 22.04 LTS (Jammy Jellyfish) 为基准系统,从零开始完成系统安装、基础配置与核心工具链部署,为后续 AOSP 源码下载与 HAL 编译提供可靠底座。
2.1 为什么选择 Ubuntu 22.04 LTS
AOSP 官方长期以 Ubuntu LTS 作为推荐开发平台。22.04 版本在驱动支持、Python 版本、GCC 工具链等方面与当前主流 AOSP 分支(android-14.0 / android-15.0)高度匹配。
| 对比项 | Ubuntu 22.04 LTS | Ubuntu 20.04 LTS | Ubuntu 24.04 LTS |
|---|---|---|---|
| Python 默认版本 | 3.10 | 3.8 | 3.12 |
| GCC 默认版本 | 11.4 | 9.4 | 13.2 |
| OpenJDK 推荐 | 11 / 17 | 11 | 17 / 21 |
| AOSP 官方支持 | ✅ 主流推荐 | ✅ 兼容 | ⚠️ 部分实验性 |
| 长期支持周期 | 2032年 | 2030年 | 2034年 |
选型建议: 若团队已使用 20.04 且项目稳定,可继续沿用;新项目建议直接使用 22.04,兼顾兼容性与工具链前瞻性。24.04 暂不建议用于生产级 HAL 开发环境。
2.2 系统安装与基础配置
2.2.1 安装介质准备
- 从 ubuntu.com/download/server 下载 Ubuntu 22.04.5 LTS Server ISO(推荐 Server 版,减少桌面环境资源占用)。
- 使用 Rufus(Windows)或 dd(Linux/macOS)制作启动 U 盘。
- BIOS 设置:关闭 Secure Boot,启动模式设为 UEFI(推荐)或 Legacy。
2.2.2 磁盘分区建议
AOSP 全量源码 + 编译产物体积巨大,建议独立分区规划:
| 挂载点 | 建议大小 | 文件系统 | 说明 |
|---|---|---|---|
/ |
100 GB | ext4 | 系统与基础工具 |
/home |
200 GB | ext4 | 用户数据与配置文件 |
/opt/aosp |
≥ 500 GB | ext4 | AOSP 源码与编译输出(SSD 优先) |
swap |
32 GB | swap | 内存 32GB 以下建议开启 |
⚠️ 重要: 编译 Camera HAL 需要大量随机读写,
/opt/aosp 所在磁盘务必使用 NVMe SSD,机械硬盘会导致编译时间延长 3~5 倍。
2.2.3 安装后基础配置
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装基础开发包
sudo apt install -y \
build-essential \
curl \
wget \
vim \
git \
ssh \
net-tools \
htop \
tree
# 配置时区
sudo timedatectl set-timezone Asia/Shanghai
# 创建 AOSP 工作目录
sudo mkdir -p /opt/aosp
sudo chown -R $USER:$USER /opt/aosp
2.3 必要工具链安装
Camera HAL 开发依赖一套精确版本的工具链。以下工具按 安装顺序 列出,部分工具存在版本依赖关系。
2.3.1 Git & Repo
Git 是版本控制基础;Repo 是 Google 基于 Git 开发的仓库管理工具,用于管理 AOSP 多仓库项目。
# Git 安装(Ubuntu 22.04 默认 Git 2.34)
sudo apt install -y git
git --version # 验证
# 配置 Git 全局信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
# Repo 安装(官方推荐方式)
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
# 将 ~/bin 加入 PATH
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
repo --version # 验证
2.3.2 Python 3
Ubuntu 22.04 自带 Python 3.10,但 AOSP 某些脚本需要 python 命令指向 Python 3。
# 确认 Python 3 已安装
python3 --version # 应输出 Python 3.10.x
# 安装 pip 与虚拟环境工具
sudo apt install -y python3-pip python3-venv
# 设置 python 软链接(可选但推荐)
sudo ln -s /usr/bin/python3 /usr/bin/python
python --version # 验证
2.3.3 CMake
Camera HAL 中的部分 native 组件(如 libcamera、vendor 扩展库)使用 CMake 构建。
# 安装 CMake(apt 版本为 3.22,满足大部分需求)
sudo apt install -y cmake
cmake --version
# 如需最新版本,可通过 pip 安装
# pip install --upgrade cmake
2.3.4 Ninja
Ninja 是 AOSP 默认的构建系统后端,比 Make 更快,尤其适合增量编译。
# 安装 Ninja
sudo apt install -y ninja-build
ninja --version # 应输出 1.10.x
2.3.5 工具链版本汇总
| 工具 | 安装方式 | 推荐版本 | 验证命令 |
|---|---|---|---|
| Git | apt install git |
≥ 2.34 | git --version |
| Repo | curl 下载脚本 | ≥ 2.45 | repo --version |
| Python 3 | 系统自带 + pip | 3.10.x | python3 --version |
| CMake | apt install cmake |
≥ 3.22 | cmake --version |
| Ninja | apt install ninja-build |
≥ 1.10 | ninja --version |
2.4 环境验证与工具链关系
以下 SVG 展示了各工具在 Camera HAL 开发流程中的层级关系与数据流向:
2.5 常见问题与避坑指南
🔧 问题 1:Repo 下载失败或速度极慢
原因:Google 存储服务器在国内访问受限。
解决方案:使用国内镜像源,例如
原因:Google 存储服务器在国内访问受限。
解决方案:使用国内镜像源,例如
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'。
🔧 问题 2:Python 软链接冲突
原因:某些系统脚本依赖
解决方案:使用
原因:某些系统脚本依赖
/usr/bin/python 指向 Python 2,而 AOSP 需要 Python 3。解决方案:使用
sudo apt install python-is-python3 统一软链接。
🔧 问题 3:Ninja 版本过低导致编译失败
原因:apt 源中的 Ninja 版本可能滞后。
解决方案:从 GitHub Release 下载预编译二进制,或通过
原因:apt 源中的 Ninja 版本可能滞后。
解决方案:从 GitHub Release 下载预编译二进制,或通过
pip install ninja 获取最新版。
2.6 环境就绪检查清单
完成上述步骤后,执行以下命令进行最终验证:
# 逐项检查
echo "=== 系统版本 ==="
lsb_release -a
echo "=== Git ==="
git --version
echo "=== Repo ==="
repo --version
echo "=== Python ==="
python --version && python3 --version
echo "=== CMake ==="
cmake --version
echo "=== Ninja ==="
ninja --version
echo "=== 磁盘空间 ==="
df -h /opt/aosp
所有命令均返回预期版本号且无报错,即代表开发环境搭建完成。下一阶段将进入 AOSP 源码下载与 HAL 项目结构解析。