2013-05-22 21 views
30

Obecnie używam mrówki do budowania projektów Android, ale po prostu nie zmniejsza to w przypadku większych projektów i utrzymanie różnych rezultatów staje się uciążliwe.Buck kontra Gradle, pro i cons dla systemów kompilacji Androida

Dwie alternatywy, na które patrzę, to Buck Facebooka (http://facebook.github.io/buck/) i Gradle, że Google współpracuje z Androidem studio (http://tools.android.com/tech-docs/new-build-system/user-guide).

Oprócz wypróbowania ich i przeczytania ich zakresu, chciałbym prosić o dobre osoby Stackoverflow dla twoich zaleceń. Najlepiej jeśli przez jakiś czas korzystałeś z któregoś z narzędzi, z dodatkowymi punktami dla Bucka, ponieważ nie uzyskał on tak dużego zasięgu.

Ważne punkty są

  • budować prędkość, specjalnie dla dev buduje
  • wielu rezultaty z bazy samym kodem
  • łatwość użycia

jestem otwarty na inne alternatywy, jak również . Co sugerujesz i dlaczego?

+0

Lubię gradle (nie wiem, buck). gradle jest nieco powolny, ale możesz przyspieszyć działanie dzięki demonowi gradle (http://www.gradle.org/docs/current/userguide/gradle_daemon.html) –

Odpowiedz

7

Długoterminowy nowy system budowy Gradle będzie standardem i wygląda bardzo dobrze. Jednak wygląda na to, że nie jest jeszcze gotowy do użycia w projektach innych niż trival. Na przykład wygląda na to, że nie obsługuje jeszcze zależności apklib.

Jest to zrozumiałe i odzwierciedla fakt, że obecna wersja to 0,3 Nie mogę się doczekać, aby zobaczyć, jak się rozwija.

W przypadku projektu, który powinien zostać zbudowany dzisiaj, użyłbym Mavena. Aktualnie jestem w trakcie przenoszenia wersji klienta z Eclipse-only do Maven, aby mogli mieć powtarzalny proces kompilacji, dobre zarządzanie zależnościami i CI. Nowa konstrukcja Gradle wygląda na bardziej elastyczną, ale teraz Maven obsługuje apklibs. Ponieważ Gradle może korzystać z zależności Mavena, spodziewam się, że w przyszłości będziemy w stanie przenieść się z Maven do Gradle.

Nie wiem nic o Bucku. Jednak to samo w sobie jest czerwoną flagą. Wahałbym się używać systemu budowania, o którym niewiele osób wie. To nie znaczy, że nie jest dobra - może być świetna. Ale używanie go teraz jest prawdopodobnie hazardem.

+0

Skąd wziąłeś pod uwagę szybkość kompilacji debugowania pod Gradle? ? Mrówka jest dość powolna i wiem, że Buck jest o wiele szybszy. Od kiedy używałeś Gradle, jak byś powiedział, że prędkość jest dla budowania debugowania przy rozwijaniu –

+0

Nie używałem Gradle, tylko Maven. Używam IntelliJ i mogę używać kompilacji IDE (która jest dość szybka) podczas normalnego cyklu programowania/testowania i nadal używać kompilacji Mavena (która jest wolniejsza) do testowania końcowego, CI i wydań. – GreyBeardedGeek

34

Po umieszczeniu z przodu i środka w Buck documentation: "Buck to system kompilacji dla Androida, który zachęca do tworzenia małych, wielokrotnego użytku modułów składających się z kodu i zasobów."

Z założenia Buck zachęca do tworzenia małych modułów, dzięki czemu można łatwo komponować nową aplikację z istniejących bloków. Oznacza to, że utrzymywanie wielu elementów dostarczanych jest proste: eliminuje elementarną tabelę bez konieczności organizowania repozytorium w predefiniowaną strukturę. Możesz również tworzyć kroki budowania ad-hoc, aby dopasować je do swoich potrzeb, używając języka Buck poprzez makra i genrules. (Bardziej sformalizowany system rozszerzeń jest w trakcie pracy.)

Dbamy również o szybkość, szczególnie prędkość przyrostowych buildów. Ponieważ Buck ma silną koncepcję zależności, często możemy uniknąć odbudowywania pośrednich artefaktów. Inne systemy kompilujące również starają się to zrobić (jak Ant), ale w rezultacie często rezygnują z poprawności. My nie.

Uznajemy, że wsparcie IDE jest ważne. Z pewnością współpraca Google z firmą Gradle daje im szansę.Jednak Buck ma polecenie generowania projektu IntelliJ z wykresu zależności zdefiniowanego w plikach budujących Buck, a my włamaliśmy się do naszej własnej wtyczki IntelliJ, więc to jest coś, o co troszczy się również głęboko.

Pamiętaj, że Buck jest używany do budowania Facebooka, Facebook Messenger i Instagram na Androida. Buck nie odchodzi. Co więcej, kod dla wszystkich trzech aplikacji (i zredukowanych wersji aplikacji, dla jeszcze szybszych cykli programistycznych), żyje w jednym repozytorium Git na Facebooku, więc ci z nas, którzy pracują nad Buckiem wewnętrznie, są wrażliwi na potrzeby dużych baz kodów, które obsługują wiele rezultatów. .

+0

+1, plus Buck jest również używany do Gerrit – orip

+1

Należy zauważyć, że Buck nadal nie ma zarządzania zależnościami w tym sensie, że JAR/AAR mogą być dynamicznie pobierane z Maven Central/JCenter i buforowane lokalnie do użytku z kompilacją. Uważam, że [ludzie Gerrita mają prosty kod niestandardowy] (https://groups.google.com/d/msg/repo-discuss/Ab4y-D8lcWI/f2YLOPICFr8J), który przynajmniej pobiera pliki JAR, ale ich nie buforuje. – sschuberth

+1

Buck ma polecenie [fetch] (https://buckbuild.com/command/fetch.html), które może to zrobić, @sschuberth – sdwilsh

2

Dodam następujące zalety Buck:

  • Exopackage, tj przyrostową apk kompilacji; po prostu sprawdź tabelę z czasem kompilacji na tej stronie:
  • Network cache. Jeśli masz kilku programistów pracujących z aplikacją, nie będziesz musiał odbudowywać komponentów, które są już zbudowane przez innych programistów.
+0

Vine również zobaczył kilka fajnych zwycięstw z powodu egzopakowania: http://engineering.vine.co/post/117873038742/reduce-build-times-by-adoptting-buck – sdwilsh

5

Oto Gradle wtyczki OkBuck, które mogą pozwolić Ci zacząć używać bazy BUCK na aktualnej Android Studio + Gradle systemu budowania tylko linii konfiguracji. Sprawdź to.

OkBuck może pozwolić Ci zbudować swój projekt zarówno ze stopniem i złotem, ze wszystkimi zaletami gradla i złotówki.

Powiązane problemy