2025-12-05 02:10:49 +00:00
|
|
|
|
# 以AOSP14项目为例ShareBuild分布式编译详细配置方法
|
2025-12-05 02:00:24 +00:00
|
|
|
|
|
|
|
|
|
|
## ShareBuild的适用场景
|
|
|
|
|
|
|
|
|
|
|
|
在同一局域网内工作的小型团队,ShareBuild以P2P共享架构将空闲算力贡献给团队其他成员,从而为每个团队成员提供编译加速效果。
|
|
|
|
|
|
|
|
|
|
|
|
## ShareBuild QuickStart
|
|
|
|
|
|
|
|
|
|
|
|
* 同一个局域网内的A、B、C等所有节点上安装ninja2:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
wget -c https://raw.githubusercontent.com/ninja-cloudbuild/ninja2/refs/heads/main/install.sh && chmod +x install.sh && sudo ./install.sh
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 启用ShareBuild的前置要求
|
|
|
|
|
|
|
|
|
|
|
|
1. 所有节点上均安装配置好了项目的编译环境,即所有节点上均能采用ninja成功单机编译项目。
|
|
|
|
|
|
<!--
|
|
|
|
|
|
|
|
|
|
|
|
2. 选择任一节点上作为项目开发环境,项目中使用.devcontainer/devcontainer.json 配置了image镜像(示例如下),依次镜像创建的开发容器中能采用ninja成功单机编译项目。
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "DevContainer",
|
|
|
|
|
|
"image": "devstar.cn/devstar/DevContainer:latest" # 仅作示例,务必使用您已安装配置好项目编译环境的容器镜像!
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
> 注意:以上两种方式二选一即可,第2种方式省掉了在其他节点上安装配置项目编译环境,但是首次ShareBuild模式分布式编译时其他节点会自动下载项目编译环境的容器镜像。
|
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
|
|
* 选择任一节点上作为项目开发环境,开启ShareBuild模式,然后进行分布式编译。
|
|
|
|
|
|
|
|
|
|
|
|
项目根目录下创建ninja2.conf 文件如下即可开启ShareBuild模式:
|
|
|
|
|
|
```
|
|
|
|
|
|
sharebuid:true
|
|
|
|
|
|
```
|
|
|
|
|
|
这时使用ninja编译将自动进入ShareBuild模式分布式编译项目。
|
|
|
|
|
|
|
|
|
|
|
|
> 如果直接使用ninja命令编译项目,也可以加上-s参数表示启用ShareBuild模式,示例如下:
|
|
|
|
|
|
```
|
|
|
|
|
|
ninja -s -r `realpath ../` #启动分布式编译,注意-r 指定项目根目录
|
|
|
|
|
|
ninja -t clean #清除编译产物
|
|
|
|
|
|
````
|
|
|
|
|
|
|
|
|
|
|
|
* 对一些特殊项目的补充说明
|
|
|
|
|
|
|
|
|
|
|
|
除以上常规的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
|
|
|
|
|
|
|
|
|
|
|
|
梦宁软件(江苏)有限公司 版权所有
|