在Android平台开发环境安装ninja
2017-09-25 18:31:52 +08 字数:1175 标签: Android Ninja在Android 7.0以后,Ninja成为了Android底层真正控制编译流程的工具。 直接使用ninja命令,而非make,可以在某些情况下,提高编译验证、debug的效率。
本文介绍安装ninja的五种方法。
管理员安装 ¶
一般,Android平台标准的开发环境是Ubuntu。 管理员可以通过以下命令,直接安装。
sudo apt-get install ninja-build
如果是Max OS X(Darwin)环境,也可以用Homebrew安装。
brew install ninja
无root权限安装 ¶
在没有root权限的情况下,一共有四种安装方法,推荐使用第一种。
利用pip安装 ¶
对于某些没有访问外网条件的环境,需要先配置pip,确保pip能正常安装Python官方源的包。
pip install --user ninja
这个PyPI上的ninja,不算是官方的发布,源于ninja-python-distributions。 如果没有root权限,这个是最简单快捷的安装方法。
如果要说有什么缺点的话,那就是它会在真正的ninja
可执行文件外面包一层没有实质功能的Python。
在一些情况下,比如Ctrl+c
中断执行时,会额外打印一段Python的trace。
直接从项目中复制 ¶
由于Android项目自带ninja的可执行文件,所以,不安装直接使用,也是可能的。
在项目根目录,执行find命令,可以找到ninja可执行文件。
$ find prebuilts -name ninja
prebuilts/build-tools/linux-x86/asan/bin/ninja
prebuilts/build-tools/linux-x86/bin/ninja
prebuilts/build-tools/darwin-x86/bin/ninja
如果工作站为Ubuntu,通常使用中间的那个。 如果是Mac OS X,则使用第三个。 使用起来的大概情况如下。
prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-aosp_arm64.ninja
如果有反复使用的需求,则可以复制该文件到可执行目录下。
比如,用户目录的bin,在Ubuntu上通常就是一个可执行路径。
注意,libc++.so
是必须准备的调用库,必须放在与可执行目录同级的lib64。
mkdir -p ~/bin ~/lib64
cp prebuilts/build-tools/linux-x86/bin/ninja ~/bin/
cp prebuilts/build-tools/linux-x86/lib64/libc++.so ~/lib64/
这样就可以直接使用ninja
了。
从GitHub下载产物 ¶
在Ninja项目的Releases页面,可以直接下载到编译好的主要Ninja版本。 如果有必须使用最新版本v1.8.2的需求,这是最好的办法。 apt、Homebrew、pip和项目自带的ninja,目前(2017年9月)最新版本为1.7.2。
This is a major release after v1.7.2, mainly for performance improvements, support for more path components, and several bugfixes.
v1.8.2版本主要是提升了编译性能。 详情可参考《release: ninja v1.8.2 - Google Groups》。
wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
解压可得ninja
可执行文件,复制到可执行环境下即可运行。
从源码编译安装 ¶
这是最不推荐的做法,因为最麻烦。 除非需要改动源码,自定义功能,否则下载官方发布的版本就好了。
然而,俺们是在中国。
由于GitHub的Releases产物,托管在AWS上。 这意味着,在中国下载,会概率性失败。 如果产物过大,还有高概率下载到一半失败。 所以……
在GitHub的ninja-build/ninja下载源码,并传到工作站中。
在源码根目录,执行编译。
./configure.py --bootstrap
复制项目根目录下编译好的ninja到可执行路径下。
cp ninja ~/bin/