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 Compiler | Kotlin バージョン |
---|---|
1.5.12 | 1.9.23 |
1.5.8 | 1.9.22 |
1.5.7 | 1.9.21 |
1.5.6 | 1.9.21 |
1.5.5 | 1.9.20 |
1.4.8 | 1.8.22 |
1.4.7 | 1.8.21 |
1.4.0 | 1.8.0 |
最新情報の確認
常に公式ドキュメントで最新の互換バージョンを確認してください。上記表は一部抜粋です。
ステップ 2:build.gradle の修正
プロジェクトレベルの build.gradle.kts
で Kotlin バージョンを設定:
// プロジェクトレベル build.gradle.kts
plugins {
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
}
モジュールレベルの build.gradle.kts
で Compose オプションを設定:
// モジュールレベル build.gradle.kts
android {
composeOptions {
kotlinCompilerExtensionVersion = "1.5.8" // 互換性のあるバージョン
}
}
解決方法 2:Kotlin 2.0.0+ でのCompose Gradleプラグインの使用
Kotlin 2.0.0以降 を使用する場合、Compose Gradleプラグインを導入することでバージョン互換性問題を解決できます。
設定手順
- プロジェクトレベルの build.gradle.kts にプラグインを追加:
// プロジェクトレベル build.gradle.kts
plugins {
id("org.jetbrains.kotlin.plugin.compose") version "2.0.20" apply false
}
- モジュールレベルの build.gradle.kts でプラグインを適用:
// モジュールレベル build.gradle.kts
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("org.jetbrains.kotlin.plugin.compose") // 追加
}
- 既存の composeOptions を削除:
// 削除する設定
composeOptions {
kotlinCompilerExtensionVersion = "1.3.2" // この設定は不要
}
プラグインのメリット
- 自動的なバージョン整合性チェック
- Kotlin の新機能をComposeと同時に利用可能
- ビルドプロセスの効率化
その他の注意点とトラブルシューティング
誤った場所での compose フラグ設定
KMMプロジェクトなどで誤って buildFeatures.compose
を設定していないか確認:
android {
// 不要な場合は削除!
buildFeatures {
compose = true
}
}
この設定が不必要に存在するとエラーが発生することがあります。Compose を使用しないモジュールからは削除してください。
複数箇所のバージョン設定確認
プロジェクト内の全 build.gradle
ファイルで一貫したバージョンを指定:
- プロジェクトレベル
- モジュールレベル
- Gradleプロパティ(
gradle.properties
)
⚠️ 非推奨の回避策(注意が必要)
エラーメッセージが提案する suppressKotlinVersionCompatibilityCheck
は非推奨の回避策です。潜在的なランタイムエラーのリスクがあります。
kotlinOptions {
freeCompilerArgs += listOf(
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true"
)
}
使用する場合は以下の条件を満たしているか厳密に確認:
- 緊急時のみの一時的な対策
- 対応バージョンがすぐに使用できない
- コンパイラ動作を完全に理解している場合
ベストプラクティスまとめ
常に公式互換表を参照
Compose-Kotlin 互換性マップを定期的にチェックKotlin 2.0.0以降はプラグインを採用
org.jetbrains.kotlin.plugin.compose
でバージョン管理を簡素化設定の一貫性を維持
プロジェクト全体でバージョン宣言を統一ビルドファイルの不要な設定を削除
古いcomposeOptions
や不要なbuildFeatures
をクリーンアップ
互換バージョンを正しく設定することで、このエラーは完全に解決可能です。最新のAndroid Studioとビルドツールを使用することでも予防効果があります。
最終確認ポイント
プロジェクト修正後、File > Sync Project with Gradle Files
で同期を実行し、エラーが解決したことを確認してください。