| name | fix-ci-build |
| description | Gradle ビルド(assembleDebug, compileKotlin など)が失敗した時の診断と修正を行う。コンパイルエラー、依存関係の問題、Convention Plugin の設定不備などを切り分けて修正する。Use when "ビルドが失敗", "Gradle build error", "コンパイルエラー", "compileKotlin が失敗". |
fix-ci-build
ビルドエラーの診断と修正スキル
目的
Gradle ビルドが失敗した場合、エラーを診断して修正する。
問題の診断
Step 1: エラーの確認
ビルドコマンドを実行:
./gradlew build --no-daemon 2>&1 | tail -50
またはより詳細なエラー情報を取得:
./gradlew build --info
./gradlew build --stacktrace
Step 2: エラーの分類
エラーメッセージから以下を特定:
- コンパイルエラー:
Compilation failed
- 依存関係エラー:
Could not find, Dependency, version
- タスク実行エラー:
Task が見つからない、実行に失敗
- 設定エラー:
build.gradle.kts の問題
修正手順
パターン A: コンパイルエラー
原因: 構文エラーや型エラー
修正方法:
- エラーメッセージからファイルと行番号を特定
- Read でソースコードを確認
- Edit でコードを修正
val value: String = 123
パターン B: 依存関係エラー
原因: ライブラリが見つからない、バージョン競合
修正方法:
gradle/libs.versions.toml を Read で確認
- ライブラリが定義されているか確認
- バージョン指定に問題がないか確認
- Edit で修正
[versions]
kotlin = "2.0.0"
compose = "1.7.0"
[libraries]
androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" }
パターン C: タスク実行エラー
原因: 存在しないタスク、プラグイン設定エラー
修正方法:
- エラーメッセージからどのタスクが失敗したかを確認
build.gradle.kts を Read で確認
- プラグインが適切に適用されているか確認
- タスク定義に問題がないか確認
- Edit で修正またはタスク削除
パターン D: 設定エラー
原因: build.gradle.kts の設定が不正
修正方法:
build.gradle.kts を Read で確認
- Kotlin DSL の構文が正しいか確認
- 必須の設定が不足していないか確認
- Edit で修正
特別なケース
キャッシュの問題
~/.gradle ディレクトリのキャッシュが古い、または破損している:
./gradlew clean
./gradlew build
または:
rm -rf ~/.gradle
./gradlew build
マルチプロジェクトビルドの問題
サブプロジェクトのビルドが失敗:
settings.gradle.kts を確認してプロジェクト構造を理解
- 特定のサブプロジェクトのみをビルド:
./gradlew :module:build
- ビルド依存関係を確認:
./gradlew :module:dependencies
Kotlin/Compose の問題
Kotlin バージョン、Compose バージョンの不一致:
gradle/libs.versions.toml で各バージョンを確認
- 互換性マトリックスを確認(Jetbrains、Google のドキュメント)
- 必要に応じてバージョンを更新
検証
修正後、ビルドが成功することを確認:
./gradlew build
またはルートとサブプロジェクトの両方でビルド:
./gradlew build
cd integrationTest && ./gradlew build
よくある問題と解決方法
| 問題 | 原因 | 解決方法 |
|---|
Could not find | ライブラリが見つからない | gradle/libs.versions.toml を確認、Repository 設定を確認 |
Duplicate class | 重複するライブラリ | 依存関係を確認、exclude ルール を追加 |
Version conflict | バージョン競合 | 互換性のあるバージョンに統一 |
Out of memory | ヒープが不足 | org.gradle.jvmargs を設定 |
Timeout | ビルドが遅い | Gradle デーモンを再起動:./gradlew --stop |