AndroidがBazelビルドシステムに移行

Google開発者 Androidの開発の背後にいる人は、与えた プロジェクトが動いていることを発表を通して知るために Androidオープンソース (AOSP)Bazelビルドシステムを使用する 現在のSoong、Ninja、Makeのコンパイルシステムの代わりに。

BazelのサポートはすでにAndroidリポジトリに追加されていますしかし トランジション デフォルトで新しいビルドシステムにeは複数のバージョンに分散します 移行を可能な限り簡単かつ透過的にするためのプラットフォーム。

2020年と2021年には、大きな変化は見込まれていません。 プラットフォーム建設ワークフローでは、既存の建設システムのサポートが維持されます。

段階的な移行を可能にするために、 いくつかの変更 Androidビルドを簡素化する すでにバゼルに含まれています、 Ninja形式のビルドファイルを解析して実行する機能など。

Androidプラットフォームの場合は、Bazelに切り替えると、ビルドプロセスを構成する柔軟性が向上します。 ビルドの進行状況と依存関係の接続のイントロスペクション/モニタリングを改善し、反復可能なビルドを実装し、複雑なビルドスクリプトを簡素化し、さまざまなビルドおよびテストハンドラーとの統合を改善し、ビルド時間を短縮します。

Bazelに移行すると、AOSPは次のことが可能になります。

AOSPコンパイルを構成するためのより多くの柔軟性を提供します(条件のより良いサポート)
AOSPビルドの進行状況と依存関係についてより多くの内省を許可する
正しく再生可能な(防水)AOSPビルドを有効にする
AOSPビルドの複雑さを軽減する構成メカニズムを導入します
建設とテスト活動のさらなる統合を可能にする
これらすべてを組み合わせて、ビルド時間を大幅に短縮し、エクスペリエンスを向上させます
Bazelコミュニティへのこの移行の利点は次のとおりです。

AndroidプラットフォームのビルドをサポートするためにBazelに多額の投資が進行中
Bazelのエコシステムとコミュニティの拡大により、当初は数万人のAndroidプラットフォーム開発者とAndroid携帯の相手先ブランド供給(OEM)およびチップベンダーが含まれます。
Androidアプリを作成するためのGoogleのBazelルールはオープンソースであり、AOSPで使用され、Android / Bazelコミュニティと協力してGoogleによって維持されます。
Androidアプリを作成するためのBazelの互換性の向上
Androidプラットフォームの構築に使用される他の言語(Rust、Java、Python、Goなど)のルールサポートが改善されました
Bazel Long Term Support(LTS)バージョンの強力なサポートにより、拡張されたBazelコミュニティにメリットがあります
改善されたドキュメント(チュートリアルとリファレンス)

の生態系 AndroidのBazelは、関係する参加者の数を拡大します 開発では、 Androidアプリを構築するためにアプリを簡素化します (GoogleはAndroidアプリケーション用のスクリプトを構築するためのコードを開く予定です)、Androidで使用されるさまざまなプログラミング言語(Rust、Java、Python、Go)のサポートを改善し、長いバージョンの期間を作成するためのリソースを提供しますより優れた、より広範なドキュメントにつながります。

BazelはGoogleのエンジニアによって開発されました 社内プロジェクトのほとんどを構築するために使用されます。 プロジェクト その高い建設速度で際立って、 キャッシング手法と構築プロセスの並列化が使用されます。

ツールも 繰り返し可能なアセンブリを確保するつまり、開発者のマシンでプロジェクトを構築した結果は、継続的インテグレーションサーバーなどのサードパーティシステムで構築した結果とまったく同じになります。 追加機能は、拡張機能を接続するためのメカニズムを通じて実装されます。

MakeやNinjaとは異なり、Bazelはより高いレベルのアプローチを採用しています コンパイルされるファイルのコマンドバインディングを定義する代わりに、より抽象的なビルド済みブロックを使用してターゲット/ビルドプラットフォームを定義するコンパイルルールを作成します。

プロジェクトのコンポーネント BUILDテキストファイルに記述されています ライブラリ、実行可能ファイル、およびテストのパッケージの形式で、コンパイラを呼び出すための個々のファイルおよびコマンドのレベルで詳細を説明することはありません。

BUILDファイルでは、 すべての依存関係を完全に定義する必要があります。 変更を加えた後にコンポーネントを再構築するために行われる決定に基づいて(変更されたファイルのみが再構築されます)、ビルドプロセスを並列化します。

出典 https://developers.googleblog.com


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。