चीज़ों का बिल इस्तेमाल करें

कंपोज़ बिल ऑफ़ मटीरियल (बीओएम) की मदद से, सिर्फ़ बीओएम के वर्शन तय करके, अपनी कंपोज़ लाइब्रेरी के सभी वर्शन मैनेज किए जा सकते हैं. 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")
}

Groovy

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'
}

यह जानने के लिए कि Compose लाइब्रेरी के कौनसे वर्शन, किसी खास बीओएम वर्शन से मैप किए गए हैं, बीओएम से लाइब्रेरी वर्शन की मैपिंग देखें.

Compose कंपाइलर लाइब्रेरी को बीओएम में शामिल क्यों नहीं किया गया है?

Compose Kotlin कंपाइलर एक्सटेंशन (androidx.compose.compiler), Compose लाइब्रेरी के वर्शन से लिंक नहीं है. इसके बजाय, यह Kotlin compiler प्लग इन के वर्शन से लिंक है और इसे Compose के बाकी वर्शन से अलग समय पर रिलीज़ किया जाता है.

Kotlin 2.0 के बाद से, Compose ऐप्लिकेशनकंपाइलर को Kotlin कंपाइलर के साथ मैनेज किया जाता है और यह Kotlin कंपाइलर के वर्शन का ही इस्तेमाल करता है. कॉन्फ़िगरेशन की जानकारी के लिए, कंपाइलर Gradle प्लग इन लिखें देखें.

Kotlin 2.0 से पहले, आपको यह पक्का करना होगा कि आपने Kotlin के ऐसे वर्शन का इस्तेमाल किया हो जो आपके Kotlin वर्शन के साथ काम करता हो. Compose से Kotlin के साथ काम करने वाले वर्शन का मैप पर जाकर, प्लग इन के हर वर्शन के साथ काम करने वाला Kotlin वर्शन देखा जा सकता है. साथ ही, Compose कंपाइलर पर जाकर, इसे कॉन्फ़िगर करने का तरीका भी देखा जा सकता है.

मैं बीओएम में तय किए गए वर्शन से अलग, लाइब्रेरी का कोई दूसरा वर्शन कैसे इस्तेमाल करूं?

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, Compose की सभी लाइब्रेरी को मेरे ऐप्लिकेशन में अपने-आप जोड़ देता है?

नहीं. अपने ऐप्लिकेशन में लाइब्रेरी को जोड़ने और इस्तेमाल करने के लिए, आपको अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर app/build.gradle) में हर लाइब्रेरी को एक अलग डिपेंडेंसी लाइन के तौर पर एलान करना होगा.

बीओएम का इस्तेमाल करने से यह पक्का होता है कि आपके ऐप्लिकेशन में मौजूद किसी भी Compose लाइब्रेरी के वर्शन एक-दूसरे के साथ काम करते हों. हालांकि, बीओएम उन Compose लाइब्रेरी को आपके ऐप्लिकेशन में नहीं जोड़ता.

आने वाले समय में, Compose लाइब्रेरी के वर्शन अलग-अलग होंगे. इसका मतलब है कि वर्शन नंबर अपने-आप बढ़ने लगेंगे. हर लाइब्रेरी की नई स्टेबल रिलीज़ को टेस्ट किया जाता है. हालांकि, हर लाइब्रेरी के सबसे नए वर्शन ढूंढना मुश्किल हो सकता है. ऐसे में, 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" }

अपने मॉड्यूल के build.gradle में BOM इंपोर्ट करना न भूलें:

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 लाइब्रेरी के अल्फा या बीटा रिलीज़ आज़माने हैं, तो मुझे क्या करना होगा?

Compose के तीन बीओएम उपलब्ध हैं. हर बीओएम, Compose लाइब्रेरी के उपलब्ध सबसे नए वर्शन का एक स्नैपशॉट होता है.

  • स्थिर - इसमें हर लाइब्रेरी के नए और स्टेबल वर्शन शामिल हैं
  • बीटा - इसमें हर लाइब्रेरी के सबसे नए बीटा, रिलीज़ कैंडिडेट (आरसी) या स्टेबल वर्शन शामिल होते हैं
  • ऐल्फ़ा - इसमें हर लाइब्रेरी का नया ऐल्फ़ा, बीटा, आरसी या स्टेबल वर्शन शामिल है

बीओएम के ऐल्फ़ा और बीटा वर्शन, बीओएम आर्टफ़ैक्ट के नाम में -alpha और -beta जोड़कर तय किए जाते हैं. स्टेबल वर्शन का कोई सफ़िक्स नहीं है.

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 से जुड़ी किसी समस्या की शिकायत कैसे करूं या उस पर सुझाव/राय कैसे दूं?

समस्याओं की शिकायत करने के लिए, हमारे समस्या ट्रैकर पर जाएं.