2013-05-22 7 views
30

私は現在、Androidプロジェクトをビルドするのにantを使用していますが、大規模プロジェクトではそれをカットしておらず、異なる成果物を維持することは苦労しています。Buck vs Gradle、Androidビルドシステムのプロとコンシール

私が見ている2つの選択肢はFacebookのBuck(http://facebook.github.io/buck/)とGoogleがAndroidスタジオ(http://tools.android.com/tech-docs/new-build-system/user-guide)をサポートしているGradleです。

あなたのお勧めのためにStackoverflowの人々に丁寧にお尋ねしたいと思います。あなたがしばらくの間、いずれかのツールを使用したことがある場合、それは多くのカバレッジを取得していないので、バックのボーナスポイントが付いていることが好ましいです。

重要なポイントは、具体的使用

のDEVが同じコードベースから

  • 複数の成果物を作成します
  • 容易にするために、私は他の選択肢に開いている、

    • ビルドスピードです。何を提案し、なぜですか?

  • +0

    私はgradle(do not know buck)が好きです。 gradleは少し遅いですが、あなたはgradleデーモン(http://www.gradle.org/docs/current/userguide/gradle_daemon.html)で物事をスピードアップすることができます –

    答えて

    7

    長期的には、新しいGradleビルドシステムが標準となり、非常によく見えます。 しかし、まだtrival以外のプロジェクトで使用する準備が整っていないようです。例えば、apklibの依存関係をまだサポートしていないようです。

    これはわかりやすく、現在のバージョンが0.3であることに反映されています。 私はそれが進化するのを楽しみにしています。

    今日ビルドする必要があるプロジェクトでは、Mavenを使用します。実際には、クライアントのビルドをEclipseからMavenに移動するプロセスが進行中です。そのため、ビルドプロセス、良い依存関係管理、およびCIを繰り返し実行できます。 新しいGradleビルドはもっと柔軟になりそうですが、今はMavenがapklibを処理しています。 GradleはMavenの依存関係を使用することができるので、今後MavenからGradleに簡単に移行できると期待しています。

    私はBuckについて何も知らない。しかし、それ自体は赤旗です。私は何人かの人が知っているビルドシステムを使うのを躊躇しています。それは良いことではありません - それは素晴らしいかもしれません。しかし、それを使うことはおそらく賭博です。

    +0

    どのようにして、Gradleの下でデバッグビルドのビルド速度を見つけましたか?アリはかなり遅く、Buckはずっと速いことが分かっています。あなたはGradleを使っていたので、開発中にデバッグビルドをビルドする速度はどうですか? –

    +0

    私は実際にGradleを使用していません。ただMavenです。私はIntelliJを使用しており、通常の開発/テストサイクルでIDEのビルド(非常に速い)を使用することができ、最終テスト、CI、およびリリースにはMavenビルド(それは遅い)を使用します。 – GreyBeardedGeek

    34

    Buck documentationに正面と中央を入れてみましょう。「Buckは、コードとリソースで構成された小さくて再利用可能なモジュールの作成を奨励​​するAndroidのビルドシステムです。

    Buckは、小さなモジュールを作成して、既存のビルディングブロックから簡単に新しいアプリケーションを作成できるようにします。つまり、複数の成果物を維持することは簡単です。リポジトリを事前定義された構造に編成する必要なく、定型文が削除されます。また、マクロやgenrulesを使用してBuckでニーズに合わせてアドホックなビルドステップを作成することもできます。

    また、速度、特にインクリメンタルビルドの速度については、多くのことを気にしています。 Buckは強い依存関係を持っているため、中間アーティファクトを再構築することはしばしば避けられます。他のビルドシステムも(Antのように)これを実行しようとしますが、結果としてしばしば正確さを犠牲にします。私たちはしません。

    私たちは、IDEのサポートが重要であることを認識しています。間違いなくGoogleのGradleとのコラボレーションでは、そこに足を踏み入れることができます。しかし、Buckは、Buckビルドファイルで定義された依存関係グラフからIntelliJプロジェクトを生成するコマンドを持っており、私たち自身のIntelliJプラグインを壊してしまったので、これも深く心配しているものです。

    最後に、BuckはFacebook、Facebook Messenger、Instagram for Androidの構築に使用されています。バックは遠ざかっていない。さらに、3つのすべてのアプリケーション(およびアプリケーションの縮小版、さらに高速な開発サイクル)のコードは、Facebookの1つのGitリポジトリに存在するため、内部的にBuck氏に取り組んでいる人々は、複数の成果物をサポートする大規模なコードベース。

    +0

    +1、さらにBuckはGerritでも使用されています – orip

    +1

    BuckはMaven Central/JCenterからJAR/AARを動的に取得し、ビルドで使用するためにローカルにキャッシュできるという意味では依存関係管理を持っていないようです。私は[Gerritの人々は、少なくともJARをダウンロードするが、キャッシュしない単純なカスタムコードを持っていると思う](https://groups.google.com/d/msg/repo-discuss/Ab4y-D8lcWI/f2YLOPICFr8J)。 – sschuberth

    +1

    Buckはこれを行うことができる[fetchコマンド](https://buckbuild.com/command/fetch.html)を持っています。@sschuberth – sdwilsh

    2

    私はバックの次のような利点を追加します。

    • Exopackage、すなわちインクリメンタルAPKビルドを。そのページのビルド時間をテーブルにチェックしてください。
    • Network cache。アプリを使用している複数の開発者がいる場合は、既に他の開発者によって構築されているコンポーネントを再構築する必要はありません。ここで
    +0

    ワインは、exopackageのために素晴らしい勝利を見ました:http://engineering.vine.co/post/117873038742/reduce-build-times-by-adoing-buck – sdwilsh

    5

    、コンフィギュレーションのだけ線でシステムを構築し、あなたの現在のAndroidメーカー+ Gradleの上BUCKベースを使用して起動させることができますのGradleプラグインOkBuckです。見てみな。

    OkBuckを使用すると、gradleとbuckの両方の利点を持つ、gradleとbuckの両方でプロジェクトを構築できます。

    関連する問題