Подтвердить что ты не робот

Buck vs Gradle, за и против для систем Android для сборки

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

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

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

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

  • скорость сборки, особенно для dev builds
  • несколько конечных продуктов с той же базой кода
  • простота использования

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

OkBuck может позволить вам построить свой проект как с gradle, так и с buck со всеми преимуществами gradle и buck.

Ответ 4

Я бы добавил следующие преимущества Buck:

  • Exopackage, то есть инкрементная сборка apk; просто проверьте таблицу со временем сборки на этой странице
  • Сетевой кеш. Если у вас несколько разработчиков, работающих с приложением, вам не нужно будет перестраивать компоненты, которые уже созданы другими разработчиками.