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 Compiler と Kotlin バージョン の間に互換性がない場合に発生します。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で同期を実行し、エラーが解決したことを確認してください。