更新 src/compile/sharebuild-aosp14.md
Some checks failed
CI/CD Pipeline for mengning.com.cn / build (pull_request) Has been cancelled

This commit is contained in:
ych
2025-12-06 13:53:36 +00:00
parent d2e6ecbeba
commit 855c9b0869

View File

@@ -1,66 +1,67 @@
# 以AOSP14项目为例ShareBuild分布式编译详细配置方法 # 以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 wget -c https://raw.githubusercontent.com/ninja-cloudbuild/ninja2/refs/heads/main/install.sh && chmod +x install.sh && sudo ./install.sh
``` ```
* 启用ShareBuild的前置要求 * 确保所有节点上均安装配置好了项目的编译环境即所有节点上均能采用ninja成功单机编译项目。
1. 所有节点上均安装配置好了项目的编译环境即所有节点上均能采用ninja成功单机编译项目。
<!--
2. 选择任一节点上作为项目开发环境,项目中使用.devcontainer/devcontainer.json 配置了image镜像示例如下依次镜像创建的开发容器中能采用ninja成功单机编译项目。
* 将.sharebuild.yml 复制到 AOSP 根目录
``` ```
{ cp /etc/ninja2/aosp14/.sharebuild.yml android-14.0.0_r2
"name": "DevContainer", ```
"image": "devstar.cn/devstar/DevContainer:latest" # 仅作示例,务必使用您已安装配置好项目编译环境的容器镜像! * 进入AOSP14项目根目录替换 AOSP 内部 ninja 为 android_ninja
} ```
cd android-14.0.0_r2
cp /usr/bin/android_ninja prebuilts/build-tools/linux-x86/bin/ninja
``` ```
> 注意以上两种方式二选一即可第2种方式省掉了在其他节点上安装配置项目编译环境但是首次ShareBuild模式分布式编译时其他节点会自动下载项目编译环境的容器镜像。
-->
* 选择任一节点上作为项目开发环境开启ShareBuild模式然后进行分布式编译。
* 开启ShareBuild模式然后进行分布式编译。
项目根目录下创建ninja2.conf 文件如下即可开启ShareBuild模式 项目根目录下创建ninja2.conf 文件如下即可开启ShareBuild模式
``` ```
sharebuid:true sharebuid:true
``` ```
这时使用ninja编译将自动进入ShareBuild模式分布式编译项目。
> 如果直接使用ninja命令编译项目也可以加上-s参数表示启用ShareBuild模式示例如下 * 在项目根目录下进行分布式编译。
``` ```bash
ninja -s -r `realpath ../` #启动分布式编译,注意-r 指定项目根目录 su # 切换到 root 关闭沙箱
ninja -t clean #清除编译产物 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
<!--
## 使用ShareBuild编译鸿蒙开源项目OpenHarmony
todo
-->
## 版权声明 ## 版权声明
Copyright @ Mengning Software Copyright @ Mengning Software