mcpField
G
gradle-build-performance

gradle-build-performance

github.com/rcosteira79開発168154 回インストール6 週間前に更新
リポジトリ

gradle-build-performance について

Android と Gradle の開発者向けに、ビルド性能の測定と改善方法をまとめたリファレンスです。遅いフェーズの特定、構成キャッシュ、依存関係の解決、AGP 9 で必要な kapt から KSP への移行を扱います。

主な機能

  1. 01ベースライン測定と Build Scan の手順
  2. 02構成キャッシュのガイダンス
  3. 03タスクの遅延登録
  4. 04コンベンションプラグインの推奨
  5. 05依存関係解決の実践
  6. 06AGP 9 の kapt から KSP への移行指針

活用シーン

  1. 01Gradle ビルドの遅いフェーズの特定
  2. 02構成処理の繰り返し削減
  3. 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

コメント