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
のバージョン
根本原因
このエラーは主に以下の要因によって発生します:
- KotlinプラグインとAndroid Gradle Plugin (AGP) のバージョン互換性の問題
- キャッシュによる古い依存関係の使用
- 異なるバージョンのサードパーティライブラリの使用
- IDEとプロジェクトのKotlinバージョンの不一致
解決方法
方法1: Kotlinバージョンの更新(推奨)
android/settings.gradle.kts
または android/settings.gradle
ファイルを開き、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の互換性を確認し、適切な組み合わせを選択します:
// 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.x | 1.9.20 以上 |
8.0.x | 1.8.20 ~ 1.9.20 |
7.4.x | 1.7.20 ~ 1.8.20 |
7.3.x | 1.7.10 ~ 1.7.20 |
方法3: キャッシュのクリア
キャッシュが原因の場合、以下の手順でクリアします:
# 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ディストリビューションを更新します:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
GradleバージョンとAGPバージョンの互換性も重要です。公式互換性表を参照してください。
方法5: サードパーティライブラリのチェック
特定のライブラリを追加した後にエラーが発生する場合、そのライブラリが新しいKotlinバージョンでコンパイルされている可能性があります:
// 問題のあるライブラリを特定
dependencies {
implementation("com.example:problematic-library:1.0.0") // バージョンを下げるか
// またはKotlinバージョンを上げる
}
フルーツプロジェクトでの具体的な設定例
plugins {
id("com.android.application") version "8.1.1" apply false
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
// 他のプラグイン...
}
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")
}
}
android {
compileSdk = 34
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
トラブルシューティング
メモリ不足によるエラー
メモリ不足が原因でこのエラーが発生することがあります。gradle.properties
ファイルでメモリ設定を調整します:
org.gradle.jvmargs=-Xmx2048m
Flutterプロジェクトの場合
Flutterプロジェクトでは、以下のファイルでバージョン設定を確認してください:
android/settings.gradle
- Kotlinプラグインバージョンandroid/build.gradle
- KotlinバージョンとAGPバージョンgradle-wrapper.properties
- Gradleディストリビューション
予防策
- 定期的な更新: KotlinとAGPを定期的に最新の互換性のあるバージョンに更新する
- バージョン固定: サードパーティライブラリのバージョンを固定する(
+
を使用しない) - 互換性チェック: 新しいライブラリを追加する前に互換性を確認する
- CI/CD環境の統一: 開発環境とビルド環境のバージョンを統一する
関連資料
最終更新
2024年10月時点の情報に基づいています。バージョン情報は時間の経過とともに変化するため、最新の公式ドキュメントを参照してください。