部品構成表を使用する

Compose 部品構成表(BOM)を使用すると、BOM のバージョンのみを指定して、すべての Compose ライブラリ バージョンを管理できます。BOM 自体には、さまざまな Compose ライブラリが連携して適切に機能するよう、それぞれのライブラリ安定版へのリンクが含まれています。アプリで BOM を使用するときに、Compose ライブラリの依存関係自体にバージョンを追加する必要はありません。BOM バージョンを更新すると、使用しているすべてのライブラリが自動的に新しいバージョンに更新されます。

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.10.01")
    implementation(composeBom)
    testImplementation(composeBom)
    androidTestImplementation(composeBom)

    // Specify Compose library dependencies without a version definition
    implementation("androidx.compose.foundation:foundation")
    // ..
    testImplementation("androidx.compose.ui:ui-test-junit4")
    // ..
    androidTestImplementation("androidx.compose.ui:ui-test")
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom:2024.10.01')
    implementation composeBom
    testImplementation composeBom
    androidTestImplementation composeBom

    // Specify Compose library dependencies without a version definition
    implementation 'androidx.compose.foundation:foundation'
    // ..
    testImplementation 'androidx.compose.ui:ui-test-junit4'
    // ..
    androidTestImplementation 'androidx.compose.ui:ui-test'
}

特定の BOM バージョンにマッピングされている Compose ライブラリ バージョンを見つけるには、BOM とライブラリ バージョンのマッピングを確認してください。

Compose Compiler ライブラリが BOM に含まれていないのはなぜですか?

Compose Kotlin コンパイラ拡張機能(androidx.compose.compiler)は、Compose ライブラリのバージョンでなく、Kotlin コンパイラ プラグインのバージョンにリンクされており、Compose の他の部分とは異なる頻度でリリースされます。

Kotlin 2.0 以降、Compose アプリコンパイラは Kotlin コンパイラとともに管理され、Kotlin コンパイラと同じバージョンを使用します。構成の詳細については、Compose Compiler Gradle プラグインをご覧ください。

Kotlin 2.0 より前は、お使いの Kotlin バージョンと互換性のあるバージョンを使用する必要があります。プラグインの各バージョンにマッピングされている Kotlin バージョンは、Compose と Kotlin の互換性マップで確認できます。構成方法については、Compose コンパイラをご覧ください。

BOM の指定と異なるライブラリ バージョンを使用するにはどうすればよいですか?

build.gradle の dependencies セクションで、BOM プラットフォームのインポートはそのままにして、ライブラリ依存関係のインポートで、オーバーライドするバージョンを指定します。たとえば、BOM で指定されているバージョンに関係なく、アニメーション ライブラリの新しいバージョンを使用する場合の依存関係の宣言方法は次のとおりです。

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.10.01")
    implementation(composeBom)

    // Override the BOM version when needed
    implementation("androidx.compose.animation:animation:1.8.0-alpha05")

    // ..
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform("androidx.compose:compose-bom:2024.10.01")
    implementation composeBom

    // Override the BOM version when needed
    implementation 'androidx.compose.animation:animation:1.8.0-alpha05'

    // ..
}

BOM はすべての Compose ライブラリを自動的にアプリに追加しますか?

いいえ。アプリに Compose ライブラリを実際に追加して使用するには、モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)で、各ライブラリを個別の依存関係の行として宣言する必要があります。

BOM を使用すると、アプリ内の任意の Compose ライブラリのバージョンの互換性を維持できますが、BOM が実際にそれらの Compose ライブラリをアプリに追加することはありません。

将来的に、Compose ライブラリは個別にバージョニングされる予定です。つまり、バージョン番号はそれぞれ独自のペースでインクリメントされるようになります。各ライブラリの最新の安定版リリースは一緒にテストされます。個別にバージョニングされる各ライブラリの最新の安定版は見つけにくくなることが考えられます。BOM を利用すると、そのような最新バージョンを自動的に見つけて使用できます。

BOM の使用は義務ですか?

いいえ。個々の依存関係バージョンを手動で追加することもできます。しかし、すべての最新の安定版を同時に使用することが容易になるので、BOM を使用することをおすすめします。

BOM をバージョン カタログと一緒に使用できますか?

はい。BOM 自体をバージョン カタログに含めると、他の Compose ライブラリ バージョンを省略できます。

[libraries]
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" }
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }

モジュールの build.gradle に BOM をインポートすることを忘れないでください。

Kotlin

dependencies {
    val composeBom = platform(libs.androidx.compose.bom)
    implementation(composeBom)
    androidTestImplementation(composeBom)

    // import Compose dependencies as usual
}

Groovy

dependencies {
    Dependency composeBom = platform(libs.androidx.compose.bom)
    implementation composeBom
    androidTestImplementation(composeBom)

    // import Compose dependencies as usual
}

Compose ライブラリのアルファ版またはベータ版を試したい場合はどうすればよいですか?

利用可能な Compose BOM は 3 つあります。各 BOM は、利用可能な最新バージョンの Compose ライブラリの特定の時点のスナップショットです。

  • Stable - 各ライブラリの最新の安定版が含まれています。
  • ベータ版 - 各ライブラリの最新のベータ版、リリース候補版(RC)、安定版が含まれています。
  • アルファ版 - 各ライブラリの最新のアルファ版、ベータ版、RC 版、安定版が含まれています

BOM のアルファ版とベータ版は、BOM アーティファクト名に -alpha-beta を追加して指定します。安定版には接尾辞がありません。

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom-alpha:2024.10.01")
    //            or platform("androidx.compose:compose-bom-beta:2024.10.01")
    implementation(composeBom)
    // ..
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom-alpha:2024.10.01')
    //                   or platform('androidx.compose:compose-bom-beta:2024.10.01')
    implementation composeBom
    // ..
}

BOM に関する問題を報告したり、フィードバックを送信したりするにはどうすればよいですか?

Issue Tracker で問題を報告できます。