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

Compose के बिल ऑफ़ मटीरियल (बीओएम) की मदद से, Compose लाइब्रेरी के सभी वर्शन को मैनेज किया जा सकता है. इसके लिए, आपको सिर्फ़ बीओएम का वर्शन बताना होगा. BOM में खुद ही अलग-अलग Compose लाइब्रेरी के स्टेबल वर्शन के लिंक होते हैं, ताकि वे एक साथ सही तरीके से काम कर सकें. अपने ऐप्लिकेशन में बीओएम का इस्तेमाल करते समय, आपको कंपोज़ लाइब्रेरी डिपेंडेंसी में खुद कोई वर्शन जोड़ने की ज़रूरत नहीं है. बीओएम वर्शन को अपडेट करने पर, इस्तेमाल की जा रही सभी लाइब्रेरी अपने-आप नए वर्शन पर अपडेट हो जाती हैं.

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

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

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

Kotlin 2.0 के बाद, Compose ऐप्लिकेशन कंपाइलर को Kotlin कंपाइलर के साथ मैनेज किया जाता है. साथ ही, यह Kotlin कंपाइलर के उसी वर्शन का इस्तेमाल करता है. कॉन्फ़िगरेशन की जानकारी के लिए, Compose कंपाइलर 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.10.01")
    implementation(composeBom)

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

    // ..
}

ग्रूवी

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 लाइब्रेरी अपने-आप जोड़ देता है?

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

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

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

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