ข้อมูลผลิตภัณฑ์สำเร็จรูป (BOM) ของ Compose ช่วยให้คุณจัดการเวอร์ชันของไลบรารี Compose ทั้งหมดได้โดยระบุเฉพาะเวอร์ชันของ BOM 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") }
ดึงดูด
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 กับเวอร์ชันไลบรารี
เหตุใดไลบรารีคอมไพเลอร์ Compose จึงไม่ได้รวมอยู่ใน BOM
ส่วนขยายคอมไพเลอร์ Kotlin ของ Compose (androidx.compose.compiler) ไม่ได้ลิงก์กับเวอร์ชันไลบรารี Compose แต่จะลิงก์กับปลั๊กอินคอมไพเลอร์ Kotlin เวอร์ชันต่างๆ และเผยแพร่ด้วยความถี่แยกต่างหากจากโปรแกรม Compose ที่เหลือ
ตั้งแต่ Kotlin 2.0 เป็นต้นไป ระบบจะจัดการคอมไพเลอร์แอป Compose ควบคู่ไปกับคอมไพเลอร์ Kotlin และใช้เวอร์ชันเดียวกับคอมไพเลอร์ Kotlin ดูรายละเอียดการกําหนดค่าได้ที่ปลั๊กอิน Gradle ของคอมไพเลอร์ Compose
ก่อน Kotlin 2.0 คุณต้องตรวจสอบว่าใช้เวอร์ชันที่เข้ากันได้กับ Kotlin ของคุณ คุณดูเวอร์ชัน Kotlin ที่จับคู่กับปลั๊กอินแต่ละเวอร์ชันได้ที่แผนที่ความเข้ากันได้ของ Compose กับ Kotlin และดูวิธีกำหนดค่าได้ที่ คอมไพเลอร์ Compose
ฉันจะใช้ไลบรารีเวอร์ชันอื่นที่ไม่ใช่เวอร์ชันที่ระบุไว้ใน BOM ได้อย่างไร
ในส่วนทรัพยากร Dependency ของ build.gradle
ให้เก็บการนำเข้าของแพลตฟอร์ม BOM ไว้ ในการนําเข้าทรัพยากร Dependency ของไลบรารี ให้ระบุเวอร์ชันที่ลบล้าง ตัวอย่างเช่น วิธีประกาศข้อกําหนดเบื้องต้นหากต้องการใช้ไลบรารีภาพเคลื่อนไหวเวอร์ชันใหม่ ไม่ว่าเวอร์ชันใดจะระบุไว้ใน 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 ในแอป คุณต้องประกาศไลบรารีแต่ละรายการเป็นบรรทัด Dependency แยกต่างหากในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็นไฟล์ app/build.gradle)
การใช้ BOM ช่วยให้มั่นใจได้ว่าไลบรารี Compose ทั้งหมดในแอปของคุณจะใช้ร่วมกันได้ แต่ BOM ไม่ได้เพิ่มไลบรารี Compose เหล่านั้นลงในแอป
เหตุใด BOM จึงเป็นวิธีที่แนะนำในการจัดการเวอร์ชันไลบรารี Compose
นับจากนี้ไป ไลบรารี Compose จะมีเวอร์ชันแยกต่างหาก ซึ่งหมายความว่าจะเริ่มเพิ่มหมายเลขเวอร์ชันตามเวอร์ชันที่ต้องการ ระบบจะทดสอบไลบรารีแต่ละรายการในรุ่นล่าสุดที่เสถียรร่วมกัน อย่างไรก็ตาม การค้นหาไลบรารีแต่ละรายการในเวอร์ชันที่เสถียรล่าสุดอาจเป็นเรื่องยาก และ BOM จะช่วยให้คุณใช้เวอร์ชันล่าสุดเหล่านี้โดยอัตโนมัติได้
ฉันถูกบังคับให้ใช้ BOM ไหม
ไม่ คุณยังคงเลือกที่จะเพิ่มเวอร์ชันทรัพยากร Dependency แต่ละเวอร์ชันด้วยตนเองได้ อย่างไรก็ตาม เราขอแนะนำให้ใช้ BOM เนื่องจากจะช่วยให้ใช้เวอร์ชันล่าสุดที่เสถียรทั้งหมดพร้อมกันได้ง่ายขึ้น
BOM ใช้กับแคตตาล็อกเวอร์ชันได้ไหม
ได้ คุณสามารถใส่ BOM ไว้ในแคตตาล็อกเวอร์ชันและละเว้นเวอร์ชันอื่นๆ ของไลบรารีคอมโพสิทได้ ดังนี้
[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 BOM มีอยู่ 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: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 ได้อย่างไร
คุณสามารถรายงานปัญหาในเครื่องมือติดตามปัญหาของเรา
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- Material Design 3 ในเครื่องมือเขียน
- ConstraintLayout ใน Compose
- ทรัพยากรในเครื่องมือเขียน