Skip to content

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

アップグレード時のポイント:

  1. 全てのサードパーティライブラリを更新
  2. ./gradlew clean でビルドキャッシュを削除
  3. 非推奨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のバージョンが互換性なし

ベストプラクティス

  1. バージョンの互換性確認:
    bash
    ./gradlew buildEnvironment # 依存関係ツリーを表示
  2. インクリメンタルな更新: 一度に複数要素をアップグレードしない
  3. 公式ドキュメントの参照:

トラブルシューティングの流れ

デバッグテクニック:

  • --stacktrace --info オプション付きでビルド
  • ./gradlew clean でキャッシュクリア
  • Android StudioのFile > Invalidate Caches

問題解決後は、最新の安定版ツールチェーンへ段階的に移行することを推奨します。特にR8バージョンの明示指定は一時的な対策であることを認識し、根本的なバージョン互換性の解決を目指してください。