使用物料清單

您只要指定 BOM 版本,即可利用 Compose 物料清單 (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'
}

如要瞭解哪些 Compose 程式庫版本對應至特定的 BOM 版本,請參閱 BOM 與程式庫版本對應清單

為什麼 BOM 沒有納入 Compose Compiler 程式庫?

Compose Kotlin 編譯器擴充功能 (androidx.compose.compiler) 並未連結至 Compose 程式庫版本,而是連結至 Kotlin 編譯器外掛程式的版本,且發布頻率與 Compose 的其餘部分不同。

自 Kotlin 2.0 起,Compose 應用程式編譯器會與 Kotlin 編譯器一併管理,並使用與 Kotlin 編譯器相同的版本。如需設定詳細資訊,請參閱「Compose Compiler Gradle 外掛程式」。

在 Kotlin 2.0 之前,您必須使用與 Kotlin 版本相容的版本。您可以在 Compose 對應 Kotlin 的相容性清單中找到對應至每個外掛程式版本的 Kotlin 版本,以及如何在 Compose Compiler 中設定。

如何使用與 BOM 中指定版本不同的程式庫版本?

build.gradle 依附元件區段中,保留 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 程式庫的 Alpha 版或 Beta 版,該怎麼做?

目前有三種可用的 Compose BOM。每個 BOM 都是 Compose 程式庫最新可用版本的即時快照。

  • 穩定版:包含各程式庫的最新穩定版
  • Beta 版:包含每個程式庫的最新 Beta 版、候選版 (RC) 或穩定版
  • Alpha - 包含每個程式庫的最新 Alpha、Beta、候選版或穩定版

您可以將 -alpha-beta 新增至 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 回報問題。