From 855c9b086906a5ea4972fdc05294f50cfcd85895 Mon Sep 17 00:00:00 2001 From: ych <2416006706@qq.com> Date: Sat, 6 Dec 2025 13:53:36 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/compile/sharebuild-aos?= =?UTF-8?q?p14.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/compile/sharebuild-aosp14.md | 81 ++++++++++++++++---------------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/src/compile/sharebuild-aosp14.md b/src/compile/sharebuild-aosp14.md index 6dcb6a4..2e481e1 100644 --- a/src/compile/sharebuild-aosp14.md +++ b/src/compile/sharebuild-aosp14.md @@ -1,66 +1,67 @@ # 以AOSP14项目为例ShareBuild分布式编译详细配置方法 -## ShareBuild的适用场景 +## 编译环境准备 -在同一局域网内工作的小型团队,ShareBuild以P2P共享架构将空闲算力贡献给团队其他成员,从而为每个团队成员提供编译加速效果。 +### 安装编译依赖 +* 参与编译的同一个局域网内的A、B、C等所有节点上安装编译环境依赖: +```bash +# 安装核心开发工具和库 +sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig -## ShareBuild QuickStart +# 安装Android 14所需的Java环境 +sudo apt-get install openjdk-17-jdk -* 同一个局域网内的A、B、C等所有节点上安装ninja2: +# 确保Python 3环境正确安装 +sudo apt-get install python3 python3-pip +``` +### 下载 AOSP 源码 +* 选择任一节点作为客户端节点,下载AOSP14源码: +```bash +mkdir ~/bin && curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo && chmod a+x ~/bin/repo +export PATH=~/bin:$PATH +repo init --depth=1 --partial-clone -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r2 +repo sync -j16 +``` +### 配置 Sharebuild 环境 + +* 参与编译的同一个局域网内的A、B、C等所有节点上安装ninja2和sharebuild: ``` wget -c https://raw.githubusercontent.com/ninja-cloudbuild/ninja2/refs/heads/main/install.sh && chmod +x install.sh && sudo ./install.sh ``` -* 启用ShareBuild的前置要求 - - 1. 所有节点上均安装配置好了项目的编译环境,即所有节点上均能采用ninja成功单机编译项目。 - - -* 选择任一节点上作为项目开发环境,开启ShareBuild模式,然后进行分布式编译。 +* 开启ShareBuild模式,然后进行分布式编译。 项目根目录下创建ninja2.conf 文件如下即可开启ShareBuild模式: ``` sharebuid:true ``` -这时使用ninja编译将自动进入ShareBuild模式分布式编译项目。 -> 如果直接使用ninja命令编译项目,也可以加上-s参数表示启用ShareBuild模式,示例如下: -``` -ninja -s -r `realpath ../` #启动分布式编译,注意-r 指定项目根目录 -ninja -t clean #清除编译产物 +* 在项目根目录下进行分布式编译。 +```bash +su # 切换到 root 关闭沙箱 +source build/envsetup.sh # 初始化环境 +lunch aosp_arm-eng # 选择目标配置 + +make # 执行编译任务 + + +rm -r out #清除编译产物 ```` -* 对一些特殊项目的补充说明 -除以上常规的ShareBuild配置外,对于一些特殊项目需要做一些额外的配置,补充说明如下: -## 使用ShareBuild编译Android开源项目(AOSP) - -除按照以上方法准备好编译环境和开启ShareBuild模式外,以AOSP14项目为例,还需要替换ninja和准备.sharebuild.yml来过滤掉一些无法远程编译的命令,具体操作如下: - -``` -cp /usr/bin/android_ninja prebuilts/build-tools/linux-x86/bin/ninja -cp /etc/ninja2/aosp14/.sharebuild.yml ./ -``` - -然后就可以单机编译一样使用make命令来分布式编译Android开源项目(AOSP)。 - ## 版权声明 Copyright @ Mengning Software