Composeコンパイラの更新
ComposeコンパイラはGradleプラグインによって補完されており、これによりセットアップが簡素化され、コンパイラオプションへのアクセスが容易になります。 Android Gradleプラグイン(AGP)と一緒に適用すると、このComposeコンパイラプラグインは、AGPによって自動的に提供されるComposeコンパイラの座標(coordinates)を上書きします。
Composeコンパイラは、Kotlin 2.0.0からKotlinリポジトリに統合されました。 ComposeコンパイラはKotlinと同時にリリースされ、常に同じバージョンのKotlinと互換性を持つようになるため、プロジェクトのKotlin 2.0.0以降への移行がスムーズになります。
Kotlin 2.0.0で作成されたCompose Multiplatformアプリを、バージョン2.0.10以降にアップデートすることを強く推奨します。Composeコンパイラ 2.0.0には、非JVMターゲットを持つマルチプラットフォームプロジェクトにおいて、型の安定性(stability of types)を誤って推論することがあり、不要な(あるいは無限の)再構成(recomposition)が発生するという問題があります。
アプリがComposeコンパイラ 2.0.10以降でビルドされていても、Composeコンパイラ 2.0.0でビルドされた依存関係を使用している場合、それらの古い依存関係が依然として再構成の問題を引き起こす可能性があります。 これを防ぐには、依存関係をアプリと同じComposeコンパイラでビルドされたバージョンにアップデートしてください。
プロジェクトで新しいComposeコンパイラプラグインを使用するには、Composeを使用する各モジュールに対してプラグインを適用してください。Compose Multiplatformプロジェクトの移行の詳細については、以下を読み進めてください。Jetpack Composeプロジェクトについては、移行ガイドを参照してください。
Compose Multiplatformプロジェクトの移行
Compose Multiplatform 1.6.10以降、org.jetbrains.composeプラグインを使用する各モジュールに対して、org.jetbrains.kotlin.plugin.compose Gradleプラグインを適用する必要があります。
Composeコンパイラ GradleプラグインをGradleバージョンカタログに追加します。
toml[versions] # ... kotlin = "2.3.0" compose-plugin = "1.9.3" [plugins] # ... jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }ルートの
build.gradle.ktsファイルにGradleプラグインを追加します。kotlinplugins { // ... alias(libs.plugins.jetbrainsCompose) apply false alias(libs.plugins.compose.compiler) apply false }Compose Multiplatformを使用するすべてのモジュールにプラグインを適用します。
kotlinplugins { // ... alias(libs.plugins.jetbrainsCompose) alias(libs.plugins.compose.compiler) }Jetpack Composeコンパイラのコンパイラオプションを使用している場合は、それらを
composeCompiler {}ブロック内で設定します。 詳細は ComposeコンパイラオプションDSL を参照してください。
発生する可能性のある問題: "Missing resource with path"
Kotlin 1.9.0から2.0.0に、あるいは2.0.0から1.9.0に切り替える際、以下のエラーが発生することがあります。
org.jetbrains.compose.resources.MissingResourceException: Missing resource with path: ...これを解決するには、プロジェクトのルートおよび各モジュール内にあるすべての build ディレクトリを削除してください。
次のステップ
- ComposeコンパイラのKotlinリポジトリへの移行に関する Googleのアナウンス を参照してください。
- ComposeコンパイラオプションDSL を参照してください。
- Jetpack Composeアプリを移行するには、Composeコンパイラドキュメント を確認してください。
