Facebook推出Android构建工具——Buck

Facebook推出了一个Android构建工具——Buck。该工具能够将Android项目的代码和资源有机的结合起来, 构建出简洁的,高可重用性的功能模块。

Buck的特色:

Buck能够帮助开发人员达成以下目标:

  • 加速Android构架过程。Buck能够充分利用多核CPU,以并行的方式构建项目工程。另外,Buck还能自动追踪项目构建过程,判断哪些部分在构建时没有发生改变,从而避免重复构建,进而降低构建所需要的时间。
  • 引入了ad-hoc构建步骤,这一特性是目前Android采用的标准Ant脚本构建不支持的。
  • 采用了构架规则的思想,通过在构建系统中创建不同的构建规则来进行构建工作,而不是需要一个单独的系统来产生build文件。
  • 为单元测试创建“代码测试覆盖标尺”。
  • 能够根据构建规则,自动生成IntelliJ项目。该特性让Buck不但在自动的持续集成框架中成为理想的构建工具,同时也是IDE集成开发环境的最佳构建选择。
  • 能够维护你的构建依赖项。
  • 能够帮助开发者明了APK构建过程中的原理和细节。

构建速度的提升无疑是Buck最主要的优势。在Facebook方面,项目组采用Buck进行构建,其速度比采用Ant脚本进行构建快两倍。目前Facebook仍在努力让Buck的速度进一步提高。

Buck的工作原理:

在Buck中,有三个主要的概念

  • 构建规则:构建规则是指从输入文件产生输出文件的过程
  • 构建目标:构建目标是构建规则的一个字符串形式的标识符。它可以被认为是在使用Buck构建的项目中的”URI”.
  • 构建文件:构建文件定义了一个或者多个构建规则。在Make阶段,就相当于是Makefile, 只不过在Buck里,这些文件以BUCK命名。一个使用Buck进行构建的项目中,应该有很多BUCK文件。

每个构建规则都能产生0到多个与其相关的依赖项(简称为deps). 这些依赖项会形成一张有向图,Buck要求该图没有环装结构。

当使用构建规则构建输出文件时,所有的构建规则所关联的依赖项会首先被编译。这也就意味着上面提到的图结构会“从底向上”进行构建。构建规则只关心某个元素依赖谁,而不关心谁依赖这个元素。这种方式也正是采用有向图数据结构的原因。该数据结构能够让Buck有效地辨认出依赖子图,并采用并行的方式进行构建,同时也能判定出哪些资源需要构建,哪些已经构建过了,不需要再次构建,从而找出最小构建集,提高构建效率。

Buck对我有用么?

Buck的设计初衷是为了在单一代码库的基础上提供多点交付功能(而不是多代码库多点交付)。根据Facebook的项目经验,使用单一代码库会让依赖项的管理容易很多,这样项目的所有开发者就能保证共享统一而正确的依赖库,并且原子提交的过程也可以做到简化。

如果你要构建多个应用程序,抑或你要用多个应用样例来开发一个应用成品,那么Buck就绝对适合你。通过查看Quick Start,你就能了解Buck如何帮助你组织你的Android项目,以及如何以更快的速度构建你的Android项目!

 

英文原文:Facebook,编译:ImportNew - 黄小非

译文地址:http://www.importnew.com/3948.html

【如需转载,请在正文中标注并保留原文链接、译文链接和译者等信息,谢谢合作!】

关于作者: 黄小非

码农级科学家,半吊子艺术爱好者,逻辑和原则控。(新浪微博:@黄小非

查看黄小非的更多文章 >>



相关文章

发表评论

Comment form

(*) 表示必填项

还没有评论。

跳到底部
返回顶部