AGPBIエラーの解決: com.android.tools.r8.kotlin.H
問題概要
Android Studio Hedgehog | 2023.1.1 | Patch 2 環境で、Kotlin 1.7.0 と Gradle 7.4 を使用している際に、以下のエラーが発生するケースがあります:
AGPBI: {"kind":"error","text":"com.android.tools.r8.kotlin.H","sources":[{}],"tool":"D8"}
Caused by: [CIRCULAR REFERENCE: com.android.tools.r8.kotlin.H]
エラーの特徴:
- 明確なエラーメッセージが不足している
- 循環参照が報告されるが、実際に循環依存は存在しない
- Android Gradle Plugin (AGP) のバージョン更新後に発生
有効な解決方法
方法1: R8バージョンの明示的指定(推奨)
プロジェクトレベルのbuild.gradle
にR8依存関係を追加:
gradle
buildscript {
repositories {
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw")
}
}
dependencies {
classpath("com.android.tools:r8:8.3.37") // 最新バージョンに更新のこと
}
}
動作環境:
- Gradle: 7.5.1
- AGP: 7.4.0
- Kotlin: 1.8.20
- MinSdk: 21
なぜ有効か?
このエラーはR8/D8ツールの特定バージョンのバグに起因しています。最新のR8を明示的に指定することでバージョン不整合を解決します。
方法2: MinSDKバージョンの引き上げ
build.gradle
でMinSDKを24以上に設定:
gradle
android {
defaultConfig {
minSdk 24 // または26に設定
targetSdk 34 // 適切なバージョンに更新
}
}
報告された成功事例:
- MinSdk 21 → 24 で解決
- MinSdk 22 → 26 で解決
- MinSdk 21 → 26 で解決
方法3: Gradleプラグインのダウングレード
互換性のあるバージョンにプラグインを変更:
gradle
plugins {
id 'com.android.application' version '7.3.1' apply false
id 'com.android.library' version '7.3.1' apply false
id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
}
注意
この方法は一時的な解決策です。長期的には新しいバージョンへ移行すべきです。
方法4: 環境全体のバージョンアップグレード
Gradleとプラグインを最新安定版に一括更新:
gradle
plugins {
id 'com.android.application' version '8.2.2' apply false
id 'com.android.library' version '8.2.2' apply false
}
ext {
kotlin_version = "1.9.20" // 最新のKotlinバージョン
}
properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
アップグレード時のポイント:
- 全てのサードパーティライブラリを更新
./gradlew clean
でビルドキャッシュを削除- 非推奨APIを使用していないか確認
方法5: 個別バージョン調整
KotlinとAGPのバージョンを微調整:
gradle
ext {
kotlin_version = '1.7.1'
agp_version = '7.4.2'
}
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
根本原因と予防策
エラーの原因
- R8/D8バージョンの不整合: Kotlinメタデータの処理に問題
- APIレベルの非互換性: MinSdkが低すぎると発生するバグ
- ビルドツールチェーンの不一致: AGP, Gradle, Kotlinのバージョンが互換性なし
ベストプラクティス
- バージョンの互換性確認:bash
./gradlew buildEnvironment # 依存関係ツリーを表示
- インクリメンタルな更新: 一度に複数要素をアップグレードしない
- 公式ドキュメントの参照:
トラブルシューティングの流れ
デバッグテクニック:
--stacktrace --info
オプション付きでビルド./gradlew clean
でキャッシュクリア- Android Studioの
File > Invalidate Caches
問題解決後は、最新の安定版ツールチェーンへ段階的に移行することを推奨します。特にR8バージョンの明示指定は一時的な対策であることを認識し、根本的なバージョン互換性の解決を目指してください。