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 安装介质准备

  1. 从 ubuntu.com/download/server 下载 Ubuntu 22.04.5 LTS Server ISO(推荐 Server 版,减少桌面环境资源占用)。
  2. 使用 Rufus(Windows)或 dd(Linux/macOS)制作启动 U 盘。
  3. 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 开发流程中的层级关系与数据流向:

Camera HAL 开发工具链层级关系 Ubuntu 22.04 LTS 操作系统 Git 版本控制 Python 3.10 CMake 3.22 Repo 仓库管理 Ninja 构建系统 AOSP Soong Camera HAL 编译(mm / mma / soong) Ninja 是 AOSP 默认构建后端;Repo 管理多仓库;Soong 是 AOSP 的构建描述系统

2.5 常见问题与避坑指南

🔧 问题 1:Repo 下载失败或速度极慢
原因: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 下载预编译二进制,或通过 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 项目结构解析。