Compose Bill of Materials (BOM) ช่วยให้คุณจัดการไลบรารี 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:2025.05.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") }
Groovy
dependencies { // Specify the Compose BOM with a version definition Dependency composeBom = platform('androidx.compose:compose-bom:2025.05.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 Compiler ใน BOM
ส่วนขยายคอมไพเลอร์ Kotlin ของ Compose (androidx.compose.compiler) ไม่ได้ลิงก์ กับเวอร์ชันไลบรารี Compose แต่จะลิงก์กับปลั๊กอินคอมไพเลอร์ Kotlin และเผยแพร่แยกต่างหากจาก Compose ที่เหลือ
ตั้งแต่ Kotlin 2.0 เป็นต้นไป ระบบจะจัดการ Compose Appcompiler ควบคู่ไปกับ Kotlin Compiler และใช้เวอร์ชันเดียวกับ Kotlin Compiler ดูรายละเอียดการกำหนดค่าได้ที่ Compose Compiler Gradle plugin
ก่อน Kotlin 2.0 คุณต้องตรวจสอบว่าใช้เวอร์ชันที่เข้ากันได้ กับ Kotlin เวอร์ชันของคุณ คุณดูเวอร์ชัน Kotlin ที่แมปกับปลั๊กอินแต่ละเวอร์ชันได้ที่แผนที่ความเข้ากันได้ของ Compose กับ Kotlin และดูวิธีกำหนดค่าได้ที่ตัวคอมไพล์ Compose
ฉันจะใช้ไลบรารีเวอร์ชันอื่นนอกเหนือจากที่ระบุไว้ใน BOM ได้อย่างไร
ในส่วนbuild.gradle
การอ้างอิง ให้คงการนำเข้า BOM
platform ไว้ ในการนำเข้าทรัพยากร Dependency ของไลบรารี ให้ระบุเวอร์ชันที่จะลบล้าง ตัวอย่างเช่น ต่อไปนี้คือวิธีประกาศ
การอ้างอิงหากต้องการใช้ไลบรารีภาพเคลื่อนไหวเวอร์ชันใหม่ ไม่ว่า
จะมีการกำหนดเวอร์ชันใดใน BOM
Kotlin
dependencies { // Specify the Compose BOM with a version definition val composeBom = platform("androidx.compose:compose-bom:2025.05.00") implementation(composeBom) // Override the BOM version when needed implementation("androidx.compose.animation:animation:1.9.0-alpha02") // .. }
Groovy
dependencies { // Specify the Compose BOM with a version definition Dependency composeBom = platform("androidx.compose:compose-bom:2025.05.00") implementation composeBom // Override the BOM version when needed implementation 'androidx.compose.animation:animation:1.9.0-alpha02' // .. }
BOM จะเพิ่มไลบรารี Compose ทั้งหมดลงในแอปของฉันโดยอัตโนมัติไหม
ไม่ หากต้องการเพิ่มและใช้ไลบรารี Compose ในแอปจริง คุณต้องประกาศไลบรารีแต่ละรายการเป็นบรรทัดทรัพยากร Dependency แยกต่างหากในไฟล์ Gradle ระดับโมดูล (ระดับแอป) (โดยปกติคือ app/build.gradle)
การใช้ BoM จะช่วยให้มั่นใจได้ว่าเวอร์ชันของไลบรารี Compose ในแอปของคุณจะเข้ากันได้ แต่ 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" }
อย่าลืมนำเข้า BOM ใน build.gradle
ของโมดูล
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 เวอร์ชันอัลฟ่าหรือเบต้า
มี 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:2025.05.00") // or platform("androidx.compose:compose-bom-beta:2025.05.00") implementation(composeBom) // .. }
Groovy
dependencies { // Specify the Compose BOM with a version definition Dependency composeBom = platform('androidx.compose:compose-bom-alpha:2025.05.00') // or platform('androidx.compose:compose-bom-beta:2025.05.00') implementation composeBom // .. }
ฉันจะรายงานปัญหาหรือแสดงความคิดเห็นเกี่ยวกับ BOM ได้อย่างไร
คุณสามารถรายงานปัญหาในเครื่องมือติดตามปัญหาของเรา
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- Material Design 3 ใน Compose
- ConstraintLayout ใน Compose
- ทรัพยากรใน Compose