# AOSP (Android Open Source Project) > [AOSP 是 Android 的开源项目](https://source.android.com/docs/setup/about?hl=zh-cn) (Android Open Source Project),是一个完整的软件栈,包括操作系统、中间件和应用程序。AOSP 项目的目标是提供一个完整的、通用的、开源的、可移植的软件栈,以支持移动设备和嵌入式设备的开发, 如手机、平板电脑、车载系统、电视和其他设备。 ## 1. 仓库介绍 本仓库是从官方通过 [Repo](https://source.android.com/docs/setup/download?hl=zh-cn) 工具同步的 AOSP 代码(android-14.0.0_r1), 下载后的代码经过处理后,合并成单体仓库,方便做构建测试。 ## 2. 代码下载 ### 2.1 使用 Repo 工具下载 通过 Repo 下载 `android-14.0.0_r1` 分支的代码,下载的代码深度为 1,不包含历史提交记录,下载完成后,执行 `repo sync` 命令,下载代码。 ```bash repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r1 --current-branch --depth=1 --no-clone-bundle && repo sync -j 32 -c -d --no-clone-bundle ``` ### 2.2 处理并合并代码 - 代码下载后,合并到一个单体大仓中,并且删除了子仓库的 `.git` 目录、删除根目录的 `.repo` 目录(下载后后续无需再使用 Repo 工具管理,并且 .repo 内存在单个文件大于 5G,无法通过 Git LFS 上传到 cos 存储)。 - - 把大于 500M 的文件转换成 Git LFS 追踪的文件。 ### 2.3 环境准备并本地构建 具体可查阅够流水线的 [Dockerfile](https://cnb.woa.com/aosp/aosp-build-docker-images/-/blob/main/ubuntu-18-aosp.dockerfile) 文件,安装了 AOSP 编译所需的依赖。 也可按照[官方文档](https://source.android.com/docs/setup/start/requirements?hl=zh-cn)安装依赖。 构建 AOSP 代码,需要大量的内存和磁盘空间,推荐使用 32G 以上内存和 500G 以上磁盘空间。 ```bash # 设置环境变量 source build/envsetup.sh # 选择编译目标 lunch aosp_arm-eng # 编译,-j64 表示使用 64 个 jobs 编译,可以根据自己的机器配置调整 make -j64 ``` ## 3 测试记录 #### 3.1 无缓存首次拉取代码,直接构建 ``` - 拉取代码耗时: 16m 52s , 125.14GB - 构建耗时: 30m 46s ``` #### 3.2 并发有缓存拉取代码,并且命中缓存构建 构建流水线:https://cnb.woa.com/aosp/android-14-monorepo/-/build/logs/cnb-i48-1i4jt8q02 并发 3 流水线,并发构建,依然可以命中缓存,一样快 ``` - 拉取代码耗时:5.5s , 125.14GB - 构建耗时: 1m 18s ``` ## 4. 附录:配置文件 ```yaml aosp_build_config: &aosp_build_config runner: cpus: 64 docker: image: docker.cnb.woa.com/aosp/aosp-build-docker-images volumes: - out:copy-on-write stages: - name: build script: | bash -c ' export BUILD_HOSTNAME=cnb-build export OUT_DIR=out source build/envsetup.sh lunch aosp_arm-eng make -j64 ' master: push: - *aosp_build_config - *aosp_build_config - *aosp_build_config ```