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

באמצעות 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:2024.09.03")
    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.09.03')
    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'
}

כדי לבדוק אילו גרסאות של ספריית פיתוח נייטיב ממופות לגרסת BOM ספציפית: כדאי לעיין במיפוי של BOM לגרסאות של ספריות.

למה הספרייה 'מהדר (Complier)' לא נכללת ב-BOM?

התוסף של קומפילטור Kotlin ל-Compose‏ (androidx.compose.compiler) לא מקושר לגרסאות של ספריית Compose. במקום זאת, הוא מקושר לגרסאות של הפלאגין של קומפילר Kotlin, והוא משוחרר בקצב נפרד משאר Compose.

החל מ-Kotlin 2.0, מהדר האפליקציות של Composer מנוהל לצד Kotlin של המהדר (compiler) ומשתמש באותה גרסה כמו המהדר של Kotlin. למידע נוסף, ראו פלאגין של Compose Compiler Gradle פרטי ההגדרות האישיות.

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

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

בקטע של יחסי התלות build.gradle, שומרים את הייבוא של ה-BOM הפלטפורמה. בייבוא של יחסי התלות בספרייה, מציינים את הגרסה שתחליף את הגרסה הקודמת. לדוגמה, כך מגדירים יחסי תלות אם רוצים להשתמש בגרסה חדשה יותר של ספריית האנימציה, ללא קשר לגרסה שצוינה ב-BOM:

Kotlin

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

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

    // ..
}

Groovy

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

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

    // ..
}

האם ה-BOM מוסיף באופן אוטומטי את כל ספריות הכתיבה לאפליקציה שלי?

לא. כדי להוסיף ספריות של הכתיבה ולהשתמש בהן באפליקציה, צריך להצהיר על כל אחת מהן כשורת תלות נפרדת בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל app/build.gradle).

השימוש ב-BOM מבטיח שהגרסאות של כל ספריות הכתיבה באפליקציה אבל ה-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
}

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

יש שלושה קבצים של BOM ב-Compose. כל BOM הוא קובץ snapshot של הגרסאות העדכניות ביותר של ספריות 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:2024.09.03")
    //            or platform("androidx.compose:compose-bom-beta:2024.09.03")
    implementation(composeBom)
    // ..
}

Groovy

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

איך אפשר לדווח על בעיה או להציע משוב לגבי ה-BOM?

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