שימוש בשטר חומרים

הכלי Compose Bill of Materials (BOM) מאפשר לכם לנהל את כל הגרסאות של ספריית Compose על ידי ציון הגרסה של BOM בלבד. ב-BOM עצמו יש קישורים לגרסאות היציבות של ספריות Compose השונות, כך שהן פועלות היטב יחד. כשמשתמשים ב-BOM באפליקציה, לא צריך להוסיף גרסה ליחסי התלות של ספריית 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")
}

מגניב

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‏ (androidx.compose.compiler) לא מקושר לגרסאות של ספריית Compose. במקום זאת, הוא מקושר לגרסאות של תוסף Kotlin compiler ומופץ בקצב שונה משאר הרכיבים של Compose.

החל מ-Kotlin 2.0, כלי ההידור של אפליקציות Compose מנוהל לצד מהדר Kotlin ומשתמש באותה גרסה כמו מהדר Kotlin. פרטים על ההגדרה מופיעים במאמר Compose Compiler Gradle plugin.

לפני Kotlin 2.0, צריך לוודא שמשתמשים בגרסה שתואמת לגרסת Kotlin. במפת התאימות של Compose ל-Kotlin מוסבר איך להגדיר את הגרסה של Kotlin שמתאימה לכל גרסה של הפלאגין, ובמהדר Compose מוסבר איך להגדיר את הגרסה.

איך משתמשים בגרסה אחרת של ספרייה מזו שמוגדרת ב-BOM?

בקטע build.gradle dependencies, משאירים את הייבוא של פלטפורמת ה-BOM. בייבוא של יחסי התלות של הספרייה, מציינים את הגרסה שרוצים להשתמש בה. לדוגמה, כך מגדירים תלויות אם רוצים להשתמש בגרסה חדשה יותר של ספריית האנימציה, בלי קשר לגרסה שמוגדרת ב-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")

    // ..
}

מגניב

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 לאפליקציה ולהשתמש בהן, צריך להצהיר על כל ספרייה כשורה נפרדת של תלות בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל app/build.gradle).

שימוש ב-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
}

מגניב

dependencies {
    Dependency composeBom = platform(libs.androidx.compose.bom)
    implementation composeBom
    androidTestImplementation(composeBom)

    // import Compose dependencies as usual
}

מה אם אני רוצה לנסות גרסאות אלפא או בטא של ספריות Compose?

יש שלוש רשימות חומרים זמינות. כל BOM הוא תמונת מצב של הגרסאות העדכניות ביותר של ספריות Compose שזמינות באותו רגע.

  • יציב – מכיל את הגרסאות היציבות האחרונות של כל ספרייה
  • בטא – מכילה את גרסאות הבטא, המועמדות להפצה (RC) או היציבות האחרונות של כל ספרייה
  • אלפא – מכיל את הגרסאות האחרונות של אלפא, בטא, RC או גרסאות יציבות של כל ספרייה

כדי לציין את גרסאות האלפא והבטא של ה-BOM, מוסיפים -alpha ו--beta לשם פריט המידע שנוצר בתהליך פיתוח (Artifact) של ה-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)
    // ..
}

מגניב

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?

אפשר לדווח על בעיות בכלי למעקב אחר בעיות.