Skip to content

Compose Compiler と Kotlin バージョンの互換性エラー解決

典型的なエラーメッセージ

This version (1.3.2) of the Compose Compiler requires Kotlin version 1.7.20 but you appear to be using Kotlin version 1.8.0 which is not known to be compatible.

問題の根本原因

このエラーは Jetpack Compose CompilerKotlin バージョン の間に互換性がない場合に発生します。Compose Compiler は特定の Kotlin バージョンに依存しており、プロジェクトで宣言された両者のバージョンが一致しない場合、ビルドプロセス中にこのエラーが出力されます。

主な原因は以下のいずれかです:

  • Compose Compiler と Kotlin の互換バージョンを正しく設定していない
  • build.gradle 設定ファイルでのバージョン指定ミス
  • マルチモジュールプロジェクトでの設定の不一致
  • 古い回避策(suppressKotlinVersionCompatibilityCheck)の使用

解決方法 1:互換バージョンの適切な設定

ステップ 1:Compose Compiler と Kotlin の互換性確認

公式のCompose-Kotlin 互換性マップを参照し、プロジェクトで使用している Compose Compiler に対応する Kotlin バージョンを選択します。

Compose Compiler と Kotlin の互換表(最新版抜粋):

Compose CompilerKotlin バージョン
1.5.121.9.23
1.5.81.9.22
1.5.71.9.21
1.5.61.9.21
1.5.51.9.20
1.4.81.8.22
1.4.71.8.21
1.4.01.8.0

最新情報の確認

常に公式ドキュメントで最新の互換バージョンを確認してください。上記表は一部抜粋です。

ステップ 2:build.gradle の修正

プロジェクトレベルの build.gradle.kts で Kotlin バージョンを設定:

kotlin
// プロジェクトレベル build.gradle.kts
plugins {
    id("org.jetbrains.kotlin.android") version "1.9.22" apply false
}

モジュールレベルの build.gradle.kts で Compose オプションを設定:

kotlin
// モジュールレベル build.gradle.kts
android {
    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.8" // 互換性のあるバージョン
    }
}

解決方法 2:Kotlin 2.0.0+ でのCompose Gradleプラグインの使用

Kotlin 2.0.0以降 を使用する場合、Compose Gradleプラグインを導入することでバージョン互換性問題を解決できます。

設定手順

  1. プロジェクトレベルの build.gradle.kts にプラグインを追加:
kotlin
// プロジェクトレベル build.gradle.kts
plugins {
    id("org.jetbrains.kotlin.plugin.compose") version "2.0.20" apply false
}
  1. モジュールレベルの build.gradle.kts でプラグインを適用:
kotlin
// モジュールレベル build.gradle.kts
plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    id("org.jetbrains.kotlin.plugin.compose") // 追加
}
  1. 既存の composeOptions を削除
kotlin
// 削除する設定
composeOptions {
    kotlinCompilerExtensionVersion = "1.3.2" // この設定は不要
}

プラグインのメリット

  • 自動的なバージョン整合性チェック
  • Kotlin の新機能をComposeと同時に利用可能
  • ビルドプロセスの効率化

その他の注意点とトラブルシューティング

誤った場所での compose フラグ設定

KMMプロジェクトなどで誤って buildFeatures.compose を設定していないか確認:

kotlin
android {
    // 不要な場合は削除!
    buildFeatures {
        compose = true
    }
}

この設定が不必要に存在するとエラーが発生することがあります。Compose を使用しないモジュールからは削除してください。

複数箇所のバージョン設定確認

プロジェクト内の全 build.gradle ファイルで一貫したバージョンを指定:

  • プロジェクトレベル
  • モジュールレベル
  • Gradleプロパティ(gradle.properties

⚠️ 非推奨の回避策(注意が必要)

エラーメッセージが提案する suppressKotlinVersionCompatibilityCheck は非推奨の回避策です。潜在的なランタイムエラーのリスクがあります。

kotlin
kotlinOptions {
    freeCompilerArgs += listOf(
        "-P",
        "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true"
    )
}

使用する場合は以下の条件を満たしているか厳密に確認:

  • 緊急時のみの一時的な対策
  • 対応バージョンがすぐに使用できない
  • コンパイラ動作を完全に理解している場合

ベストプラクティスまとめ

  1. 常に公式互換表を参照
    Compose-Kotlin 互換性マップを定期的にチェック

  2. Kotlin 2.0.0以降はプラグインを採用
    org.jetbrains.kotlin.plugin.compose でバージョン管理を簡素化

  3. 設定の一貫性を維持
    プロジェクト全体でバージョン宣言を統一

  4. ビルドファイルの不要な設定を削除
    古い composeOptions や不要な buildFeatures をクリーンアップ

互換バージョンを正しく設定することで、このエラーは完全に解決可能です。最新のAndroid Studioとビルドツールを使用することでも予防効果があります。

最終確認ポイント

プロジェクト修正後、File > Sync Project with Gradle Filesで同期を実行し、エラーが解決したことを確認してください。