ใช้ Bill of Materials

รายการวัสดุ (BOM) ของ Compose ช่วยให้คุณจัดการไลบรารี Compose ทุกเวอร์ชันได้โดยระบุเฉพาะเวอร์ชันของ BOM ตัว BOM เองมีลิงก์ไปยังเวอร์ชันเสถียรของไลบรารี Compose ต่างๆ เพื่อให้ทำงานร่วมกันได้ดี เมื่อใช้ BOM ในแอป คุณไม่จำเป็นต้องเพิ่มเวอร์ชันลงในทรัพยากร Dependency ของไลบรารี Compose เอง เมื่ออัปเดตเวอร์ชัน BOM ระบบจะอัปเดตไลบรารีทั้งหมดที่คุณใช้อยู่เป็นเวอร์ชันใหม่โดยอัตโนมัติ

Kotlin

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

ดึงดูด

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom:2026.03.00')
    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 กับเวอร์ชันไลบรารี

เหตุใดจึงไม่มีไลบรารีคอมไพเลอร์ Compose รวมอยู่ใน BOM

ส่วนขยายคอมไพเลอร์ Kotlin ของ Compose (androidx.compose.compiler) ไม่ได้ลิงก์กับไลบรารี Compose เวอร์ชันต่างๆ แต่จะลิงก์กับเวอร์ชันของปลั๊กอินคอมไพเลอร์ Kotlin และเผยแพร่ในจังหวะที่แยกจากส่วนอื่นๆ ของ Compose

ตั้งแต่ Kotlin 2.0 เป็นต้นไป ระบบจะจัดการคอมไพเลอร์แอป Compose ควบคู่ไปกับคอมไพเลอร์ Kotlin และใช้เวอร์ชันเดียวกับคอมไพเลอร์ Kotlin ดูรายละเอียดการกำหนดค่าได้ที่ ปลั๊กอิน Gradle ของคอมไพเลอร์ Compose สำหรับ

ในเวอร์ชันที่ต่ำกว่า Kotlin 2.0 ให้ดูแผนผังความเข้ากันได้ของ Compose กับ Kotlin เพื่อระบุเวอร์ชันคอมไพเลอร์ที่เข้ากันได้ กับ Kotlin เวอร์ชันของคุณ และดูคอมไพเลอร์ Composeสำหรับ คำแนะนำเกี่ยวกับการกำหนดค่า

ฉันจะใช้ไลบรารีเวอร์ชันอื่นที่ไม่ใช่เวอร์ชันที่กำหนดไว้ใน BOM ได้อย่างไร

ในส่วนทรัพยากร Dependency ของ build.gradle ให้คงการนำเข้าแพลตฟอร์ม BOM ไว้ เมื่อนำเข้าทรัพยากร Dependency ของไลบรารี ให้ระบุเวอร์ชันที่จะใช้แทน ตัวอย่างเช่น วิธีประกาศทรัพยากร Dependency หากต้องการใช้ไลบรารีภาพเคลื่อนไหวเวอร์ชันใหม่กว่า ไม่ว่าเวอร์ชันใดจะกำหนดไว้ใน BOM ก็ตาม

Kotlin

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

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

    // ..
}

ดึงดูด

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

    // Override the BOM version when needed
    implementation 'androidx.compose.animation:animation:1.11.0-beta01'

    // ..
}

BOM จะเพิ่มไลบรารี Compose ทั้งหมดลงในแอปของฉันโดยอัตโนมัติไหม

ไม่ คุณต้องประกาศไลบรารีแต่ละรายการเป็นบรรทัดทรัพยากร Dependency แยกกันในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยมากจะเป็นไฟล์ app/build.gradle) จึงจะเพิ่มและใช้ไลบรารี Compose ในแอปได้

การใช้ BOM จะช่วยยืนยันว่าไลบรารี Compose เวอร์ชันต่างๆ ในแอปเข้ากันได้ แต่ BOM จะไม่เพิ่มไลบรารี Compose เหล่านั้นลงในแอป

ในอนาคต ไลบรารี Compose จะมีเวอร์ชันแยกกัน ซึ่งหมายความว่าหมายเลขเวอร์ชันจะเริ่มเพิ่มขึ้นตามจังหวะของตัวเอง ระบบจะทดสอบรุ่นเสถียรล่าสุดของไลบรารีแต่ละรายการร่วมกัน อย่างไรก็ตาม การค้นหาเวอร์ชันเสถียรล่าสุดของไลบรารีแต่ละรายการอาจเป็นเรื่องยาก และ BOM จะช่วยให้คุณใช้เวอร์ชันล่าสุดเหล่านี้ได้โดยอัตโนมัติ

ฉันต้องใช้ BOM ไหม

ไม่ คุณยังเลือกเพิ่มทรัพยากร Dependency แต่ละเวอร์ชันด้วยตนเองได้ อย่างไรก็ตาม เราขอแนะนำให้ใช้ 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" }

อย่าลืมนำเข้า BOM ใน build.gradle ของโมดูล

Kotlin

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

    // import Compose dependencies as usual
}

ดึงดูด

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

    // import Compose dependencies as usual
}

ฉันควรทำอย่างไรหากต้องการลองใช้ไลบรารี Compose เวอร์ชันอัลฟ่าหรือเบต้า

BOM ของ Compose มี 3 เวอร์ชัน BOM แต่ละเวอร์ชันเป็นสแนปช็อต ณ จุดหนึ่งของไลบรารี Compose เวอร์ชันล่าสุดที่พร้อมใช้งาน

  • เสถียร - มีไลบรารีแต่ละรายการเวอร์ชันเสถียรล่าสุด
  • เบต้า - มีไลบรารีแต่ละรายการเวอร์ชันเบต้า, รุ่นที่อาจได้รับการเผยแพร่ (RC) หรือเวอร์ชันเสถียรล่าสุด
  • อัลฟ่า - มีไลบรารีแต่ละรายการเวอร์ชันอัลฟ่า, เบต้า, RC หรือเวอร์ชันเสถียรล่าสุด

คุณระบุ BOM เวอร์ชันอัลฟ่าและเบต้าได้โดยเพิ่ม -alpha และ -beta ลงในชื่ออาร์ติแฟกต์ BOM ส่วนเวอร์ชันเสถียรจะไม่มีคำต่อท้าย

Kotlin

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

ดึงดูด

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

ฉันจะรายงานปัญหาหรือแสดงความคิดเห็นเกี่ยวกับ BOM ได้อย่างไร

คุณสามารถยื่นเรื่องในเครื่องมือติดตามปัญหาของเรา