gradle-build-performance について
Android と Gradle の開発者向けに、ビルド性能の測定と改善方法をまとめたリファレンスです。遅いフェーズの特定、構成キャッシュ、依存関係の解決、AGP 9 で必要な kapt から KSP への移行を扱います。
主な機能
- 01ベースライン測定と Build Scan の手順
- 02構成キャッシュのガイダンス
- 03タスクの遅延登録
- 04コンベンションプラグインの推奨
- 05依存関係解決の実践
- 06AGP 9 の kapt から KSP への移行指針
活用シーン
- 01Gradle ビルドの遅いフェーズの特定
- 02構成処理の繰り返し削減
- 03AGP 9 に向けたアノテーション処理の更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rcosteira79/ android-skills --skill gradle-build-performanceインストール後、Claude Code で/gradle-build-performanceを入力して読み込まれたか確認します。
詳細
Gradle ビルドのパフォーマンス
このリファレンスでは、ワークフローの基本に加え、効果が大きく、間違えやすいパターンを取り上げます。標準的な設定(org.gradle.caching、org.gradle.parallel、org.gradle.jvmargs、android.nonTransitiveRClass、kapt → ksp)は対象外です。
ワークフロー: ベースライン(クリーンビルド+インクリメンタルビルド)を計測する → ./gradlew assembleDebug --scan(アップロードしないレポートの場合は --profile)を実行する → Build Scan のタイムラインで遅いフェーズ(構成/実行/依存関係の解決)を特定する → 一度に 1 つの最適化を適用する → もう一度計測する。変更をまとめて行うと、何が効果をもたらしたのか分からなくなります。
構成フェーズ — 最も手軽な改善
- 構成キャッシュ(
org.gradle.configuration-cache=true、AGP 8+)は、入力に変更がない場合、構成フェーズ全体をスキップします。まずorg.gradle.configuration-cache.problems=warnから始め、問題がなくなったらfailに切り替えます。 - 構成時に I/O を行わないでください。 構成時の
file("version.txt").readText()、ネットワーク呼び出し、exec {}は構成キャッシュを無効にし、すべてのビルドを遅くします。実行時まで遅らせます:providers.fileContents(layout.projectDirectory.file("version.txt")).asText - タスクの遅延登録 —
tasks.register("x") { … }(実行グラフに含まれる場合にのみ構成されます)を使い、先行評価されるtasks.create("x") { … }は使わないでください。 subprojects {}/allprojects {}ではなく、規約プラグインを使ってください — これらのルートビルドブロックはすべてのサブプロジェクトを先行評価します。共有設定を規約プラグインに移します(android-skills:android-gradle-logicを参照)。
kapt → KSP(AGP 9 では必須)
KSP は kapt より約 2 倍高速で、AGP 9 では移行が必須です — Kotlin のサポートが組み込まれており、org.jetbrains.kotlin.kapt とは互換性がありません。KSP に移行する(AGP 9 では KSP 2.3.1+ が必要です。Hilt/Room/Moshi はすべて対応しています)か、KSP に相当するものがないアノテーションプロセッサには com.android.legacy-kapt(AGP と同じバージョン)を使用してください。AGP 9 の仕組み全般については、JetBrains の kotlin-tooling-agp9-migration スキルを参照してください。
依存関係の解決
- バージョンを固定する — 動的バージョンの
1.0.+や-SNAPSHOTは、ビルドのたびにネットワーク上での解決チェックを発生させます。1.2.3のように固定します。 - リポジトリの順序 — Gradle は宣言順にリポジトリを確認します。最もよく使うものを先頭に配置します(
google()、次にmavenCentral()、サードパーティのリポジトリは最後)。
gradle.properties の妥当なベースライン
org.gradle.configuration-cache=true
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC
android.nonTransitiveRClass=true