Skip to content

Composeコンパイラプラグイン設定エラーの解決

問題の概要

Kotlin 1.9+とJetpack Composeを使用するAndroidプロジェクトで、ビルド時に以下のエラーが発生するケースがあります:

Starting in Kotlin 2.0, the Compose Compiler Gradle plugin is required when compose is enabled.

このエラーが表示される典型的な設定例:

kotlin
buildscript {
    ext.kotlin_version = '1.9.0'
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.20"
    }
}

android {
    buildFeatures.compose = true
    composeOptions.kotlinCompilerExtensionVersion = "1.5.14"
}

表面的な矛盾点:
プロジェクトではKotlin 1.9を宣言しているのに「Kotlin 2.0+」に関連するエラーが発生しています。問題はkotlin-gradle-plugin:2.0.20のように2.0系プラグインを使用していることです。Kotlin 2.0ではCompose Compilerがコアから分離され、明示的な構成が必要になりました。

根本原因

Kotlin 2.0以降で導入されたアーキテクチャ変更が原因です:

  • Kotlin 1.9まではComposeコンパイラが標準でバンドルされていました
  • Kotlin 2.0+ではComposeコンパイラが独立したプラグインとして分離
  • compose = trueが有効な場合、明示的なプラグイン宣言が必須に変更

提供された設定ではkotlin-gradle-plugin 2.0.20(Kotlin 2.0系)を使っているためエラーが発生しています。


解決手法

重要な共通手順: composeOptionsのバージョンをKotlinプラグインバージョンに合わせる必要があります
(kotlinCompilerExtensionVersion = "2.0.0"のようにバージョン形式が変更)

方法1: Gradleバージョンカタログ利用 (推奨, 最新プロジェクト向け)

libs.versions.tomlを使った方法です。Android Studioの新規プロジェクトで標準採用されています。

  1. gradle/libs.versions.toml にバージョン定義
toml
[versions]
kotlin = "2.1.0" # 実際に使用するKotlinバージョン

[plugins]
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
  1. プロジェクトレベルの build.gradle.kts でプラグイン宣言
kotlin
plugins {
    alias(libs.plugins.compose.compiler) apply false
}
  1. アプリモジュールの build.gradle.kts でプラグイン適用
kotlin
plugins {
    alias(libs.plugins.compose.compiler)
}

android {
    composeOptions {
        kotlinCompilerExtensionVersion = libs.versions.kotlin.get() 
    }
}

TIP

kotlinCompilerExtensionVersionはCompose Kotlinコンパイラのバージョンを指定します。Kotlin本体バージョンと一致させることが推奨されます

方法2: 従来型build.gradle設定 (レガシープロジェクト向け)

Gradleカタログ未使用の場合の対応方法です。

  1. プロジェクトレベルの build.gradle 変更
gradle
buildscript {
    ext {
        kotlin_version = '2.1.0' // Kotlin本体バージョン
        compose_compiler_version = kotlin_version // 互換バージョン指定
    }

    dependencies {
        classpath "org.jetbrains.kotlin.plugin.compose:org.jetbrains.kotlin.plugin.compose.gradle.plugin:$kotlin_version"
    }
}
  1. アプリモジュールの build.gradle 変更
gradle
plugins {
    id "org.jetbrains.kotlin.plugin.compose"
}

android {
    composeOptions {
        kotlinCompilerExtensionVersion compose_compiler_version
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:$compose_compiler_version"
}

注意点

古いプロジェクトでandroidx.compose.compiler:compiler依存関係がある場合、必ず削除してください。これはKotlin 2.0+で非推奨となりました

設定後の確認ポイント

  1. KotlinプラグインバージョンとComposeコンパイラーバージョンが一致していること
  2. 全モジュールでorg.jetbrains.kotlin.plugin.composeプラグインが適用されていること
  3. com.android.applicationプラグインがkotlin-androidより前に宣言されていること
gradle
// 正しい宣言順序例
plugins {
    id "com.android.application"
    id "org.jetbrains.kotlin.android"
    id "org.jetbrains.kotlin.plugin.compose" // この位置に追加
}

変更背景と公式参考情報

この変更はComposeとKotlinの開発サイクルを独立させるために導入されました:

  • Compilerの更新がKotlin本体リリースに依存しない
  • Compose固有の改良を迅速に提供可能
  • ビルドパフォーマンスの改善

公式ドキュメント:
Android Developers - Composeコンパイラ


トラブルシューティング

ビルドエラーが解消しない場合のチェックリスト:

  • [ ] プロジェクトのKotlinバージョンが全て統一されているか (ext.kotlin_version)
  • [ ] キャッシュクリーン実行: File > Invalidate Caches / Restart
  • [ ] Gradle同期: Sync Project with Gradle Files
  • [ ] 依存関係更新: use Gradle version 8.5+

新しい構成への移行後は、Compose関連機能が正常動作するかコンパイルして確認してください。設定変更によって、Kotlin 2.0+環境でのCompose開発が可能になります。