xcbuild可用性分析报告
项目简介
xcbuild
是Facebook 出品的开源 App 构建工具,一款能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容 Xcode 的构建工具。
官方对其特性介绍如下:
- 超快的增量构建和构建频率;
- 支持构建Xcode项目和workspace;
- 支持Swift应用与框架;
- 使用Ninja和llbuild;
- 完全兼容xcpretty;
- 基于BSD开源许可;
- 基于Linux平台构建。
官方给出的性能比较:
XCBuild安装配置步骤:(MacOS下)
- 安装homeBrew:http://brew.sh/,直接按照官网步骤去终端里运行即可。
- 安装CMake和Ninja:
brew install cmake ninja
- 从git上check xcbuild工程:
git clone https://github.com/facebook/xcbuild
cd xcbuild
git submodule update --init
make```
XCBuild使用方法
在xcbuild目录下输入 ./build/xcbuild -workspace [workspaceName] -scheme [schemeName]
进行编译即可。
实验
为了测试xcbuild是否真的有fb说的那么神,特用动态资源下载的framework来做实验。
- 样本对象:动态资源下载 RMResourceManager
- 对照组:xcodebuild和xcbuild
- 测试方法:在同一条件下分别build RMResourceManager,用time打印命令执行时间。需要注意的是,每次build完需要删除路径上build出来的framework和clean项目,以免造成其它结果的干扰
- time中会打印三种时间,分别为real,user,sys。本文以real为准。
结果
平台 | 完全build耗费时间 | 增量build耗费时间 |
---|---|---|
xcodebuild | 3.125s | 1.056s |
xcbuild | 4.974s | 4.814s |
xcbuild+ninja | 3.696s | 0.329s |
结果分析
- xcbuild一定要和ninja一起用,不然相比xcodebuild没有优势;
- 完全build(即clean build)下,xcbuild+ninja并没有太大优势;但是增量更新上,xcbuild+ninja可以说是压倒式的胜利。
- fb在宣传上确实没有放水,在增量性能上性能很高。
- 但是鉴于技术过于新,稳定性不能保证,所以建议先保持关注。
附录
测试时使用的命令:
- xcodebuild:
time xcodebuild -workspace RMResourceManager.xcworkspace -scheme RMResourceManager
- xcbuild:
time ./xcbuild/build/xcbuild -workspace /Users/mengdao/Desktop/RMResourceManager_9.6_160229/RMResourceManager.xcworkspace -scheme RMResourceManager
- xcbuild+ninja:
time ./build/xcbuild -executor ninja -workspace /Users/mengdao/Desktop/RMResourceManager_9.6_160229/RMResourceManager.xcworkspace -scheme RMResourceManager