Androidビルド速度改善雑記 その2

中、大規模なプロジェクトの場合に、マルチモジュール環境に移行するのは一般的だと思います。

マルチモジュールに移行する1つの利点として、ビルド速度の向上が挙げられます。向上する主な理由としては、

などがあります。

この記事では、全体のビルドに影響を及ぼしているモジュールを特定し、改善することで、並列ビルドを向上させる方法について紹介します。

全体のビルドに影響を及ぼしているモジュールとは、 「いろいろなモジュールに依存されていて、ビルドが終わっていないモジュール」です。これがあると、他のモジュールのビルドのブロッカーになります。

例えば、core-uiモジュールがあって、それにFeature A、Bモジュールがそれぞれ依存していると、core-uiモジュールのビルドが終わるまで、Feature A、Bモジュールのビルドを開始することができずに、並列ビルドの恩恵を受けることが出来ません。 解決策としては、core-ui A、Bのように細かくする、Feature A、Bがcore-uiに依存しないようにする、などがあります。

次に、そのようなモジュールの特定方法ですが、Gradle Build Scanを使うと良いです。 Gradle Build Scanを使い、Timelineタブ → On critical pathにチェックを入れることで、特定できます。

Criticalと判定されたタスクを修正することで、全体のビルド時間を改善することが期待できます。

(ただし、無為にモジュールを増やしすぎると、 Configurationなどの時間が増え、ビルド改善できない場合があるので、注意してください。)

まとめ

ただ、無理やりモジュール分割をすると、設計に無理が出たりすると思うので、そういった場合にはやらないほうが無難だと思います。

Written by