Skip to content

Kotlinのメタデータ互換性エラー解決方法

注意

このエラーは、KotlinプラグインのバージョンとAndroid Gradle Plugin (AGP) のバージョン間の互換性の問題が原因で発生します。適切なバージョンの組み合わせを選択することが重要です。

問題の概要

Kotlinを使用したAndroidプロジェクトで、次のようなエラーが発生することがあります:

Module was compiled with an incompatible version of Kotlin. 
The binary version of its metadata is 1.5.1, expected version is 1.1.15

このエラーは、Kotlinのメタデータバージョンの不一致によって発生します。具体的には:

  • 期待されるバージョン(expected version): プロジェクトで使用されているkotlin-gradle-pluginのバージョン
  • 実際のバイナリバージョン(binary version): ダウンロードまたはコンパイルされたcom.android.tools.build:gradleのバージョン

根本原因

このエラーは主に以下の要因によって発生します:

  1. KotlinプラグインとAndroid Gradle Plugin (AGP) のバージョン互換性の問題
  2. キャッシュによる古い依存関係の使用
  3. 異なるバージョンのサードパーティライブラリの使用
  4. IDEとプロジェクトのKotlinバージョンの不一致

解決方法

方法1: Kotlinバージョンの更新(推奨)

android/settings.gradle.kts または android/settings.gradle ファイルを開き、Kotlinプラグインのバージョンを更新します:

kotlin
// settings.gradle.kts (Kotlin DSL)
plugins {
    id("org.jetbrains.kotlin.android") version "1.9.22" apply false
    // 他のプラグイン...
}

// settings.gradle (Groovy DSL)
plugins {
    id 'org.jetbrains.kotlin.android' version '1.9.22' apply false
    // 他のプラグイン...
}

TIP

最新のKotlinバージョンはKotlin公式リリースページで確認できます。

方法2: AGPとKotlinのバージョン互換性を確保

KotlinバージョンとAndroid Gradle Pluginの互換性を確認し、適切な組み合わせを選択します:

kotlin
// build.gradle.kts (プロジェクトレベル)
buildscript {
    dependencies {
        classpath("com.android.tools.build:gradle:8.1.1") // AGPバージョン
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22") // Kotlinバージョン
    }
}
互換性テーブル(2024年10月時点)
AGPバージョン互換性のあるKotlinバージョン
8.1.x1.9.20 以上
8.0.x1.8.20 ~ 1.9.20
7.4.x1.7.20 ~ 1.8.20
7.3.x1.7.10 ~ 1.7.20

方法3: キャッシュのクリア

キャッシュが原因の場合、以下の手順でクリアします:

bash
# Gradleキャッシュをクリア
rm -r $HOME/.gradle/caches/

# プロジェクトのビルドディレクトリをクリア
rm -rf android/.gradle
rm -rf android/build

# Flutterのキャッシュをクリア
flutter clean
flutter pub get

Android Studioを使用している場合は、File > Invalidate Caches / Restart でもキャッシュをクリアできます。

方法4: Gradle Wrapperの更新

android/gradle/wrapper/gradle-wrapper.properties ファイルを開き、Gradleディストリビューションを更新します:

properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip

GradleバージョンとAGPバージョンの互換性も重要です。公式互換性表を参照してください。

方法5: サードパーティライブラリのチェック

特定のライブラリを追加した後にエラーが発生する場合、そのライブラリが新しいKotlinバージョンでコンパイルされている可能性があります:

kotlin
// 問題のあるライブラリを特定
dependencies {
    implementation("com.example:problematic-library:1.0.0") // バージョンを下げるか
    // またはKotlinバージョンを上げる
}

フルーツプロジェクトでの具体的な設定例

kotlin
plugins {
    id("com.android.application") version "8.1.1" apply false
    id("org.jetbrains.kotlin.android") version "1.9.22" apply false
    // 他のプラグイン...
}
kotlin
buildscript {
    extra.apply {
        set("kotlin_version", "1.9.22")
        set("compose_compiler", "1.5.10")
        set("compose_version", "1.6.3")
    }
    
    dependencies {
        classpath("com.android.tools.build:gradle:8.1.1")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22")
    }
}
kotlin
android {
    compileSdk = 34
    
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    
    kotlinOptions {
        jvmTarget = "17"
    }
}
properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

トラブルシューティング

メモリ不足によるエラー

メモリ不足が原因でこのエラーが発生することがあります。gradle.properties ファイルでメモリ設定を調整します:

properties
org.gradle.jvmargs=-Xmx2048m

Flutterプロジェクトの場合

Flutterプロジェクトでは、以下のファイルでバージョン設定を確認してください:

  1. android/settings.gradle - Kotlinプラグインバージョン
  2. android/build.gradle - KotlinバージョンとAGPバージョン
  3. gradle-wrapper.properties - Gradleディストリビューション

予防策

  1. 定期的な更新: KotlinとAGPを定期的に最新の互換性のあるバージョンに更新する
  2. バージョン固定: サードパーティライブラリのバージョンを固定する(+を使用しない)
  3. 互換性チェック: 新しいライブラリを追加する前に互換性を確認する
  4. CI/CD環境の統一: 開発環境とビルド環境のバージョンを統一する

関連資料

最終更新

2024年10月時点の情報に基づいています。バージョン情報は時間の経過とともに変化するため、最新の公式ドキュメントを参照してください。