プロジェクトのビルドで「Something went wrong while checking for version compatibility between the Compose Compiler and the Kotlin Compiler.」とメッセージを吐き、エラーになる場合があります。
既存のプロジェクトを新しくリリースされたAndroid Studioでビルドした場合に頻発します。
先日、「Giraffe|2022.3.1」がリリース(2023.07)されて、早速、ビルドをしたら発生しました。
その対処方法を説明します。
※環境:Android Studio Giraffe | 2022.3.1
コンパイラーの互換性
Jetpack Composeにおいて、@Composable(アノテーション)の付く関数をコンポーザブル関数と呼び、コンパイラーによって特別なバイトコードへ変換されます。
このとき使われるコンパイラーが「Composeコンパイラー」です。
@Composable fun Greeting(name: String, modifier: Modifier = Modifier) { Text( text = "Hello $name!", modifier = modifier ) }
Composeコンパイラーは特定のバージョンの「Kotlinコンパイラー」を拡張して作られます。
ですので、特定のバージョンにおいて、両者は互換性を持ちます。どちらのコンパイラーを使っても、Kotlinコードが同様にコンパイル可能です。
この関係が「ComposeとKotlinの互換性マップ」に書かれています。
ビルドエラーの発生
新しくリリースされたAndroid Studioでビルドした場合などに、コンパイラーのバージョンに関連したビルドエラーが発生することがあります。
以下のようなメッセージを出力するエラーです。
Something went wrong while checking for version compatibility between the Compose Compiler and the Kotlin Compiler. ---------- Compose コンパイラーと Kotlin コンパイラーの間のバージョンの互換性をチェック中に問題が発生しました。
つまり、「互換性のないバージョンのコンパイラーがAndroid Studio内に指定されている」と言っています。
ビルドエラーの原因
原因は、新しくリリースされたAndroid Studioでモジュールを新規作成すると、互換性のないバージョンのComposeコンパイラーが指定されるためです。
新規作成したモジュール(Module C)をビルドするとエラーになります。
ビルドエラーの対処
「互換性マップ」に従い、互換性のあるバージョンに変更します。
以下は、Kotlinコンパイラーのバージョンを変更した例です。逆に、Composeコンパイラーのバージョンを変更する場合もあります。
buildscript { val agp_version by extra("8.0.2") } // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id("com.android.application") version "8.0.2" apply false // id("org.jetbrains.kotlin.android") version "1.7.20" apply false id("org.jetbrains.kotlin.android") version "1.8.10" apply false }
plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { ... composeOptions { kotlinCompilerExtensionVersion = "1.4.3" } ... } dependencies { .... }
ただし、コンパイラーのバージョンの変更に伴って、ライブラリーのバージョンを変更する必要があるかも知れません。必要に応じて依存リスト(dependencies { })を修正してください。
関連記事: