Buck vs Gradle,Android构建系统的专业和缺点

Gee*_*ing 34 android build gradle buck

我目前正在使用ant来构建Android项目,但它并没有为大型项目削减它,并且维护不同的可交付成果正变得很痛苦.

我正在关注的两个替代方案是Facebook的Buck(http://facebook.github.io/buck/)和谷歌支持Android工作室的Gradle(http://tools.android.com/tech-docs/new- build-system/user-guide).

除了尝试一下并阅读他们的报道之外,我想请问Stackoverflow人员您的建议.最好是如果你已经使用了一段时间的工具,还有Buck的奖励积分,因为它没有得到那么多的报道.

重点是

  • 构建速度,特别适用于开发版
  • 来自相同代码库的多个可交付成果
  • 便于使用

我也对其他选择持开放态度.你有什么建议,为什么?

bol*_*est 40

正如我在前面和中心放置了Buck文档:"Buck是Android的构建系统,它鼓励创建由代码和资源组成的小型可重用模块."

通过设计,Buck鼓励您创建小模块,以便您可以轻松地从现有构建块中构建新应用程序.这意味着维护多个可交付成果非常简单:它消除了样板,而无需您将存储库组织到预定义的结构中.您还可以通过宏通过宏和规则创建适合您需求的临时构建步骤.(一个更正式的扩展系统正在开发中.)

我们也非常关心速度,特别是增量构建的速度.因为Buck具有强大的依赖概念,我们通常可以避免重建中间工件.其他构建系统也尝试这样做(如Ant),但结果经常牺牲正确性.我们没有.

我们认识到IDE支持非常重要.当然谷歌与Gradle的合作让他们在那里获得了一席之地.但是,Buck有一个从Buck构建文件中定义的依赖图生成IntelliJ项目的命令,我们已经破坏了我们自己的IntelliJ插件,所以这是我们也非常关心的事情.

最后,请记住,巴克习惯于为Android构建Facebook,Facebook Messenger和Instagram.巴克不会消失.此外,所有三个应用程序的代码(以及应用程序的简化版本,甚至更快的开发周期)都存在于Facebook的一个Git存储库中,因此我们这些在内部工作的人对于支持多个可交付成果的大型代码库的需求非常敏感.

  • Buck有[fetch命令](https://buckbuild.com/command/fetch.html)可以做到这一点,@ schchuberth (2认同)

Gre*_*eek 7

从长远来看,新的Gradle构建系统将成为标准,它看起来非常好.但是,它看起来还没有准备好用于非trival项目.例如,它看起来还不支持apklib依赖.

这是可以理解的,并反映在当前版本为0.3的事实中,我期待看到它的发展.

对于今天需要构建的项目,我会使用Maven.实际上,我现在正在将客户端的构建从Eclipse迁移到Maven,这样他们就可以拥有可重复的构建过程,良好的依赖关系管理和CI.新的Gradle构建看起来会更灵活,但现在Maven处理apklibs.由于Gradle可以使用Maven依赖项,我希望将来我们能够轻松地从Maven迁移到Gradle.

我对巴克一无所知.然而,这本身就是一面红旗.我会毫不犹豫地使用很少有人知道的构建系统.这并不意味着它不好 - 它可能很棒.但现在使用它可能是一场赌博.


Pia*_*asy 6

这是一个gradle插件OkBuck,它可以让您在当前的Android Studio + Gradle构建系统上开始使用BUCK base,只需10行配置.看看这个.

OkBuck可以让你用gradle和buck建立你的项目,具有gradle和buck的所有优点.


tcb*_*tcb 5

我想补充一下 Buck 的以下优点:

  • Exopackage,即增量apk构建;只需检查该页面上包含构建时间的表格
  • 网络缓存。如果您有多个开发人员使用同一个应用程序,则无需重建其他开发人员已经构建的组件。