ใช้ Bill of Materials

ข้อมูลผลิตภัณฑ์สำเร็จรูป (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 เหล่านั้นลงในแอป

นับจากนี้ไป ไลบรารี 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 ได้อย่างไร

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