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

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

Groovy

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 लाइब्रेरी के कौनसे वर्शन, किसी खास बीओएम वर्शन से मैप किए गए हैं, बीओएम से लाइब्रेरी वर्शन की मैपिंग देखें.

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

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

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

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

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

build.gradle डिपेंडेंसी सेक्शन में, BOM प्लैटफ़ॉर्म का इंपोर्ट रखें. लाइब्रेरी डिपेंडेंसी इंपोर्ट करने के लिए, बदले जाने वाले वर्शन की जानकारी दें. उदाहरण के लिए, अगर आपको ऐनिमेशन लाइब्रेरी के नए वर्शन का इस्तेमाल करना है, तो डिपेंडेंसी का एलान करने का तरीका यहां बताया गया है. भले ही, 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 लाइब्रेरी को जोड़ने और इस्तेमाल करने के लिए, आपको हर लाइब्रेरी को अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर app/build.gradle) में, अलग-अलग डिपेंडेंसी लाइन के तौर पर एलान करना होगा.

बीओएम का इस्तेमाल करने से यह पक्का होता है कि आपके ऐप्लिकेशन में मौजूद किसी भी Compose लाइब्रेरी के वर्शन एक-दूसरे के साथ काम करते हों. हालांकि, बीओएम उन 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" }

अपने मॉड्यूल के 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 BOM के तीन विकल्प उपलब्ध हैं. हर बीओएम, Compose लाइब्रेरी के उपलब्ध सबसे नए वर्शन का एक स्नैपशॉट होता है.

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

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

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

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