王锐
王锐
发布于 2026-09-13 / 0 阅读
0
0

使用 docker 搭建 AOSP 编译环境搭建

一、docker容器准备

按照以下容器配置 aosp 源码编译基础容器 Dockerfile

设置的工作目录为 /aosp,输出目录为 /out,缓存目录为 /ccache

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y \
    git \
    git-lfs \
    gnupg \
    flex \
    bison \
    build-essential \
    zip \
    curl \
    zstd \
    unzip \
    rsync \
    bc \
    ccache \
    python3 \
    python-is-python3 \
    ninja-build \
    cmake \
    lz4 \
    libssl-dev \
    libelf-dev \
    libncurses5 \
    libncurses5-dev \
    libxml2-utils \
    xsltproc \
    lib32z1-dev \
    libc6-dev-i386 \
    libgl1-mesa-dev \
    libx11-dev \
    x11proto-core-dev \
    openjdk-17-jdk \
    adb \
    fastboot \
    sudo \
    vim \
    less \
    file \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*


RUN curl -fsSL \
    https://storage.googleapis.com/git-repo-downloads/repo \
    -o /usr/local/bin/repo && \
    chmod +x /usr/local/bin/repo

COPY code-server_4.99.4_amd64.deb /tmp/
RUN apt-get update && \
    apt-get install -y /tmp/code-server_4.99.4_amd64.deb && \
    rm -f /tmp/code-server_4.99.4_amd64.deb && \
    rm -rf /var/lib/apt/lists/*
#ARG CODE_SERVER_VERSION=4.99.4
#RUN curl -fsSL https://code-server.dev/install.sh | sh -s -- --version ${CODE_SERVER_VERSION}

ENV USE_CCACHE=1
ENV CCACHE_DIR=/ccache
ENV OUT_DIR=/out

WORKDIR /aosp

EXPOSE 8080

CMD ["/bin/bash"]

然后按照一下配置配置 docker-compose.yml

其中,配置了工作目录为 /aosp,指定环境变量中的输出目录以及缓存目录

services:
  aosp:
    build:
      context: .
      dockerfile: Dockerfile
      # 构建时传入代理(仅 build 阶段使用,不会进入最终容器)
      args:
        HTTP_PROXY: ${HTTP_PROXY:-}
        HTTPS_PROXY: ${HTTPS_PROXY:-}
        NO_PROXY: ${NO_PROXY:-localhost,127.0.0.1,.local}

    image: aosp-build:android14
    container_name: aosp-android14

    working_dir: /aosp

    stdin_open: true
    tty: true

    environment:
      OUT_DIR: /out
      USE_CCACHE: "1"
      CCACHE_DIR: /ccache
      PASSWORD: "asgk487921"

    ports:
      - "1823:8080"

    volumes:
      - /mnt/lv_ssd/docker_volume/aosp/android14/android:/aosp
      - /data/aosp/out:/out
      - /data/aosp/ccache:/ccache

    # AOSP 编译通常需要较大的共享内存
    shm_size: "8gb"
    command:
      - code-server
      - --bind-addr
      - 0.0.0.0:8080
      - --auth
      - password
      - /aosp

完成配置后,执行 docker compose build aosp 执行编译构造容器,然后执行 docker compose up -d 启动容器

二、源码传输并编译

容器启动后,先通过 sudo docker compose exec aosp bash 进入容器 bash 中,然后执行一下命令开始同步

# 1. 首先进入工作目录下
cd /aosp

# 【可选】由于代码量太大了,aosp源码大小为180G左右,编译后的产物90G左右,建议配置一个快点的代理
export http_proxy=http://10.44.0.10:18080
export https_proxy=http://10.44.0.10:18080

# 2. 第一次执行时,需要执行一下仓库来创建一个空的代码仓
repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_rXX
# 这里可以选择 android-14.0.0_r75 分支

# 3. 开始同步
repo sync -c -j8

同步完成后,即可从源码编译,CPU 10400 源码编译耗时大概 4小时左右

# 1. 进入工作目录下
cd /aosp

# 2. 激活aosp系统环境变量
source build/envsetup.sh

# 3. 选择编译目标平台,可按需选择
lunch aosp_cf_x86_64_auto-trunk_staging-userdebug

# 4. 开始编译
m

编译完成后,即可开始测试编译出的安卓系统产物,可参照 使用cuttlefish虚拟机测试AOSP程序

三、相关测试样例

为了更进一步确保编译出来的产物无问题,且虚拟机可用,此章节将继续介绍相关的样例编译过程以及测试验证过程

样例一、aidl 服务创建及测试


评论