ใช้ Bill of Materials

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

Kotlin

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

ส่วนขยายคอมไพเลอร์ Compose Kotlin (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.09.00")
    implementation(composeBom)

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

    // ..
}

ดึงดูด

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

    // Override the BOM version when needed
    implementation 'androidx.compose.animation:animation:1.13.0-alpha03'

    // ..
}

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

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

การใช้ 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.09.00")
    //            or platform("androidx.compose:compose-bom-beta:2026.09.00")
    implementation(composeBom)
    // ..
}

ดึงดูด

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

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

คุณสามารถแจ้งปัญหาในIssue Trackerของเรา