🚝

Gradle ProfilerでAndroidのビルド速度を計測する

2023/03/08に公開

Androidのビルド速度の改善を行おうとする際に、そもそも現在どのくらいのビルド速度なのかを知ることができないと、改善しても実感することができないと思うので、計測することは重要です。今回は、Gradle ProfilerというAndroidのビルド速度計測ツールを使用して、実際にどのくらいの時間がかかっているのかを確認する方法を調べてみました。

詳しくは公式ドキュメントを見てもらうとわかると思うので、今回はまとめ的な感じです。
https://developer.android.com/studio/build/profile-your-build?hl=ja

Gradle Profilerツールを使う

Gradle Profilerという、Gradleビルドのベンチマーク情報を収集するためのツールを用いて、速度を計測していきます。
https://github.com/gradle/gradle-profiler

Gradle Profilerでは、開発者でビルドする状況をカスタマイズして複数回実行することができ、平均値や中央値から最速、最悪のケースまでアプリのビルド情報を取得することができます。

Homebrewを使用する場合、以下のコマンドからGradle Profilerをインストールすることができます。

$ brew install gradle-profiler
$ gradle-profiler --benchmark help

https://github.com/gradle/gradle-profiler#installing

そこから以下を実行すると、実際にビルド速度を計測することができます。

$ gradle-profiler --benchmark --project-dir <root-project> :app:assembleDebug

上のコマンドを実行すると、profile-outディレクトリが生成され、profile-out/benchmark.htmlに測定結果を表すHTMLレポートが作成されます。

さまざまなユースケースで測定してみる

開発者側が自分でシナリオを設定して、ビルド速度を計測することもできます。
やり方はすごく簡単で、./scenarios.txt(名前は何でもいい)を作成し、このファイルに計測したいシナリオを追加していきます。

以下の例では、ビルドキャッシュ有りのclean buildとビルドキャッシュなしのclean buildの2パターンで計測するための例になります。

clean_build {
    tasks = [":root:assembleDebug"]
    cleanup-tasks = ["clean"]
}

clean_build_no_cache {
    tasks = [":root:assembleDebug"]
    gradle-args = ["--no-build-cache", "--no-configuration-cache"]
    cleanup-tasks = ["clean"]
}

これを実行してみると、2パターンを計測した結果がHTMLファイルとして生成されます。

公式には、他のユースケースに関しても例が載っているので以下を参照してみてください。
https://developer.android.com/studio/build/profile-your-build?hl=ja#getting_started

まとめ

Gradle Profilerを使ってGradleビルドの速度を計測する方法を調べてみました。
公式に結構ちゃんと書いてあるので、気になった方は公式を参照していただくと、もっと詳しい部分まで知ることができると思います。

https://developer.android.com/studio/build/profile-your-build?hl=ja

Discussion