Skip to content

Flutterプロジェクトでのメタデータバージョン不一致エラーの解決

問題の説明

FlutterプロジェクトでAndroid APKをビルドする際、次のエラーが発生します:

ERROR: R8: java.lang.IllegalArgumentException: 
Provided Metadata instance has version 2.1.0, 
while maximum supported version is 2.0.0. 
To support newer versions, update the kotlinx-metadata-jvm library.

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:minifyReleaseWithR8'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
  Compilation failed to complete

このエラーは、Kotlinメタデータのバージョン不一致が原因で発生します。プロジェクトで使用されているkotlinx-metadata-jvmライブラリがKotlin 2.1.0のメタデータをサポートしていない状態です。

根本原因

  • Kotlinプラグインのバージョン(2.1.0)が新しすぎる
  • 古いAndroid Gradle Plugin(AGP)が新しいKotlinメタデータを処理できない
  • R8圧縮ツールとの互換性の問題

推奨解決策

方法1: Android Gradle Pluginの更新(最適解)⚡️

最新のAndroid StudioとFlutterツールとの互換性を確保するには、Android Gradle Pluginを更新します。

  1. android/gradle.propertiesファイルに以下を追加:
properties
# Gradle設定
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true
# 最新プラグイン用に警告を無効化
android.suppressUnsupportedCompileSdk=34
  1. android/build.gradleで依存関係を更新:
groovy
// android/build.gradle
buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:8.6.0' // 8.6.0に更新
        // ... 他の依存関係
    }
}
  1. android/gradle/wrapper/gradle-wrapper.propertiesを修正:
properties
# 最新のGradle Wrapperを使用
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
  1. android/settings.gradleのプラグインバージョン更新:
groovy
plugins {
    id "com.android.application" version "8.6.0" apply false
    // Kotlinバージョンはそのまま維持
    id "org.jetbrains.kotlin.android" version "2.1.0" apply false
}

ビルド後のアクション

変更後は必ずプロジェクトをクリーン:

bash
flutter clean
rm -rf android/build android/app/build

方法2: kotlinx-metadata-jvmの明示的追加

エラーメッセージが示唆する通り、直接依存関係を追加する方法です。

android/app/build.gradledependenciesセクションに追加:

groovy
dependencies {
    // 他の依存関係
    
    // メタデータバージョン互換性を解決
    runtimeOnly("org.jetbrains.kotlin:kotlinx-metadata-jvm:0.9.0")
}

この解決法の特徴

  • 即効性があり、短期的な解決に適している
  • 根本的なツールの互換性問題は解決しないため、中長期的にはプラグイン更新が推奨

非推奨: Kotlinプラグインダウングレード(最後の手段)

⚠️ この方法は新しいKotlin機能が使えなくなるため、一時的な回避策としてのみ使用:

groovy
// android/settings.gradle
plugins {
    // Kotlinバージョンを2.0.0にダウングレード
    id "org.jetbrains.kotlin.android" version "2.0.0" apply false
}

注意点

この方法では:

  • Kotlinの最新機能が使用できなくなる
  • 他のライブラリとバージョン衝突が発生する可能性が増加
  • Flutterの将来のアップデートで互換性問題が再発するリスクあり

エラー発生メカニズムの詳細

  1. R8圧縮ツールがKotlinメタデータを処理
  2. プロジェクトのKotlinバージョン(2.1.0)がR8の対応上限(2.0.0)を超過
  3. 互換性エラー発生 → ビルドプロセス中断

予防的措置

  1. 定期的な依存関係更新

    bash
    flutter pub outdated
    flutter pub upgrade
  2. プロジェクト作成時のバージョン指定

    bash
    flutter create --android-language kotlin --min-sdk-version 23 .
  3. マルチデックス対応の確認

    groovy
    // android/app/build.gradle
    defaultConfig {
        multiDexEnabled true  // 必須
    }
  4. Flutter SDKアップデート後のチェック

    bash
    flutter doctor
    flutter upgrade

まとめ

解決方法推奨度実行難易度長期的安定性
Android Gradle Plugin更新★★★★★高い
kotlinx-metadata-jvm追加★★★☆☆
Kotlinプラグインダウングレード★☆☆☆☆低い

最新のAndroidツールチェインとの互換性を維持するには、Android Gradle Pluginの更新(方法1) が最適解です。プロジェクト全体のツールバージョンを最新に保つことで、同様の互換性問題を未然に防止できます。