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
- несколько конечных продуктов с той же базой кода
- простота использования
Я также открыт для других альтернатив. Что вы предлагаете и почему?
Ответы
Ответ 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; просто проверьте таблицу со временем сборки на этой странице
- Сетевой кеш. Если у вас несколько разработчиков, работающих с приложением, вам не нужно будет перестраивать компоненты, которые уже созданы другими разработчиками.