Android开发我们主要用到的编译器是Java的Java编译器以及C/C++的gcc/clang编译器。对应Java层构建工具最初是Ant,后面Maven以及gradle;C/C++构建工具主要是make/cmake,做过系统开发或者chromeium,可能还用过ninjia、gclient、mm等。最近在编译Android平台的tensorflow lite库,发现官方使用的是Bazel构建工具,大概了解了下,它不仅可以构建Native层还可以构建Java层库。今天我们简单介绍下什么是Bazel,后续我们逐步深入了解Bazel构建工具,使用Bazel构建我们的Android项目。
Bazel概述
Bazel是一个开源的构建和测试工具,类似于Make、Maven和Gradle。它使用人类可读的高级构建语言。Bazel支持多种语言的项目,并为多种平台构建输出。Bazel支持跨多个存储库和大量用户的大型代码库。
为什么选择Bazel?
Bazel构建工具有以下优势:
- 高级构建语言。Bazel使用一种抽象的、人类可读的语言来在高级语义级别描述项目的构建属性。与其他工具不同,Bazel操作的是库、二进制文件、脚本和数据集的概念,避免了编写对编译器和连接器等工具的单独调用的复杂性。
- Bazel快速可靠。Bazel将缓存所有以前完成的编译结果,并跟踪对文件内容和构建命令的更改。这样,Bazel可以知道什么时候需要重建,而且只重建该处改动。还可以将项目设置为以高度并行和增量的方式进行构建以进一步加快构建速度。
- Bazel是跨平台的。Bazel可以在Linux、macOS和Windows上运行。Baze