android - Buck vs Gradle,Android 构建系统的优缺点

我目前正在使用 ant 构建 Android 项目,但它根本不适合大型项目,并且维护不同的可交付成果变得很痛苦。

我正在研究的两个替代方案是 Facebook 的 Buck (http://facebook.github.io/buck/) 和 Google 支持 Android Studio (http://tools.android.com/tech-docs/new-build-system/user-guide) 的 Gradle。

除了试用它们并阅读它们的报道外,我还想向 Stackoverflow 的优秀人士请教您的建议。如果您已经使用过这两种工具有一段时间了,最​​好给 Buck 加分,因为它没有得到那么多的覆盖。

重点是

  • 构建速度,专门用于开发构建
  • 来自同一代码库的多个可交付成果
  • 易于使用

我也愿意接受其他选择。你有什么建议,为什么?

最佳答案

当我把 Buck documentation 放在前面和中间时:“Buck 是一个 Android 构建系统,它鼓励创建由代码和资源组成的小型、可重用模块。”

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

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

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

最后,请记住,Buck 用于构建适用于 Android 的 Facebook、Facebook Messenger 和 Instagram。巴克不会离开。此外,所有三个应用程序的代码(以及应用程序的简化版本,以加快开发周期)都位于 Facebook 的一个 Git 存储库中,因此我们这些在内部从事 Buck 工作的人对支持多个可交付成果的大型代码库的需求很敏感.

https://stackoverflow.com/questions/16681527/

相关文章:

eclipse - Java Eclipse 在保存时关闭自动构建工作区

gcc - 如何在编译期间强制 cmake 包含 "-pthread"选项?

c - 如何在 Windows 中使用 MSVC 从命令行构建 DLL

deployment - 构建和部署的区别?

java - 使Maven构建更快的方法?

build - WiX x64 平台目标

java - 将复杂的项目从Ant迁移到Maven-如何处理异常的文件夹结构?

build-process - 在 hudson 的工作之间共享构建工件

ant - 如何在使用 ANT 删除目录之前检查目录是否存在?

c++ - 如何在 Mac OS X (C++) 中使用 dylib