Googleは、Androidオープンソースプロジェクト(AOSP)が、新しいビルドツールとしてBazelを使用することを発表した。AOSPは、市場で入手可能なすべてのAndroidラベル付きOSおよびより多くの派生OSに対する基盤を提供するものである。
Googleによると、Bazelは、Androidプラットフォームを正しく迅速に構築するための最良の保証を提供する。AOSPリポジトリにおける最初のBazelに関連するコントリビューションに対して移行がすでに開始されている。しかし、すべての関係者がスムーズに移行できるように、プロセス全体が次のいくつかのAndroidリリースで実際に行われる予定である。
2020年または2021年には、Androidプラットフォームビルドワークフローまたは現行でサポートされているAndroidプラットフォームビルドツールにすぐに影響はない。
移行が完了すると、BazelはAOSPをビルドするために実際に使用される多くのツールに取って代わる。たとえば、Blueprintは、BazelのPython 3にインスパイアされた内部構成言語であるStarlarkに置き換えられる。Blueprintはカスタム構文を使用してモジュールを記述し、Ninjaマニフェストを出力できるメタビルドシステムである。大局的にこれを見ると、StarlarkはBazelのBUILDファイルと共に、新しい言語とコンパイラをサポートするように拡張できるマクロ言語を強化している。同様に、NinjaビルドシステムはBazelの実行フェーズに置き換えられる。 atest
はbazel test
などに置き換えられる。
ndroidが新しいビルドシステムに移行するのはこれが初めてではない。実際、AndroidはAndroid 7まで公式のビルドシステムとしてmake
を使用していた。その時点で、Googleは、make
が遅く、エラーが発生しやすく、スケーラブルでなく、テストが困難な規模に、Androidが達していたと言っている。その結果として、Android 7はSoongを導入して、物事をスピードアップし、make
を段階的に廃止した。これは、現在Androidビルドにはない。
Bazelへの移行について、Googleはいくつかの重要な利点を挙げている。構成の柔軟性の向上、ハーメチックビルドが利用できるようになったこと、ビルドの複雑さの軽減、ビルド時間とエクスペリエンスの大幅な向上なである。これらの改善についての数値を提供するのは時期尚早である。しかし、Redditのコメンテーターによると、Bazelの厳密さにより、部分的な計算と最適化が改善され、ビルドにメリットがあり、リビルドに対してはさらなるメリットがある。他のコメント提供者は、Android 10からAndroid 11に移行することで、ビルドの複雑さが著しく増加することを示唆した。
Googleはこの移行を可能な限りシームレスにすることを目指しているが、今後数回のAndroidリリースでは、開発者がSoongs、Ninja、Bazelなどのさまざまなビルドツールを組み合わせて使用する必要があるという事実を隠すわけにはいかない。これは必ずしも物事を容易にするわけではないが、この努力が中期的に報われることを願う。
AOSPは、Google認定の「Android」フォンだけでなく、ゲーム機、デジタルカメラ、ポータブルメディアプレーヤー、PCなどの無数のデバイスで使用されている。Googleは、Androidエクスペリエンスの制御を取り戻し、その一部をよりクローズドな開発モデルに移行することを目的とした戦略について長い間批判されてきた。