部品構成表を使用する

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 で問題を報告できます。