部品構成表を使用する

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

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

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

Compose Kotlin コンパイラ拡張機能(androidx.compose.compiler)は、Compose ライブラリのバージョンでなく、Kotlin コンパイラ プラグインのバージョンにリンクされており、Compose の他の部分とは異なる頻度でリリースされます。したがって、お使いの Kotlin バージョンと互換性のあるバージョンを使用してください。プラグインの各バージョンにマッピングされている Kotlin バージョンは、Compose と Kotlin の互換性マップにあります。

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

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

dependencies {
    // Import the Compose BOM
    implementation platform('androidx.compose:compose-bom:2024.02.01')

    // Import Material Design 3 library
    implementation 'androidx.compose.material3:material3:1.1.2'

    // Import other Compose libraries without version numbers
    // ..
    implementation 'androidx.compose.foundation:foundation'
}

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 をインポートすることを忘れないでください。

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

    // import Compose dependencies as usual
}

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

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