ข้อมูลผลิตภัณฑ์ (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") }
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 กับเวอร์ชันไลบรารี
เหตุใดไลบรารีคอมไพเลอร์ 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 ได้อย่างไร
ในส่วนbuild.gradle
dependencies ให้นำเข้าแพลตฟอร์ม 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 มี 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
- แหล่งข้อมูลในเครื่องมือเขียน