Menggunakan Daftar Materi

Bill of Materials (BOM) Compose memungkinkan Anda mengelola semua library Compose dengan menentukan hanya versi BOM. BOM memiliki link ke versi stabil library Compose yang berbeda, sedemikian rupa sehingga dapat digunakan bersama. Saat menggunakan BOM di aplikasi, Anda tidak perlu menambahkan versi apa pun ke dependensi library Compose itu sendiri. Saat Anda mengupdate versi BOM, semua library yang digunakan akan otomatis diupdate ke versi terbaru.

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.09.03")
    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.09.03')
    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'
}

Untuk mengetahui versi library Compose mana yang dipetakan ke versi BOM tertentu, lihat Pemetaan BOM ke versi library.

Mengapa library Compose Compiler tidak disertakan dalam BOM?

Ekstensi compiler Kotlin Compose (androidx.compose.compiler) tidak ditautkan ke versi library Compose. Sebagai gantinya, ekstensi ini ditautkan ke versi plugin compiler Kotlin dan dirilis dalam ritme yang terpisah dari Compose lainnya.

Mulai Kotlin 2.0, appcompiler Compose dikelola bersama Kotlin dan menggunakan versi yang sama dengan compiler Kotlin. Lihat Plugin Gradle Compose Compiler untuk detail konfigurasi.

Sebelum Kotlin 2.0, Anda harus memastikan untuk menggunakan versi yang kompatibel dengan versi Kotlin Anda. Anda dapat menemukan versi Kotlin yang dipetakan ke setiap versi versi plugin di Peta Kompatibilitas Compose ke Kotlin, dan cara mengonfigurasinya di Compose Compiler.

Bagaimana cara menggunakan versi library yang berbeda dari yang ditetapkan di BOM?

Di bagian dependensi build.gradle, pertahankan impor platform BOM. Pada impor dependensi library, tentukan versi penggantian. Sebagai berikut ini cara mendeklarasikan dependensi jika ingin menggunakan versi library animasi yang lebih baru, tidak masalah versi apa yang ditetapkan dalam BOM:

Kotlin

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

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

    // ..
}

Groovy

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

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

    // ..
}

Apakah BOM secara otomatis menambahkan semua library Compose ke aplikasi saya?

Tidak. Untuk menambahkan dan menggunakan library Compose di aplikasi, Anda harus mendeklarasikan setiap library sebagai baris dependensi terpisah dalam file Gradle modul (level aplikasi) (biasanya app/build.gradle).

Penggunaan BOM akan memastikan bahwa versi library Compose di aplikasi Anda kompatibel, tetapi BOM tidak benar-benar menambahkan library Compose tersebut ke aplikasi Anda.

Ke depannya, library Compose akan diberi versi secara independen, yang berarti nomor versi akan mulai bertambah seiring waktu. Rilis stabil terbaru dari setiap library diuji bersama. Namun, menemukan versi stabil terbaru dari setiap library bisa jadi tidak mudah, dan BOM membantu Anda menggunakan versi terbaru ini secara otomatis.

Apakah saya dipaksa menggunakan BOM?

Tidak. Anda masih dapat memilih untuk menambahkan setiap versi dependensi secara manual. Namun, sebaiknya gunakan BOM karena akan mempermudah penggunaan semua versi stabil terbaru secara bersamaan.

Apakah BOM dapat digunakan dengan katalog versi?

Ya. Anda dapat menyertakan BOM itu sendiri dalam katalog versi, dan menghapus versi library Compose lainnya:

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

Jangan lupa untuk mengimpor BOM dalam build.gradle modul Anda:

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
}

Bagaimana jika saya ingin mencoba rilis alfa atau beta library Compose?

Ada tiga BOM Compose yang tersedia. Setiap BOM adalah snapshot titik waktu dari versi library Compose terbaru yang tersedia.

  • Stabil - berisi versi stabil terbaru dari setiap library
  • Beta - berisi versi beta, kandidat rilis (RC), atau stabil terbaru dari setiap library
  • Alfa - berisi versi alfa, beta, RC, atau versi stabil terbaru dari setiap library

Versi Alfa dan Beta BOM ditentukan dengan menambahkan -alpha dan -beta ke nama artefak BOM. Versi stabil tidak memiliki akhiran.

Kotlin

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

Groovy

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

Bagaimana cara melaporkan masalah atau menawarkan masukan tentang BOM?

Anda dapat melaporkan masalah di issue tracker kami.