2013-05-22 4 views
30

В настоящее время я использую ant для разработки Android-проектов, но он просто не сокращает его для крупных проектов, а сохранение разных результатов становится болью.Buck vs Gradle, pro и cons для систем Android для сборки

Две альтернативы, которые я рассматриваю, - это Бакки Facebook (http://facebook.github.io/buck/) и Gradle, которые Google поддерживает с помощью студии Android (http://tools.android.com/tech-docs/new-build-system/user-guide).

Помимо проверки их и чтения на их покрытие, я хотел бы попросить вас прекрасных людей Stackoverflow для ваших рекомендаций. Предпочтительно, если вы использовали какой-либо инструмент некоторое время, с бонусными очками для Buck, так как он не получил такого большого покрытия.

Важные моменты

  • скорость сборки, специально для DEV строит
  • несколькими элементами из той же кодовой базе
  • простота использования

Я открыт для других альтернатив, а также , Что вы предлагаете и почему?

+0

Мне нравится град (не знаю, бакс). gradle немного медленнее, но вы можете ускорить работу с демоном gradle (http://www.gradle.org/docs/current/userguide/gradle_daemon.html) –

ответ

7

Долгосрочная, новая система сборки Gradle будет стандартной, и она выглядит очень хорошо. Однако, похоже, он еще не совсем готов к использованию в проектах, отличных от trival. Например, похоже, что он еще не поддерживает зависимостей apklib.

Это понятно и отражено в том, что текущая версия 0.3 Я с нетерпением жду ее развития.

Для проекта, который должен быть построен сегодня, я бы использовал Maven. На самом деле, я сейчас собираюсь построить клиентскую сборку из Eclipse только в Maven, чтобы они могли иметь повторяющийся процесс сборки, хорошее управление зависимостями и CI. Новая конструкция Gradle выглядит так, что она будет более гибкой, но прямо сейчас Maven обрабатывает апклибы. Поскольку Gradle может использовать зависимости Maven, я ожидаю, что мы сможем легко перейти от Maven к Gradle в будущем.

Я ничего не знаю о Баке. Однако это само по себе является красным флагом. Я смущаюсь использовать систему сборки, о которой мало кто знает. Это не значит, что это нехорошо - это может быть здорово. Но использовать его сейчас, вероятно, является азартной игрой.

+0

Как вы нашли скорость сборки отладочных сборников под Gradle ? Ant довольно медленный, и я знаю, что Buck намного быстрее. Поскольку вы использовали Gradle, как бы вы сказали, что скорость для построения отладочных сборков при разработке –

+0

Я на самом деле не использовал Gradle, просто Maven. Я использую IntelliJ и могу использовать сборку IDE (что довольно быстро) во время обычного цикла разработки/тестирования и по-прежнему использовать сборку Maven (которая медленнее) для окончательного тестирования, CI и выпусков. – GreyBeardedGeek

34

Как я положил фронт и центр в Buck documentation: «Buck - это система сборки для Android, которая поощряет создание небольших многоразовых модулей, состоящих из кода и ресурсов».

По дизайну Buck рекомендует создавать небольшие модули, чтобы вы могли легко создавать новое приложение из существующих строительных блоков. Это означает, что поддержание нескольких конечных результатов является простым: оно исключает шаблонный шаблон, не требуя, чтобы вы упорядочили свой репозиторий в предопределенную структуру. Вы также можете создавать специальные шаги сборки в соответствии с вашими потребностями с помощью Buck через макросы и жанры. (Более формализованная система расширений находится в работе.)

Мы также очень заботимся о скорости, особенно скорости инкрементных сборок. Поскольку у Бака есть сильная концепция зависимостей, мы часто можем избежать восстановления промежуточных артефактов. Другие системы сборки также пытаются сделать это (например, Ant), но часто жертвуют правильностью, в результате. Мы этого не делаем.

Мы признаем, что поддержка IDE важна. Конечно, сотрудничество Google с Gradle дает им ногу.Однако у Buck есть команда для создания проекта IntelliJ из графика зависимости, определенного в файлах сборки Buck, и мы сломались на нашем собственном плагине IntelliJ, так что это то, о чем мы также очень заботимся.

Наконец, имейте в виду, что Бак используется для создания Facebook, Facebook Messenger и Instagram для Android. Бак не уходит. Кроме того, код для всех трех приложений (и сокращенных версий приложений для еще более быстрых циклов разработки) живет в одном репозитории Git в Facebook, поэтому те из нас, кто работает над Buck, внутренне чувствительны к потребностям больших кодовых баз, которые поддерживают множество результатов ,

+0

+1, плюс Buck также используется для Gerrit – orip

+1

Обратите внимание, что Buck по-прежнему не имеет управления зависимостями в том смысле, что JARs/AARs можно динамически извлекать из Maven Central/JCenter и кэшировать локально для использования со сборкой. Я считаю, [у людей Gerrit есть простой пользовательский код] (https://groups.google.com/d/msg/repo-discuss/Ab4y-D8lcWI/f2YLOPICFr8J), который по крайней мере загружает JAR, но не кэширует их. – sschuberth

+1

Buck имеет команду [fetch] (https://buckbuild.com/command/fetch.html), которая может это сделать, @sschuberth – sdwilsh

2

Я хотел бы добавить следующие преимущества Бак:

  • Exopackage, т.е. инкрементного сборки АПК; просто проверьте таблицу со временем сборки на этой странице
  • Network cache. Если у вас несколько разработчиков, работающих с приложением, вам не нужно будет перестраивать компоненты, которые уже созданы другими разработчиками.
+0

Вина также увидела несколько приятных побед из-за exopackage: http://engineering.vine.co/пост/117873038742/восстановительно-сборка раза-по-принимающего-бакс – sdwilsh

5

Вот Gradle плагин OkBuck, который может позволить вам начать использовать BUCK базу на текущей Android Studio + Gradle построить систему только с строк конфигурации. Проверьте это.

OkBuck может позволить вам построить свой проект как с помощью градиента, так и со всех преимуществ градиента и доллара.

Смежные вопросы