कमरा

Room परसिस्टेंस लाइब्रेरी, SQLite को लेकर एक ऐब्स्ट्रैक्शन लेयर उपलब्ध कराती है, ताकि डेटाबेस को ज़्यादा अच्छे से ऐक्सेस किया जा सके.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
09 सितंबर, 2026 2.8.5 - - -

डिपेंडेंसी का एलान करना

Room पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

Room के लिए इन डिपेंडेंसी की ज़रूरत होती है: Room माइग्रेशन की जांच करना और Room RxJava

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

Kotlin

dependencies {
    val room_version = "2.8.4"

    implementation("androidx.room:room-runtime:$room_version")

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See Add the KSP plugin to your project
    ksp("androidx.room:room-compiler:$room_version")

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor("androidx.room:room-compiler:$room_version")

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation("androidx.room:room-ktx:$room_version")

    // optional - RxJava2 support for Room
    implementation("androidx.room:room-rxjava2:$room_version")

    // optional - RxJava3 support for Room
    implementation("androidx.room:room-rxjava3:$room_version")

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation("androidx.room:room-guava:$room_version")

    // optional - Test helpers
    testImplementation("androidx.room:room-testing:$room_version")

    // optional - Paging 3 Integration
    implementation("androidx.room:room-paging:$room_version")
}

ग्रूवी

dependencies {
    def room_version = "2.8.4"

    implementation "androidx.room:room-runtime:$room_version"

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See KSP Quickstart to add KSP to your build
    ksp "androidx.room:room-compiler:$room_version"

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:$room_version"
}

KAPT प्लगिन का इस्तेमाल करने के बारे में जानकारी के लिए, KAPT का दस्तावेज़ देखें.

KSP प्लगिन इस्तेमाल करने के बारे में जानकारी पाने के लिए, KSP का क्विक-स्टार्ट दस्तावेज़ देखें.

Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.

डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

इसके अलावा, Android के अलावा अन्य लाइब्रेरी (जैसे, सिर्फ़ Java या Kotlin Gradle मॉड्यूल) के लिए, Room एनोटेशन का इस्तेमाल करने के लिए androidx.room:room-common पर निर्भर किया जा सकता है.

कंपाइलर के विकल्पों को कॉन्फ़िगर करना

Room में एनोटेशन प्रोसेसर के ये विकल्प होते हैं.

room.schemaLocation directory
इस विकल्प की मदद से, डेटाबेस स्कीमा को दी गई डायरेक्ट्री में JSON फ़ाइलों में एक्सपोर्ट किया जा सकता है. ज़्यादा जानकारी के लिए, रूम माइग्रेशन देखें.
room.incremental boolean
इससे Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर चालू होता है. डिफ़ॉल्ट वैल्यू true है.
room.generateKotlin boolean
Java के बजाय Kotlin की सोर्स फ़ाइलें जनरेट करें. इसके लिए, KSP की ज़रूरत होती है. वर्शन 2.7.0 के मुताबिक, डिफ़ॉल्ट वैल्यू true है. ज़्यादा जानकारी के लिए, वर्शन 2.6.0 के नोट देखें. इसमें बताया गया है कि इसे कब लॉन्च किया गया था.

Room Gradle प्लगिन का इस्तेमाल करना

Room के वर्शन 2.6.0 और इसके बाद के वर्शन में, Room Gradle प्लगिन का इस्तेमाल करके, Room कंपाइलर के लिए विकल्प कॉन्फ़िगर किए जा सकते हैं. यह प्लगिन, प्रोजेक्ट को इस तरह कॉन्फ़िगर करता है कि जनरेट किए गए स्कीमा (जो कंपाइल टास्क का आउटपुट होते हैं और जिनका इस्तेमाल ऑटो-माइग्रेशन के लिए किया जाता है) सही तरीके से कॉन्फ़िगर किए जाएं. इससे, दोबारा बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड तैयार किए जा सकते हैं.

प्लगिन जोड़ने के लिए, सबसे ऊपर के लेवल की Gradle बिल्ड फ़ाइल में, प्लगिन और उसका वर्शन तय करें.

Groovy

plugins {
    id 'androidx.room' version "$room_version" apply false
}

Kotlin

plugins {
    id("androidx.room") version "$room_version" apply false
}

मॉड्यूल-लेवल की Gradle बिल्ड फ़ाइल में, प्लगिन लागू करें और room एक्सटेंशन का इस्तेमाल करें.

Groovy

plugins {
    id 'androidx.room'
}

android {
    ...
    room {
        schemaDirectory "$projectDir/schemas"
    }
}

Kotlin

plugins {
    id("androidx.room")
}

android {
    ...
    room {
        schemaDirectory("$projectDir/schemas")
    }
}

Room Gradle Plugin का इस्तेमाल करते समय, schemaDirectory सेट करना ज़रूरी है. इससे Room कंपाइलर और अलग-अलग कंपाइल टास्क के साथ-साथ इसके बैकएंड (javac, KAPT, KSP) कॉन्फ़िगर हो जाएंगे. ये फ़्लेवर्ड फ़ोल्डर में स्कीमा फ़ाइलें आउटपुट करेंगे. उदाहरण के लिए, schemas/flavorOneDebug/com.package.MyDatabase/1.json. इन फ़ाइलों को रिपॉज़िटरी में सेव किया जाना चाहिए, ताकि इनका इस्तेमाल पुष्टि करने और अपने-आप माइग्रेट होने की प्रोसेस के लिए किया जा सके.

कुछ विकल्पों को Room Gradle Plugin के सभी वर्शन में कॉन्फ़िगर नहीं किया जा सकता. हालांकि, Room कंपाइलर इन्हें सपोर्ट करता है. यहां दी गई टेबल में हर विकल्प की सूची दी गई है. साथ ही, इसमें Room Gradle Plugin का वह वर्शन दिखाया गया है जिसने room एक्सटेंशन का इस्तेमाल करके उस विकल्प को कॉन्फ़िगर करने की सुविधा जोड़ी है. अगर आपका वर्शन इससे कम है या यह विकल्प अभी मौजूद नहीं है, तो इसके बजाय एनोटेशन प्रोसेसर के विकल्प इस्तेमाल किए जा सकते हैं.

विकल्प इस वर्शन के बाद से
room.schemaLocation (ज़रूरी) 2.6.0
room.incremental -
room.generateKotlin -

एनोटेशन प्रोसेसर के विकल्पों का इस्तेमाल करना

अगर Room Gradle Plugin का इस्तेमाल नहीं किया जा रहा है या आपके पास प्लगिन का ऐसा वर्शन है जिसमें आपको चाहिए वह विकल्प काम नहीं करता, तो एनोटेशन प्रोसेसर के विकल्पों का इस्तेमाल करके Room को कॉन्फ़िगर किया जा सकता है. इसके बारे में बिल्ड डिपेंडेंसी जोड़ना लेख में बताया गया है. एनोटेशन के विकल्प तय करने का तरीका इस बात पर निर्भर करता है कि Room के लिए KSP या KAPT में से किसका इस्तेमाल किया जा रहा है.

Groovy

// For KSP
ksp {
    arg("option_name", "option_value")
    // other otions...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += [
                    "option_name":"option_value",
                    // other options...
                    ]
            }
        }
    }
}

Kotlin

// For KSP
ksp {
    arg("option_name", "option_value")
    // other options...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf(
                    "option_name" to "option_value",
                    // other options...
                )
            }
        }
    }
}

room.schemaLocation एक डायरेक्ट्री है, न कि प्रिमिटिव टाइप. इसलिए, इस विकल्प को जोड़ते समय CommandLineArgumentsProvider का इस्तेमाल करना ज़रूरी है. इससे Gradle को अप-टू-डेट जांच करते समय इस डायरेक्ट्री के बारे में पता चलेगा. अपने Room डेटाबेस को माइग्रेट करें में, CommandLineArgumentsProvider को पूरी तरह से लागू करने का तरीका बताया गया है. इससे स्कीमा की जगह की जानकारी मिलती है.

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.

नई समस्या दर्ज करने का तरीका

ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.

वर्शन 2.8

वर्शन 2.8.5

09 सितंबर, 2026

androidx.room:room-*:2.8.5 रिलीज़ हो गया है. वर्शन 2.8.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • डेटाबेस बंद होने के बाद, रूम निलंबित करने वाली क्वेरी और अमान्य ट्रैकर ऑपरेशन को कॉल करने पर, अब IllegalStateException दिखेगा. (Ic0166, b/543076356)

वर्शन 2.8.4

19 नवंबर, 2025

androidx.room:room-*:2.8.4 रिलीज़ हो गया है. वर्शन 2.8.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • का इस्तेमाल करते समय, Room के कनेक्शन पूल में तैयार किए गए स्टेटमेंट की कैश मेमोरी जोड़ी गई है. ऐसा तब किया जाता है, जब SQLiteDriver में इंटरनल पूल नहीं होता है. जैसे, BundledSQLiteDriver. इससे एक ही एसक्यूएल स्टेटमेंट को बार-बार लागू करने पर परफ़ॉर्मेंस बेहतर होती है. (5f43bc, b/319653917)
  • उस समस्या को ठीक किया गया है जिसमें स्कीमा की पुष्टि करने पर, गड़बड़ी के असल / अनुमानित मैसेज में जानकारी मौजूद नहीं थी. (8b23da, b/454531083)
  • Room के Kotlin कोड जनरेशन से जुड़ी समस्या ठीक की गई है. इसमें टाइप वैरिएबल के साथ @Transaction DAO फ़ंक्शन मौजूद नहीं थे. (a8365d, b/251316420)
  • SupportSQLiteDatabase एपीआई की तरह ही थ्रेड को ब्लॉक करने के व्यवहार को बनाए रखते हुए, थ्रेड हॉप से बचें. इससे Room के SupportSQLite रैपर की परफ़ॉर्मेंस बेहतर होगी. (fc70e4)

वर्शन 2.8.3

22 अक्टूबर, 2025

androidx.room:room-*:2.8.3 रिलीज़ हो गया है. वर्शन 2.8.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Room SQLite रैपर से जुड़ी परफ़ॉर्मेंस की समस्या को ठीक किया गया है. इस समस्या की वजह से, कर्सर पर बार-बार दोहराए जाने पर, बहुत ज़्यादा JNI कॉल हो रहे थे और परफ़ॉर्मेंस में काफ़ी गिरावट आ रही थी.

वर्शन 2.8.2

08 अक्टूबर, 2025

androidx.room:room-*:2.8.2 रिलीज़ हो गया है. वर्शन 2.8.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अपने-आप बंद होने वाले डेटाबेस को फ़्लो एमिशन से फिर से खोलने पर होने वाली डेडलॉक की समस्या को ठीक किया गया (b/446643789).

वर्शन 2.8.1

24 सितंबर, 2025

androidx.room:room-*:2.8.1 रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • सस्पेंड किए गए लैम्ब्डा के साथ DAO फ़ंक्शन को प्रोसेस करते समय होने वाली प्रोसेसर क्रैश की समस्या को ठीक किया गया. (b/442220723).
  • रेस कंडीशन की समस्या को ठीक किया गया है. इस वजह से, फ़्लो को अपडेट नहीं मिल रहे थे.

वर्शन 2.8.0

10 सितंबर, 2025

androidx.room:room-*:2.8.0 रिलीज़ हो गया है. वर्शन 2.8.0 में ये बदलाव शामिल हैं.

2.7.0 के बाद हुए मुख्य बदलाव:

  • नया आर्टफ़ैक्ट androidx.room:room-sqlite-wrapper जोड़ा गया है. इसमें ऐसे एपीआई शामिल हैं जिनकी मदद से, कॉन्फ़िगर किए गए SQLiteDriver वाले RoomDatabase से SupportSQLiteDatabase रैपर पाया जा सकता है. रैपर पाने के लिए, नए एक्सटेंशन फ़ंक्शन RoomDatabase.getSupportWrapper() का इस्तेमाल करें. यह कंपैटिबिलिटी आर्टफ़ैक्ट है. इसका इस्तेमाल SupportSQLiteDatabase के इस्तेमाल को बनाए रखने के लिए किया जाता है. आम तौर पर, इसे roomDatabase.openHelper.writableDatabase से हासिल किया जाता है. भले ही, Room डेटाबेस को SQLiteDriver के साथ कॉन्फ़िगर किया गया हो. यह रैपर, उन कोडबेस के लिए काम का है जो SQLiteDriver API का इस्तेमाल करना चाहते हैं. हालांकि, वे अब भी SupportSQLite API का बड़े पैमाने पर इस्तेमाल करते हैं. साथ ही, वे BundledSQLiteDriver का फ़ायदा पाना चाहते हैं. ज़्यादा जानकारी के लिए, माइग्रेशन गाइड देखें.
  • KMP टारगेट Watch OS और Tv OS के लिए सपोर्ट जोड़ा गया.
  • लाइब्रेरी के Android minSDK को एपीआई 21 से एपीआई 23 पर अपडेट किया गया

वर्शन 2.8.0-rc02

27 अगस्त, 2025

androidx.room:room-*:2.8.0-rc02 रिलीज़ हो गया है. वर्शन 2.8.0-rc02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • minSDK को एपीआई 21 से एपीआई 23 पर अपडेट करें (Ibdfca, b/380448311, b/435705964, b/435705223)
  • Room Gradle प्लगिन के साथ काम करने वाले Android Gradle प्लगिन (AGP) के कम से कम वर्शन को 8.1 से 8.4 पर अपडेट किया गया है. (Ia0d28)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें पहले से पैकेज किए गए डेटाबेस के लिए माइग्रेशन पाथ उपलब्ध होने के बावजूद, डिस्ट्रक्टिव माइग्रेशन किया जा रहा था (b/432634197).

वर्शन 2.8.0-rc01

13 अगस्त, 2025

androidx.room:room-*:2.8.0-rc01 रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • पुराने हो चुके @RequiresApi(21) एनोटेशन हटाए जा रहे हैं (Ic4792, I9103b)

गड़बड़ियां ठीक की गईं

  • रेस कंडीशन को ठीक किया गया है. इसमें Room Flows, एसिंक्रोनस मल्टी-क्वेरी/राइट सिचुएशन में क्वेरी का नया नतीजा नहीं दिखाता था. (Ic9a3c)

वर्शन 2.8.0-beta01

1 अगस्त, 2025

androidx.room:room-*:2.8.0-beta01 रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • डेटा मिटाने वाले माइग्रेशन के दौरान, टेबल और व्यू के नामों को अब सही तरीके से एस्केप किया जाता है. (9e55f8, b/427095319)

वर्शन 2.8.0-alpha01

16 जुलाई, 2025

androidx.room:room-*:2.8.0-alpha01 रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • एक नया आर्टफ़ैक्ट androidx.room:room-sqlite-wrapper जोड़ा गया है. इसमें SQLiteDriver के साथ कॉन्फ़िगर किए गए RoomDatabase का SupportSQLiteDatabase रैपर पाने के लिए एपीआई शामिल हैं. रैपर पाने के लिए, नए एक्सटेंशन फ़ंक्शन RoomDatabase.getSupportWrapper() का इस्तेमाल करें. यह कंपैटिबिलिटी आर्टफ़ैक्ट है. इसका इस्तेमाल SupportSQLiteDatabase के इस्तेमाल को बनाए रखने के लिए किया जाता है. आम तौर पर, इसे RoomDatabase.openHelper.writableDatabase से हासिल किया जाता है. भले ही, Room डेटाबेस को SQLiteDriver के साथ कॉन्फ़िगर किया गया हो. यह रैपर, कोडबेस के इंक्रीमेंटल माइग्रेशन के लिए फ़ायदेमंद है. इसका इस्तेमाल उन डेवलपर के लिए किया जा सकता है जो SQLiteDriver को अपनाना चाहते हैं, लेकिन अब भी SupportSQLite एपीआई का इस्तेमाल कर रहे हैं. हालांकि, वे BundledSQLiteDriver का फ़ायदा पाना चाहते हैं. (Icf6ac)
  • Watch OS और TV OS के लिए केएमपी टारगेट जोड़ें (I228f6, b/394238801)

गड़बड़ियां ठीक की गईं

  • लेन-देन को निलंबित करने और AndroidSQLiteDriver का इस्तेमाल करने के दौरान, कभी-कभी होने वाली डेडलॉक की समस्या को ठीक किया गया. (b/415006268)

वर्शन 2.7

वर्शन 2.7.2

18 जून, 2025

androidx.room:room-*:2.7.2 रिलीज़ हो गया है. वर्शन 2.7.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • ऐसी समस्या को ठीक किया गया है जिसमें KSP के साथ नेटिव सोर्स को प्रोसेस करते समय, एनोटेशन वैल्यू को गलत तरीके से पढ़ा जाता था. साथ ही, कभी-कभी स्कीमा एक्सपोर्ट नहीं होते थे. (b/416549580)
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, एसक्यूएल में मौजूद शुरुआती टिप्पणियों की वजह से स्टेटमेंट ऐसे एक्ज़ीक्यूट होते थे जैसे वे पढ़ी नहीं गई क्वेरी हों. (b/413061402)
  • स्कीमा डायरेक्ट्री खाली होने की वजह से, Room के Gradle प्लगिन को कॉन्फ़िगर नहीं किया जा सका. इस समस्या को ठीक किया गया है. (b/417823384)
  • कनेक्शन मिलने में ज़्यादा समय लगने पर, अब SQLiteException नहीं दिखेगा. इसके बजाय, लाइब्रेरी से लॉग मैसेज भेजा जाएगा. लॉगिंग के बजाय थ्रो करने से, iOS के लूपर को निलंबित करने से जुड़ी समस्या ठीक हो जाती है. इससे Room, कनेक्शन हासिल करने वाली Kotlin Coroutine में होने वाले टाइमआउट की गलत व्याख्या नहीं करता. साथ ही, जब कोई iOS ऐप्लिकेशन बैकग्राउंड में होता है और बाद में डेटाबेस ऑपरेशन के बीच में फिर से शुरू होता है, तो अपवाद को थ्रो होने से रोकता है. (b/422448815)

वर्शन 2.7.1

23 अप्रैल, 2025

androidx.room:room-*:2.7.1 रिलीज़ हो गया है. वर्शन 2.7.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • टाइप कन्वर्टर की पुष्टि के दौरान, IndexOutOfBoundsException बग को ठीक किया गया. (b/409804755).
  • मीटिंग रूम से कनेक्ट करने की सुविधा के साथ SQLiteDriver कॉन्फ़िगर किए जाने पर, RoomDatabase.runInTransaction() की सुविधा काम करती है. (b/408364828).

वर्शन 2.7.0

9 अप्रैल, 2025

androidx.room:room-*:2.7.0 रिलीज़ हो गया है. वर्शन 2.7.0 में ये बदलाव शामिल हैं.

2.6.0 के बाद हुए अहम बदलाव

  • Kotlin Multiplatform (KMP) के साथ काम करता है: इस रिलीज़ में, Room को Kotlin Multiplatform (KMP) लाइब्रेरी के तौर पर फिर से बनाया गया है. फ़िलहाल, ये प्लैटफ़ॉर्म केएमपी के साथ काम करते हैं: Android, iOS, JVM (डेस्कटॉप), नेटिव Mac, और नेटिव Linux. Room KMP का इस्तेमाल शुरू करने के बारे में ज़्यादा जानने के लिए, कृपया Room KMP का आधिकारिक दस्तावेज़ देखें. KMP के साथ काम करने की सुविधा के तहत, Room को SQLiteDriver के साथ भी कॉन्फ़िगर किया जा सकता है. किसी मौजूदा ऐप्लिकेशन को ड्राइवर एपीआई और Room KMP पर माइग्रेट करने के तरीके के बारे में जानने के लिए, माइग्रेशन से जुड़े दस्तावेज़ देखें.
  • अगर प्रोसेसिंग KSP के ज़रिए की जाती है, तो KSP पर Kotlin कोड जनरेट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. KAPT या सिर्फ़ Java प्रोजेक्ट के लिए, Room अब भी Java सोर्स जनरेट करेगा.
  • Kotlin 2.0 और KSP2: Room अब Kotlin 2.0 को टारगेट करता है. साथ ही, प्रोजेक्ट को Kotlin 2.0 और इसके बराबर या इससे ज़्यादा वर्शन वाली भाषा के साथ कंपाइल करना होगा. इसमें KSP2 के लिए भी सहायता जोड़ी गई है. हमारा सुझाव है कि Kotlin 2.0 या इसके बाद के वर्शन के साथ Room का इस्तेमाल करते समय, KSP2 का इस्तेमाल करें.

वर्शन 2.7.0-rc03

26 मार्च, 2025

androidx.room:room-*:2.7.0-rc03 रिलीज़ हो गया है. वर्शन 2.7.0-rc03 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Room blocking APIs के एक्ज़ीक्यूशन के दौरान थ्रेड में रुकावट आने पर, अब InterruptedException नहीं दिखेगा. इसमें DAO फ़ंक्शन (b/400584611) को ब्लॉक करना भी शामिल है.
  • SQLException: Error code: 5, message: Timed out attempting to acquire a reader connection. और इसी तरह की अन्य समस्याओं (b/380088809) को कम करने के लिए, Room के कनेक्शन पूल को फिर से लागू किया गया है.

वर्शन 2.7.0-rc02

12 मार्च, 2025

androidx.room:room-*:2.7.0-rc02 रिलीज़ हो गया है. वर्शन 2.7.0-rc02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • ऑटो माइग्रेशन की सुविधा से जुड़ी समस्या ठीक की गई है. इस समस्या में, ऑटो माइग्रेशन की सुविधा, FTS टेबल पर मौजूद नए कॉलम को गलत तरीके से हैंडल कर रही थी. (b/348227770, Ic53f3)
  • KSP के ज़रिए नॉन-JVM सोर्स प्रोसेस करते समय, NullPointerException की वजह से रूम-कंपाइलर क्रैश होने की समस्या ठीक की गई है. (b/396607230, I693c9)
  • उस समस्या को ठीक किया गया है जिसमें Room, writer कनेक्शन का इस्तेमाल खत्म होने के बाद टेबल को अमान्य नहीं करता था. (b/340606803, I73ef6)

वर्शन 2.7.0-rc01

26 फ़रवरी, 2025

androidx.room:room-*:2.7.0-rc01 रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से Room, डेटाबेस से शुरुआती कनेक्शन के दौरान busy_timeout सेट नहीं कर रहा था. इससे SQLException: Error code: 5, message: database is locked से जुड़ी समस्याएं हो रही थीं (I93208, b/380088809).
  • Room के कंपाइलर में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, Kotlin 2.1.x और KSP1 पर नेटिव सोर्स सेट (जैसे कि iOS) को प्रोसेस करते समय, KSP प्रोसेसर क्रैश हो जाता था (I883b8, b/396607230).

वर्शन 2.7.0-beta01

12 फ़रवरी, 2025

androidx.room:room-*:2.7.0-beta01 रिलीज़ हो गया है. वर्शन 2.7.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • RoomDatabase.inTransaction() के बंद होने पर, डेटाबेस को खोलने से जुड़ी समस्या को ठीक किया गया है. साथ ही, अगर डेटाबेस बंद है, तो इसे तुरंत गलत जवाब देना चाहिए (b/325432967).
  • Kotlin की इनलाइन / वैल्यू क्लास (b/388299754) के साथ डीएओ फ़ंक्शन प्रोसेस करते समय, Room के कंपाइलर में क्रैश (IllegalArgumentException: not a valid name) की समस्या ठीक की गई है.
  • room-runtime के JVM आर्टफ़ैक्ट में Proguard के नियम शामिल करें, ताकि जनरेट किए गए डेटाबेस के डिफ़ॉल्ट कंस्ट्रक्टर को न हटाया जाए. ऐसा इसलिए, क्योंकि इसका इस्तेमाल Room के डिफ़ॉल्ट इनिशियलाइज़ेशन में किया जाता है, जो रिफ़्लेक्शन का इस्तेमाल करता है (b/392657750).

वर्शन 2.7.0-alpha13

29 जनवरी, 2025

androidx.room:room-*:2.7.0-alpha13 रिलीज़ हो गया है. वर्शन 2.7.0-alpha13 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Room अब Kotlin लैंग्वेज 2.0 को टारगेट करता है. इसलिए, प्रोजेक्ट को Kotlin 2.0 और इसके बराबर या इससे ज़्यादा वर्शन वाली लैंग्वेज के साथ कंपाइल करना होगा. (I8efb0, b/315461431, b/384600605)

गड़बड़ियां ठीक की गईं

  • Android में पाथ के बजाय सामान्य नाम का इस्तेमाल करने पर, Room KMP डेटाबेस बिल्डर में समस्या ठीक की गई. साथ ही, डेटाबेस फ़ाइल के पाथ को ऐप्लिकेशन की डेटा डायरेक्ट्री में नहीं रखा जाएगा. (I83315, b/377830104)
  • Room Gradle प्लगिन से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, स्कीमा इनपुट और आउटपुट को कॉन्फ़िगर करने की वजह से Android प्रोजेक्ट में समस्या आ रही थी: property 'inputDirectory' is final and cannot be changed any further. (1dbb4c, b/376071291)
  • Room Gradle Plugin में KSP2 के लिए सहायता जोड़ी गई है. इससे उस समस्या को ठीक किया जा सकेगा जिसमें प्लगिन, स्कीमा डायरेक्ट्री को ठीक से सेट अप नहीं कर रहा था. (Iec3c4, b/379159770)

बाहरी योगदान

  • Roomपेजिंग इंटिग्रेशन से जुड़ी समस्या को ठीक किया गया है. इस वजह से, रीफ़्रेश करने के लिए शुरुआती कुंजी, सूची के आखिर के बहुत करीब होने पर यूज़र इंटरफ़ेस (यूआई) जंप करता है. एवा को धन्यवाद! (I2abbe, b/389729367)

वर्शन 2.7.0-alpha12

11 दिसंबर, 2024

androidx.room:room-*:2.7.0-alpha12 रिलीज़ हो गया है. वर्शन 2.7.0-alpha12 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई RoomDatabase.Builder.setInMemoryTrackingMode() को जोड़ें. इससे यह कॉन्फ़िगर किया जा सकेगा कि Room, अमान्य होने की स्थिति को ट्रैक करने के लिए इन-मेमोरी टेबल का इस्तेमाल करेगा या नहीं. (I2a9b2, b/185414040)

गड़बड़ियां ठीक की गईं

  • डेटा मिटाने वाली माइग्रेशन प्रोसेस अब व्यू हटा देती है, ताकि उन्हें फिर से बनाया जा सके. इससे, allowDestructiveMigrationForAllTables के चालू होने (केएमपी डिफ़ॉल्ट) पर होने वाला व्यवहार, इसके बंद होने पर होने वाले मौजूदा व्यवहार के साथ अलाइन हो जाता है. (0a3e83, b/381518941)

वर्शन 2.7.0-alpha11

30 अक्टूबर, 2024

androidx.room:room-*:2.7.0-alpha11 रिलीज़ हो गया है. वर्शन 2.7.0-alpha11 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • हाल ही में जोड़े गए convertRows() तरीके के सिग्नेचर को फिर से देखें, ताकि यह एक सस्पेंड फ़ंक्शन बन जाए. यह फ़ंक्शन, रूम-पेजिंग के लिए RawRoomQuery को स्वीकार करता है. (Ie57b5, b/369136627)

गड़बड़ियां ठीक की गईं

  • रूम-पेजिंग में, @Relation के साथ PagingSource का इस्तेमाल करने पर अमान्य कोड जनरेट होने की समस्या को ठीक किया गया है.

वर्शन 2.7.0-alpha10

16 अक्टूबर, 2024

androidx.room:room-*:2.7.0-alpha10 रिलीज़ हो गया है. वर्शन 2.7.0-alpha10 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Android और JVM के अलावा अन्य प्लैटफ़ॉर्म पर ByteBuffer के साथ Relations की सुविधा इस्तेमाल करने के लिए, इंटरनल ByteArrayWrapper क्लास बनाएं. (I75543, b/367205685)
  • किसी कॉलम का डेटा टाइप वापस पाने की सुविधा चालू करने के लिए, अलग-अलग SQLITE_DATA_* नतीजे के कॉन्स्टेंट के साथ SQLiteStatement.getColumnType() जोड़ें. (I1985c, b/369636251)

वर्शन 2.7.0-alpha09

2 अक्टूबर, 2024

androidx.room:room-*:2.7.0-alpha09 रिलीज़ हो गया है. वर्शन 2.7.0-alpha09 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • room-paging के KMP को लागू करने से जुड़ी समस्या को ठीक किया गया है. इससे, पढ़ने के कनेक्शन पर लिखने का लेन-देन शुरू करने की वजह से Error code: 8, message: attempt to write a readonly database की समस्या होती थी. (b/368380988)

वर्शन 2.7.0-alpha08

18 सितंबर, 2024

androidx.room:room-*:2.7.0-alpha08 रिलीज़ हो गया है. वर्शन 2.7.0-alpha08 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • room-paging आर्टफ़ैक्ट को केएमपी के साथ काम करने के लिए माइग्रेट कर दिया गया है. (Ib8756, b/339934824)
  • एपीआई invalidationTrackerFlow() को InvalidationTracker.createFlow() के तौर पर पहले पक्ष का एपीआई बना दिया गया है. अब यह KMP प्रोजेक्ट में, Android के अलावा अन्य सोर्स सेट के लिए उपलब्ध है. (I1fbfa, (I8fb29), b/329291639, b/329315924)

एपीआई में हुए बदलाव

  • Room में मौजूद उन सभी चेतावनियों और गड़बड़ी के मैसेज को हटा दिया गया है या बदल दिया गया है जिनमें Cursor शब्द का इस्तेमाल किया गया था. ऐसा इसलिए, क्योंकि Room के KMP वर्शन में Cursor का इस्तेमाल करना अब सही नहीं है. (Id8cd9, b/334087492)

गड़बड़ियां ठीक की गईं

  • हमने उस समस्या को ठीक कर दिया है जिसमें Room KMP, नॉन-JVM प्लैटफ़ॉर्म के लिए UUID का इस्तेमाल करके कोड को ट्रांसफ़र करने की कोशिश करता था. (b/362994709)
  • Room Gradle प्लगिन से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, Compose Multiplatform के साथ KMP प्रोजेक्ट में इस्तेमाल किए जाने पर, ‘Cannot change attributes of configuration … after it has been locked for mutation’ जैसी गड़बड़ी होती थी. (b/343408758)

वर्शन 2.7.0-alpha07

21 अगस्त, 2024

androidx.room:room-*:2.7.0-alpha07 रिलीज़ हो गया है. वर्शन 2.7.0-alpha07 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room Gradle Plugin अब एक्सपोर्ट किए गए स्कीमा को Android इंस्ट्रुमेंटेशन टेस्ट के संसाधन सोर्स में अपने-आप जोड़ देगा, ताकि उनका इस्तेमाल MigrationTestHelper कर सके.

गड़बड़ियां ठीक की गईं

  • RoomDatabaseConstructor के जनरेट किए गए ‘actual’ में मौजूद उस समस्या को ठीक किया गया है जिसमें initialize फ़ंक्शन में ‘actual’ मॉडिफ़ायर मौजूद नहीं होता है. ऐसा तब होता है, जब ‘expect’ एलान में भी इस फ़ंक्शन को बदला गया हो. (359631627)
  • RoomDatabaseConstructor के जनरेट किए गए ‘असल’ की वैल्यू, ‘अनुमानित’ वैल्यू से मेल न खाने की समस्या को ठीक किया गया है. (358138953)

वर्शन 2.7.0-alpha06

7 अगस्त, 2024

androidx.room:room-*:2.7.0-alpha06 रिलीज़ हो गया है. वर्शन 2.7.0-alpha06 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • KMP प्रोजेक्ट में RoomDatabase के इंस्टैंटिएशन सेटअप में बदलाव करें.

Kotlin 2.0 के कंपाइलेशन मॉडल की वजह से, जनरेट किए जाने वाले फ़ंक्शन instantiateImpl() को रेफ़रंस करने की रणनीति अब काम नहीं करेगी. instantiateImpl() रणनीति की जगह, दो नए एपीआई @ConstructedBy और RoomDatabaseConstructor का इस्तेमाल किया जाएगा. नई रणनीति इस तरह है:

  1. RoomDatabaseConstructor को लागू करने वाला एक expect ऑब्जेक्ट तय करें

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. @ConstructedBy का इस्तेमाल करके, ऑब्जेक्ट को @Database घोषणा से लिंक करें

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. फ़ैक्ट्री आर्ग्युमेंट पास किए बिना, नया डेटाबेस इंस्टेंस बनाना

      fun createNewDatabase(path: String) =
        Room.databaseBuilder<AppDatabase>(name = path)
          .setDriver(BundledSQLiteDriver())
          .setQueryCoroutineContext(Dispatchers.IO)
          .build()
    

b/316978491, b/338446862, और b/342905180 से जुड़ी समस्याओं को ठीक किया गया है

  • Room KMP में @RawQuery के लिए सहायता जोड़ी गई. इसके लिए, RoomRawQuery नाम का एक नया एपीआई जोड़ा गया है. यह रॉ एसक्यूएल स्ट्रिंग को होल्ड करने के मामले में SupportSQLiteQuery के जैसा है. साथ ही, इसमें किसी स्टेटमेंट में आर्ग्युमेंट को बाइंड करने का फ़ंक्शन भी है. @RawQuery एनोटेट किए गए फ़ंक्शन, अब RoomRawQuery को अपने सिंगल पैरामीटर के तौर पर स्वीकार कर सकते हैं. (Iea844, b/330586815)
  • setQueryCallback() का ऐसा ओवरलोड जोड़ें जो CoroutineContext को स्वीकार करता हो. (Id66ff, b/309996304)
  • linuxArm64 Kotlin Multiplatform टारगेट (I139d3, b/338268719) के लिए सहायता जोड़ी गई

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें Room, Android के अलावा अन्य टारगेट में recursiveFetchArrayMap को गलत तरीके से कॉल करता था. (710c36, b/352482325)
  • उस समस्या को ठीक किया गया है जिसमें कभी-कभी KMP प्रोजेक्ट में, Room ‘कनेक्शन की कोशिश का समय खत्म हो गया’ के बारे में अपवाद दिखाता था. (fa72d0, b/347737870)
  • अपने-आप माइग्रेट होने की सुविधा से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, अन्य टेबल के स्कीमा नई विदेशी कुंजियों के मुताबिक बदलने से पहले ही, विदेशी कुंजियों की जाँच हो जाती थी. (7672c0, b/352085724)

वर्शन 2.7.0-alpha05

10 जुलाई, 2024

androidx.room:room-*:2.7.0-alpha05 रिलीज़ हो गया है. वर्शन 2.7.0-alpha05 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • SQLiteKt का नाम बदलकर SQLite और BundledSQLiteKt का नाम बदलकर BundledSQLite कर दिया गया. (I8b501)

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें AndroidSQLiteDriver का इस्तेमाल करते समय, कनेक्शन टाइम आउट होने पर RoomDatabase लॉक हो जाता था या गड़बड़ी होती थी.

वर्शन 2.7.0-alpha04

12 जून, 2024

androidx.room:room-*:2.7.0-alpha04 रिलीज़ हो गया है. वर्शन 2.7.0-alpha04 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Room के एनोटेशन प्रोसेसर में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से, DAO में मल्टी-मैप रिटर्न टाइप तय किए जाने पर, KMP कोड जनरेट नहीं होता था. (b/340983093)
  • उस समस्या को ठीक किया गया है जिसमें @Database एनोटेट की गई क्लास में कोई पैकेज न होने पर, Room जनरेट किए गए डेटाबेस को लागू करने की सुविधा नहीं ढूंढ पाता था. (b/342097292)
  • उस समस्या को ठीक कर दिया गया है जिसमें अपने-आप बंद होने और एक से ज़्यादा इंस्टेंस अमान्य होने की सुविधा चालू करने पर, कभी-कभी ConcurrentModificationException की समस्या आ जाती थी. ऐसा तब होता था, जब डेटाबेस के इस्तेमाल में न होने की वजह से वह अपने-आप बंद हो जाता था.

वर्शन 2.7.0-alpha03

29 मई, 2024

androidx.room:room-*:2.7.0-alpha03 रिलीज़ हो गया है. वर्शन 2.7.0-alpha03 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Kotlin 2.0 और KSP 2.0 से जुड़ी कई समस्याओं को ठीक किया गया है. ध्यान दें कि KSP 2 के साथ Kotlin 2.0 पूरी तरह से काम नहीं करता है. साथ ही, टीम नए कंपाइलर में अलग-अलग एपीआई और व्यवहार में होने वाले बदलावों पर काम कर रही है. (b/314151707)

वर्शन 2.7.0-alpha02

14 मई, 2024

androidx.room:room-*:2.7.0-alpha02 रिलीज़ हो गया है. वर्शन 2.7.0-alpha02 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • केएसपी से जुड़ी कई समस्याएं ठीक की गईं.

वर्शन 2.7.0-alpha01

1 मई, 2024

androidx.room:room-*:2.7.0-alpha01 रिलीज़ हो गया है. वर्शन 2.7.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Kotlin Multiplatform (KMP) के साथ काम करता है: इस रिलीज़ में, Room को Kotlin Multiplatform (KMP) लाइब्रेरी के तौर पर फिर से बनाया गया है. हालांकि, अब भी कुछ काम बाकी है. इस रिलीज़ में, Room का नया वर्शन पेश किया गया है. इसमें ज़्यादातर फ़ंक्शन को “कॉमन” (मल्टीप्लैटफ़ॉर्म के लिए बनाया गया) कर दिया गया है. फ़िलहाल, ये प्लैटफ़ॉर्म केएमपी के साथ काम करते हैं: Android, iOS, JVM (डेस्कटॉप), नेटिव Mac, और नेटिव Linux. नए प्लैटफ़ॉर्म पर काम न करने वाली सुविधाओं को, Room के आने वाले वर्शन में “पूरी तरह से काम करने वाली” बनाया जाएगा.

Room KMP का इस्तेमाल शुरू करने के बारे में ज़्यादा जानने के लिए, कृपया Room KMP का आधिकारिक दस्तावेज़ देखें.

  • अगर प्रोसेसिंग KSP के ज़रिए की जाती है, तो KSP पर Kotlin कोड जनरेट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. KAPT या सिर्फ़ Java प्रोजेक्ट के लिए, Room अब भी Java सोर्स जनरेट करेगा.

एपीआई में हुए बदलाव

  • Room.databaseBuilder() का एक ओवरलोड जोड़ा गया है. यह एक लैम्डा पैरामीटर लेता है, जिसका इस्तेमाल Room से जनरेट किए गए फ़ंक्शन के साथ किया जाना है. इससे जनरेट किए गए RoomDatabase को इंस्टैंटिएट करते समय रिफ़्लेक्शन का इस्तेमाल करने से बचा जा सकता है. इस्तेमाल का उदाहरण:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • बिल्डर में, CoroutineContext की मदद से रूम को कॉन्फ़िगर करने के लिए एक एपीआई जोड़ा गया है: RoomDatabase.Builder.setQueryCoroutineContext. ध्यान दें कि RoomDatabase को सिर्फ़ setQueryExecutor का इस्तेमाल करने वाले एक्ज़ीक्यूटर या Coroutine कॉन्टेक्स्ट के साथ कॉन्फ़िगर किया जा सकता है. दोनों के साथ कॉन्फ़िगर नहीं किया जा सकता.
  • SQLite ड्राइवर के साथ Room को कॉन्फ़िगर करने के लिए एक एपीआई जोड़ा गया है: RoomDatabase.Builder.setDriver(). SQLite Driver API के बारे में ज़्यादा जानने के लिए, SQLite KMP दस्तावेज़ देखें
  • ड्राइवर एपीआई से, SQLiteConnection को ऐक्सेस करने के लिए एपीआई जोड़े गए हैं: RoomDatabase.useReaderConnection और RoomDatabase.useWriterConnection.
  • कमरे से जुड़े कई Varios Room कॉलबैक में अब ओवरलोड किया गया वर्शन है. इसमें SupportSQLiteDatabase के बजाय SQLiteConnection मिलता है. इन्हें KMP प्रोजेक्ट पर माइग्रेट करते समय बदला जा सकता है. Android ऐप्लिकेशन में Room के इस्तेमाल को सामान्य KMP मॉड्यूल में माइग्रेट करने के बारे में ज़्यादा जानने के लिए, माइग्रेशन गाइड देखें. कॉलबैक ये हैं:
    • Migration.migrate(SQLiteConnection)
    • AutoMigrationSpec.onPostMigrate(SQLiteConnection)
    • RoomDatabase.Callback.onCreate(SQLiteConnection)
    • RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
    • RoomDatabase.Callback.onOpen(SQLiteConnection)
  • KTX आर्टफ़ैक्ट androidx.room:room-ktx को उसके सभी एपीआई के साथ androidx.room:room-runtime में मर्ज कर दिया गया है. अब आर्टफ़ैक्ट खाली है. कृपया इसे अपनी डिपेंडेंसी की सूची से हटा दें.

वर्शन 2.6

वर्शन 2.6.1

29 नवंबर, 2023

androidx.room:room-*:2.6.1 रिलीज़ हो गया है. वर्शन 2.6.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • जनरेट किए गए कोड में मौजूद समस्या को ठीक किया गया है. इस समस्या की वजह से, EntityCursorConverter में Double कॉलम के लिए डिफ़ॉल्ट वैल्यू 0.0 के बजाय 0 पर सेट हो रही थी. फ़्लोट टाइप कॉलम के लिए, मिलते-जुलते एज-केस को ठीक करने का तरीका भी शामिल किया गया है. (Id75f5, b/304584179)
  • PagingSource लोड करने के दौरान होने वाली गड़बड़ियों को अब LoadResult.Error के LoadStateUpdate के तौर पर दिखाया जाएगा. इसमें Throwable शामिल होगा. इस गड़बड़ी की स्थिति को PagingDataAdapter.loadStateFlow(Views) या LazyPagingItems.loadState(Compose) के ज़रिए देखा जा सकता है. ध्यान दें कि इससे व्यवहार में बदलाव होता है. पहले, लोड करने से जुड़ी गड़बड़ियां, dao के उस तरीके से थ्रो किए गए अपवाद के तौर पर दिखती थीं जिसने लोड को ट्रिगर किया था. (I93887, b/302708983)

वर्शन 2.6.0

18 अक्टूबर, 2023

androidx.room:room-*:2.6.0 रिलीज़ हो गया है. वर्शन 2.6.0 में ये बदलाव शामिल हैं.

2.5.0 के बाद हुए ज़रूरी बदलाव

  • Room KSP में अब Kotlin कोड जनरेट करने (या “Kotlin CodeGen”) की सुविधा चालू करने का विकल्प उपलब्ध है. (4297ec0). Room में Kotlin CodeGen चालू करने के लिए, KSP के लिए प्रोसेसर के विकल्पों में room.generateKotlin विकल्प का नाम जोड़ें. KSP के लिए प्रोसेसर के विकल्प पास करने के तरीके के बारे में ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें.

ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, यह ध्यान रखना ज़रूरी है कि कुछ और पाबंदियां जोड़ी गई हैं. Kotlin CodeGen में, DAO गेटर या DAO क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी इस्तेमाल करने की अनुमति नहीं है. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न बने कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और इसका नतीजा पहले से सेव है. एक और पाबंदी यह जोड़ी गई है कि Kotlin CodeGen के लिए, Room में अब Nullable कलेक्शन के रिटर्न टाइप की अनुमति नहीं है.

चेतावनी: Kotlin CodeGen का इस्तेमाल करते समय, आपको लग सकता है कि आपके प्रोजेक्ट में वैल्यू न होने की स्थिति के लिए ज़्यादा सख्त नियम लागू किए गए हैं. Kotlin CodeGen में, टाइप आर्ग्युमेंट की शून्यता अहम होती है. हालांकि, Java में इसे ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` रिटर्न टाइप है और टेबल खाली है. Java CodeGen में, इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको गड़बड़ी का मैसेज मिलेगा. इससे बचने के लिए, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. हालांकि, यह मान लिया गया है कि एक शून्य वैल्यू दी गई है. </foo?\></foo\>

  • Room Gradle प्लगिन के लिए नया आर्टफ़ैक्ट, Room में androidx.room आईडी के साथ जोड़ा गया है. इससे Room में मौजूद कई समस्याएं हल हो जाती हैं. ये समस्याएं, Gradle एनोटेशन प्रोसेसर के विकल्पों के ज़रिए स्कीमा के इनपुट और आउटपुट से जुड़ी हैं. ज़्यादा जानकारी के लिए, Room के वर्शन 2.6.0-alpha02 के रिलीज़ नोट पढ़ें.
  • KSP के लिए, Room Entities में वैल्यू क्लास का इस्तेमाल किया जा सकता है. (4194095)
  • DAO फ़ंक्शन में नेस्ट किए गए मैप के रिटर्न टाइप, अब Room में काम करते हैं. (I13f48, 203008711)

वर्शन 2.6.0-rc01

20 सितंबर, 2023

androidx.room:room-*:2.6.0-rc01 रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये बदलाव शामिल हैं.

वर्शन 2.6.0-beta01

23 अगस्त, 2023

androidx.room:room-*:2.6.0-beta01 रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अपसर्ट के दौरान आने वाली SQLite अपवाद की स्थिति को हैंडल करना. अगर अपसर्ट के दौरान 2067 SQLITE_CONSTRAINT_UNIQUE अपवाद की स्थिति आती है, तो अपसर्ट को अपडेट करना चाहिए. (If2849, b/243039555)

वर्शन 2.6.0-alpha03

9 अगस्त, 2023

androidx.room:room-*:2.6.0-alpha03 रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • DAO फ़ंक्शन में नेस्ट किए गए मैप के रिटर्न टाइप, अब Room में काम करते हैं. (I13f48, 203008711)

एपीआई में हुए बदलाव

  • की जगह लेने के लिए, @MapColumn नाम का एक नया टाइप एनोटेशन बनाया गया है. @MapInfo को अब बंद कर दिया गया है. @MapInfo एनोटेशन में दिए गए हर कॉलम के नाम (keyColumnName, valueColumnName या दोनों) के लिए, आपको सिर्फ़ columnName के साथ @MapColumn एनोटेशन का एलान करना होगा. साथ ही, एनोटेशन का इस्तेमाल उस खास टाइप आर्ग्युमेंट पर करना होगा जिसे डीएओ फ़ंक्शन के रिटर्न टाइप में मैप (Map) की कुंजी या वैल्यू के तौर पर रेफ़र किया जा रहा है. ऐसा इसलिए है, क्योंकि @MapColumn एनोटेशन का इस्तेमाल, डीएओ फ़ंक्शन के रिटर्न टाइप में टाइप आर्ग्युमेंट पर सीधे तौर पर किया जाता है. इसे @MapInfo की तरह फ़ंक्शन पर इस्तेमाल नहीं किया जाता. ज़्यादा जानकारी के लिए, कृपया @MapColumn दस्तावेज़ देखें. (Ib0305, b/203008711)
  • एपीआई की अपडेट की गई फ़ाइलें, जिनमें कंपैटिबिलिटी सप्रेशन की जानकारी शामिल की गई है (I8e87a, b/287516207)
  • Room Gradle प्लगिन एपीआई को अपडेट किया गया है, ताकि हर वैरिएंट के लिए कॉन्फ़िगरेशन की ज़रूरत न पड़े. इसका मतलब है कि प्लगिन, अलग-अलग डायरेक्ट्री बनाए बिना सभी वैरिएंट के लिए ग्लोबल लोकेशन स्वीकार कर सकता है. इससे डेटा दूसरी जगह भेजना आसानी से हो पाता है. साथ ही, यह इतना फ़्लेक्सिबल होता है कि प्लगिन के फ़ायदों (दोबारा बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड) को बनाए रखते हुए, मैन्युअल तरीके से फ़्लेवर कॉन्फ़िगर किए जा सकते हैं या बिल्ड का तरीका स्कीमा बनाए जा सकते हैं. (I09d6f, b/278266663)

गड़बड़ियां ठीक की गईं

  • QueryInterceptorStatement में मेमोरी लीक की संभावित समस्या को ठीक किया गया. (I193d1)
  • QueryInterceptorDatabase execSQL() फ़ंक्शन में गलत तरीके से काम करने की समस्या को ठीक किया गया है. (Iefdc8)

वर्शन 2.6.0-alpha02

21 जून, 2023

androidx.room:room-*:2.6.0-alpha02 रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये बदलाव शामिल हैं.

Room Gradle प्लगिन

इस नई रिलीज़ में, Room Gradle प्लगिन के लिए एक नया आर्टफ़ैक्ट शामिल है. इसका आईडी androidx.room है. यह Room में मौजूद कई समस्याओं को हल करता है. ये समस्याएं, Gradle एनोटेशन प्रोसेसर के विकल्पों के ज़रिए स्कीमा के इनपुट और आउटपुट से जुड़ी हैं. Room Gradle प्लगिन, प्रोजेक्ट को इस तरह से कॉन्फ़िगर करता है कि जनरेट किए गए स्कीमा, ऑटो-माइग्रेशन के लिए इस्तेमाल किए जाते हैं. साथ ही, कंपाइल टास्क के आउटपुट को सही तरीके से कॉन्फ़िगर किया जाता है, ताकि फिर से बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड मिल सकें. यह प्लगिन, बुनियादी स्कीमा की लोकेशन को कॉन्फ़िगर करने के लिए डीएसएल उपलब्ध कराता है:

room {
    schemaDirectory("$projectDir/schemas/")
}

इसके बाद, प्लगिन Room कंपाइलर और अलग-अलग कंपाइल टास्क के साथ-साथ इसके बैकएंड (javac, KAPT, KSP) को कॉन्फ़िगर करेगा.इससे, फ़्लेवर्ड फ़ोल्डर में स्कीमा फ़ाइलें आउटपुट होंगी. जैसे, schemas/flavorOneDebug/com.package.MyDatabase/1.json. आम तौर पर, इन फ़ाइलों को रिपॉज़िटरी में चेक-इन किया जाता है, ताकि इनका इस्तेमाल पुष्टि करने और अपने-आप माइग्रेट होने की प्रोसेस के लिए किया जा सके. एनोटेशन प्रोसेसर के विकल्पों के बजाय प्लगिन का इस्तेमाल करने पर, मौजूदा स्कीमा फ़ाइलों को प्लगिन से बनाई गई फ़्लेवर डायरेक्ट्री में कॉपी करना होगा. यह माइग्रेशन की एक बार की कार्रवाई है, जिसे मैन्युअल तरीके से करना होगा. developers.android.com पर मौजूद स्कीमा के दस्तावेज़ को आने वाले समय में अपडेट किया जाएगा. ऐसा तब होगा, जब हमें मिले सुझावों/राय पर काम कर लिया जाएगा और प्लगिन का स्टेबल वर्शन उपलब्ध हो जाएगा. इसलिए, कृपया इसे आज़माएं.

एपीआई में हुए बदलाव

  • RoomDatabase.QueryCallback को एक फ़ंक्शनल इंटरफ़ेस के तौर पर तय किया गया है, ताकि एसएएम कन्वर्ज़न के इस्तेमाल की अनुमति दी जा सके. (Iab8ea, b/281008549)

गड़बड़ियां ठीक की गईं

  • Room सोर्स को Java से Kotlin में माइग्रेट करने के बाद, Robolectric में डेटाबेस को इंस्टैंटिएट करते समय आने वाली समस्या को हल किया गया. (Ic053c, b/274924903)

वर्शन 2.6.0-alpha01

22 मार्च, 2023

androidx.room:room-*:2.6.0-alpha01 रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • KSP के लिए, Room में वैल्यू क्लास का इस्तेमाल किया जा सकता है. Room अब इकाइयों में वैल्यू क्लास के साथ काम कर सकता है. (4194095)
  • Room में अब Kotlin कोड जनरेशन(या “Kotlin CodeGen”) की सुविधा चालू की जा सकती है (4297ec0). Room में Kotlin CodeGen चालू करने के लिए, KSP के लिए प्रोसेसर के विकल्पों में room.generateKotlin विकल्प का नाम जोड़ें. KSP के लिए प्रोसेसर के विकल्प पास करने के तरीके के बारे में ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें.

ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, यह ध्यान रखना ज़रूरी है कि कुछ और पाबंदियां जोड़ी गई हैं. Kotlin CodeGen में, DAO गेटर या DAO क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी इस्तेमाल करने की अनुमति नहीं है. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न बने कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और इसका नतीजा पहले से सेव है. एक और पाबंदी यह जोड़ी गई है कि Kotlin CodeGen के लिए, Room में अब Nullable कलेक्शन के रिटर्न टाइप की अनुमति नहीं है.

चेतावनी: Kotlin CodeGen का इस्तेमाल करते समय, आपको लग सकता है कि आपके प्रोजेक्ट में वैल्यू न होने की स्थिति के लिए ज़्यादा सख्त नियम लागू किए गए हैं. Kotlin CodeGen में, टाइप आर्ग्युमेंट की शून्यता अहम होती है. हालांकि, Java में इसे ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` रिटर्न टाइप है और टेबल खाली है. Java CodeGen में, इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको गड़बड़ी का मैसेज मिलेगा. इससे बचने के लिए, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. हालांकि, यह मान लिया गया है कि एक शून्य वैल्यू दी गई है. </foo?\></foo\>

एपीआई में हुए बदलाव

  • डीएओ के तरीके के रिटर्न टाइप में, नल वैल्यू स्वीकार करने वाले कलेक्शन का बिना मतलब इस्तेमाल करने से सुरक्षा मिलती है. (I777dc, b/253271782, b/259426907)
  • एक ऐसा एपीआई जोड़ा गया है जो अमान्य होने की स्थिति को ट्रैक करने वाले बदलावों को दिखाता है. यह एपीआई, ऐसी स्ट्रीम बनाने के लिए काम का है जिनमें डेटाबेस में हुए बदलावों के हिसाब से बदलाव करने की ज़रूरत होती है. (I8c790, b/252899305)

गड़बड़ियां ठीक की गईं

  • Kotlin codegen में, DAO getter या DAO क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी की अनुमति न दें. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न बने कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और इसका नतीजा पहले से सेव है. (If6a13, b/127483380, b/257967987)

वर्शन 2.5.2

वर्शन 2.5.2

21 जून, 2023

androidx.room:room-*:2.5.2 रिलीज़ हो गया है. वर्शन 2.5.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • kotlinx-metadata-jvm के साथ काम न करने की समस्या को ठीक किया गया है. (386d5c)
  • उस समस्या को ठीक किया गया है जिसकी वजह से, Robolectric टेस्ट में Room का इस्तेमाल करते समय गड़बड़ी होती है. (f79bea, b/274924903)

वर्शन 2.5.1

वर्शन 2.5.1

22 मार्च, 2023

androidx.room:room-*:2.5.1 रिलीज़ हो गया है. वर्शन 2.5.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अगर डेटाबेस पहले से खुला है, तो FrameworkSQLiteHelper में डेटाबेस की पैरंट डायरेक्ट्री को न देखें. (5de86b8)
  • यह देखने के लिए कि डेटाबेस पहले से खुला है या नहीं, isOpenInternal चेक का इस्तेमाल करें. (e91fb35)
  • Room के acquireTransactionThread() में, रीएंट्रेंट केस को बेहतर तरीके से हैंडल करने की सुविधा अब उपलब्ध है. (219f98b). लेन-देन को निलंबित करने के दौरान, Room, लेन-देन को लागू करने वाले थ्रेड का इस्तेमाल करता है. साथ ही, इसमें एक इवेंट लूप शुरू करता है. इसके बाद, डेटाबेस से जुड़ी निलंबित कार्रवाइयों को इसमें भेजता है, ताकि वे सभी लेन-देन के कोरूटीन में शामिल हो जाएं. आम तौर पर, लेन-देन की थ्रेड, लेन-देन शुरू करने वाली थ्रेड से अलग होती है. हालांकि, कुछ मामलों में ये एक ही होती हैं. ऐसे मामलों को हैंडल करने के लिए, withTransaction() को फिर से फ़ैक्टर किया गया है, ताकि यह अब कंट्रोल जॉब पर निर्भर न रहे. इसके बजाय, यह लेन-देन थ्रेड में runBlocking के अंदर से लेन-देन ब्लॉक को निलंबित कर देगा.

वर्शन 2.5.0

वर्शन 2.5.0

22 फ़रवरी, 2023

androidx.room:room-paging-guava:2.5.0, androidx.room:room-paging-rxjava2:2.5.0, और androidx.room:room-paging-rxjava3:2.5.0 रिलीज़ किए जाते हैं. वर्शन 2.5.0 में ये बदलाव शामिल हैं.

वर्शन 2.5.0

11 जनवरी, 2023

androidx.room:room-*:2.5.0 रिलीज़ हो गया है. वर्शन 2.5.0 में ये बदलाव शामिल हैं.

2.4.0 के बाद हुए अहम बदलाव

  • सभी room-runtime सोर्स को Java से Kotlin में बदल दिया गया है. ध्यान दें कि अगर आपका कोड Kotlin में है, तो आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं. ऐसा इसलिए, क्योंकि लाइब्रेरी को Kotlin में बदल दिया गया है. उदाहरण के लिए, किसी भरोसेमंद सोर्स में किया गया ऐसा बदलाव जो काम नहीं करता. अब आपको InvalidationTracker में onInvalidate() को Observer में एलान करना होगा, ताकि Set टाइप का पैरामीटर मिल सके, न कि MutableSet टाइप का. इसके अलावा, कुछ गेटर मेथड को प्रॉपर्टी में बदल दिया गया था. इसके लिए, Kotlin फ़ाइलों पर प्रॉपर्टी ऐक्सेस सिंटैक्स की ज़रूरत होती है. अगर कोई गंभीर समस्या आ रही है, तो कृपया गड़बड़ी की शिकायत करें.
  • नया शॉर्टकट एनोटेशन, @Upsert जोड़ा गया है. यह एनोटेशन, किसी इकाई को तब शामिल करने की कोशिश करता है, जब कोई यूनीकनेस विवाद न हो. अगर कोई विवाद होता है, तो यह इकाई को अपडेट करता है. (I7aaab, b/241964353)
  • Room Paging में सहायता के लिए, नए रूम-पेजिंग आर्टफ़ैक्ट room-paging-rxjava2, room-paging-rxjava3, और room-paging-guava जोड़े गए हैं.
  • @MapInfo (Icc4b5) में, की और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए

वर्शन 2.5.0-rc01

7 दिसंबर, 2022

androidx.room:room-*:2.5.0-rc01 रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये बदलाव शामिल हैं.

  • यह रिलीज़, 2.5.0-beta02 के जैसी ही है.

वर्शन 2.5.0-beta02

9 नवंबर, 2022

androidx.room:room-*:2.5.0-beta02 रिलीज़ हो गया है. वर्शन 2.5.0-beta02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Java के ऐरे के व्यवहार से मेल खाने के लिए, क्वेरी आर्ग्युमेंट लेने वाले अलग-अलग एपीआई को इनवेरिएंट (Array<Any?>) से कॉन्ट्रावेरिएंट (Array<out Any?>) में बदलें. (b/253531073)

वर्शन 2.5.0-beta01

5 अक्टूबर, 2022

androidx.room:room-*:2.5.0-beta01 रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • @Upsert के साथ काम करने वाले कम से कम वर्शन को एपीआई 16 पर प्रतिबंधित करें. ऐसा इसलिए होता है, क्योंकि पुराने एपीआई में प्राइमरी कुंजी की पाबंदी के टकराव की पहचान नहीं की जा सकती. (I5f67f, b/243039555)

गड़बड़ियां ठीक की गईं

  • हमने उस समस्या को ठीक कर दिया है जिसकी वजह से शैडो टेबल को .json फ़ाइलों के स्कीमा में गलत तरीके से एक्सपोर्ट किया जा रहा था. इससे वे फ़ाइलें खराब हो रही थीं. (I4f83b, b/246751839)

वर्शन 2.5.0-alpha03

24 अगस्त, 2022

androidx.room:room-*:2.5.0-alpha03 रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नया शॉर्टकट एनोटेशन, @Upsert जोड़ा गया है. यह एनोटेशन, किसी इकाई को तब शामिल करने की कोशिश करता है, जब कोई यूनीकनेस विवाद न हो. अगर कोई विवाद होता है, तो यह इकाई को अपडेट करता है. (I7aaab, b/241964353)

गड़बड़ियां ठीक की गईं

  • विदेशी कुंजी की बाधा की अपने-आप जांच के दौरान, Room अब IllegalStateException के बजाय SQLiteConstraintException दिखाएगा. (I328dd)
  • getOpenHelper, getQueryExecutor, और getTransactionExecutor के गेटर / प्रॉपर्टी के लिए, Kotlin सोर्स के साथ काम न करने वाले बदलाव को ठीक किया गया. (Iad0ac)

वर्शन 2.5.0-alpha02

1 जून, 2022

androidx.room:room-*:2.5.0-alpha02 रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • रूम पेजिंग की सुविधा के लिए, नए room-paging आर्टफ़ैक्ट room-paging-rxjava2, room-paging-rxjava3, और room-paging-guava जोड़े गए हैं.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203666906)

एपीआई में हुए बदलाव

  • room-runtime को Java से Kotlin में बदल दिया गया है. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/206859668)

    ध्यान दें: लाइब्रेरी को Kotlin में बदलने की वजह से, आपको सोर्स के साथ काम न कर पाने से जुड़ी समस्याएं आ सकती हैं. अगर आपका कोड Kotlin में था और Room के पुराने वर्शन को कॉल कर रहा था, तो नए वर्शन को इन मामलों को हैंडल करना होगा. उदाहरण के लिए, किसी भरोसेमंद सोर्स में किया गया ऐसा बदलाव जो काम नहीं करता. अब आपको InvalidationTracker में onInvalidate() को Observer में एलान करना होगा, ताकि Set टाइप का पैरामीटर मिल सके, न कि MutableSet टाइप का.

  • @MapInfo (Icc4b5) में, की और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए
  • सोर्स के साथ काम न करने की समस्या को ठीक करें, ताकि प्रॉपर्टी गेटर में @Ignore को फिर से अनुमति दी जा सके. (Ifc2fb)

गड़बड़ियां ठीक की गईं

  • डुप्लीकेट कॉलम का पता लगाने वाला अनुमानित एल्गोरिदम. Room अब मल्टीमैप क्वेरी में, एक से ज़्यादा मतलब वाले कॉलम की समस्या को हल करने की कोशिश करेगा. इससे एक ही नाम वाली टेबल के साथ JOIN को, नतीजे के डेटा ऑब्जेक्ट पर सही तरीके से मैप किया जा सकता है. (I4b444, b/201306012, b/212279118)

वर्शन 2.5.0-alpha01

23 फ़रवरी, 2022

androidx.room:room-*:2.5.0-alpha01 रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • उस समस्या को ठीक किया गया है जिसकी वजह से Kotlin सोर्स में Room @IntDef के इस्तेमाल को लागू नहीं किया जा रहा था. (I75f41, b/217951311)
  • सोर्स की कंपैटिबिलिटी से जुड़ी समस्या को ठीक किया गया है, ताकि प्रॉपर्टी गेटर में @Query को फिर से अनुमति दी जा सके. (I0a09b)
  • room-common को Java से Kotlin में बदला गया. (I69c48, b/206858235)

    ध्यान दें: आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं, क्योंकि लाइब्रेरी को Kotlin में बदलते समय कुछ प्रॉपर्टी को कंपैनियन ऑब्जेक्ट में ले जाया गया है. अगर आपका कोड Kotlin में था और Room के पुराने वर्शन को कॉल कर रहा था, तो इन प्रॉपर्टी को ऐक्सेस करते समय नए वर्शन को ".Companion" सफ़िक्स की ज़रूरत होगी.

  • room-migration को Java से Kotlin में बदला गया. (I2724b, b/206858622)
  • room-runtime में मौजूद paging से जुड़ी फ़ाइलों को Java से Kotlin में बदल दिया गया है. (I82fc8, b/206859668)
  • मल्टी-प्रोसेस लॉक और FrameworkSQLite* लेवल पर इस्तेमाल करने के लिए एपीआई जोड़ा गया है. इससे, मल्टी-प्रोसेस में पहली बार डेटाबेस बनाने और माइग्रेशन को सुरक्षित रखने में मदद मिलती है. (Ied267, b/193182592)

गड़बड़ियां ठीक की गईं

  • Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई. रूम में यह थोड़ा बदलाव किया गया है. अब यह फ़ंक्शन के सोर्स नेम का इस्तेमाल करेगा. ऐसा, फ़ंक्शन को गेटर/सेटर के तौर पर प्रॉपर्टी से मैच करते समय किया जाएगा. इससे पहले, यह फ़ंक्शन के JVM नेम का इस्तेमाल करता था. यह नाम, इंटरनल फ़ंक्शन/प्रॉपर्टी के लिए अलग होता है. अगर आपने गेटर/सेटर को निजी प्रॉपर्टी से मैच करने के लिए, कस्टम @JvmName एनोटेशन का इस्तेमाल किया है, तो कृपया अपडेट के बाद जनरेट किए गए कोड की दोबारा जांच करें (If6531, b/205289020)

वर्शन 2.4.3

वर्शन 2.4.3

27 जुलाई, 2022

androidx.room:room-*:2.4.3 रिलीज़ हो गया है. वर्शन 2.4.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से Room, Kotlin 1.7 में सस्पेंड फ़ंक्शन को पहचान नहीं पाता था (b/236612358)

वर्शन 2.4.2

वर्शन 2.4.2

23 फ़रवरी, 2022

androidx.room:room-*:2.4.2 रिलीज़ हो गया है. वर्शन 2.4.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Dao @Transaction सस्पेंड फ़ंक्शन के लिए कोड जनरेट करने से जुड़ी समस्या को ठीक किया गया है. इस फ़ंक्शन के मुख्य हिस्से में, -Xjvm-default=all या इसके बराबर के कंपाइलर के साथ कंपाइल करने की वजह से, डिफ़ॉल्ट इंटरफ़ेस मेथड जनरेट होती है. (Ia4ce5)
  • उस बग को ठीक किया गया है जिसमें Room, Array<ByteArray> रिटर्न टाइप वाली क्वेरी के तरीके के लिए कोड जनरेट करता है. (If086e, b/213789489)

वर्शन 2.4.1

वर्शन 2.4.1

12 जनवरी, 2022

androidx.room:room-*:2.4.1 रिलीज़ हो गया है. वर्शन 2.4.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई. रूम में यह थोड़ा बदलाव किया गया है. अब यह फ़ंक्शन के सोर्स नेम का इस्तेमाल करेगा. ऐसा, फ़ंक्शन को गेटर/सेटर के तौर पर प्रॉपर्टी से मैच करते समय किया जाएगा. इससे पहले, यह फ़ंक्शन के JVM नेम का इस्तेमाल करता था. यह नाम, इंटरनल फ़ंक्शन/प्रॉपर्टी के लिए अलग होता है. अगर आपने गेटर/सेटर को निजी प्रॉपर्टी से मैच करने के लिए, कस्टम @JvmName एनोटेशन का इस्तेमाल किया है, तो कृपया अपडेट के बाद जनरेट किए गए कोड की दोबारा जांच करें (If6531, b/205289020)

वर्शन 2.4.0

वर्शन 2.4.0

15 दिसंबर, 2021

androidx.room:room-*:2.4.0 रिलीज़ हो गया है. वर्शन 2.4.0 में ये बदलाव शामिल हैं.

2.3.0 के बाद हुए अहम बदलाव

  • अपने-आप माइग्रेट होने की सुविधा: Room अब अपने-आप माइग्रेट होने की सुविधा के लिए एक एपीआई उपलब्ध कराता है. हालांकि, इसके लिए स्कीमा एक्सपोर्ट करना ज़रूरी है. Room को यह बताने के लिए कि उसे नई प्रॉपर्टी के लिए अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, @Database#autoMigrations का इस्तेमाल किया जा सकता है. इससे यह तय किया जा सकता है कि किस वर्शन से किस वर्शन में अपने-आप माइग्रेट होना है. जब Room को टेबल और कॉलम के नाम बदलने या उन्हें मिटाने के बारे में अतिरिक्त जानकारी की ज़रूरत होती है, तब @AutoMigration एनोटेशन, ऐसी जानकारी देने वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए, @AutoMigration दस्तावेज़ देखें.
  • अपने-आप माइग्रेट होने की सुविधा में डिपेंडेंसी इंजेक्शन: @ProvidedAutoMigrationSpec एक नया एपीआई है. इसका इस्तेमाल यह एलान करने के लिए किया जाता है कि AutoMigrationSpec को रनटाइम के दौरान RoomDatabase.Builder#addAutoMigrationSpec() के ज़रिए उपलब्ध कराया जाएगा. इससे, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को इस तरह के स्पेसिफ़िकेशन देने की अनुमति मिलती है, जब उन्हें जटिल डिपेंडेंसी की ज़रूरत होती है.
  • अपने-आप होने वाले माइग्रेशन के लिए, माइग्रेशन टेस्ट हेल्पर की सुविधा: Room के MigrationTestHelper को अपडेट किया गया है, ताकि यह अपने-आप होने वाले माइग्रेशन के साथ काम कर सके. इसके लिए, एक नया कंस्ट्रक्टर एपीआई उपलब्ध कराया गया है, जो टेस्ट किए जा रहे डेटाबेस क्लास को स्वीकार करता है. इससे हेल्पर को runMigrationsAndValidate के दौरान, ऑटो माइग्रेशन को उसी तरह अपने-आप जोड़ने की अनुमति मिलती है.
  • Room-Paging की सुविधा: androidx.room:room-paging को रिलीज़ कर दिया गया है. इससे Room की क्वेरी के लिए, Paging 3.0 की सुविधा मिलती है. इससे androidx.paging.PagingSource मिलता है.
  • रिलेशनल क्वेरी के तरीके: Room अब multimap रिटर्न टाइप @Dao तरीकों के साथ काम करता है. ये JOIN स्टेटमेंट के लिए फ़ायदेमंद होते हैं. मल्टीमैप के लिए, Map, SparseArray, LongSparseArray के साथ-साथ Guava के ImmutableMap, ImmutableSetMultimap, और ImmutableListMultimap जैसे टाइप इस्तेमाल किए जा सकते हैं.

वर्शन 2.4.0-rc01

1 दिसंबर, 2021

androidx.room:room-*:2.4.0-rc01 रिलीज़ हो गया है. वर्शन 2.4.0-rc01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Kotlin 1.6 के साथ काम करने के लिए, Room की KSP पर निर्भरता को 1.6.0-1.0.1 पर अपडेट करें

वर्शन 2.4.0-beta02

17 नवंबर, 2021

androidx.room:room-*:2.4.0-beta02 रिलीज़ हो गया है. वर्शन 2.4.0-beta02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • हमने @MapInfo में SparseArray और LongSparseArray के लिए सहायता जोड़ी है. (Ic91a2b/138910317)

गड़बड़ियां ठीक की गईं

  • हमने एक नया TypeConverter analyzer जोड़ा है. यह टाइप में मौजूद nullability की जानकारी को ध्यान में रखता है. यह जानकारी सिर्फ़ KSP में उपलब्ध है. इसलिए, यह सिर्फ़ KSP में डिफ़ॉल्ट रूप से चालू होती है. अगर इससे कोई समस्या होती है, तो एनोटेशन प्रोसेसर को room.useNullAwareTypeAnalysis=false पास करके, इसे बंद किया जा सकता है. अगर ऐसा होता है, तो कृपया गड़बड़ी की शिकायत करें, क्योंकि आने वाले समय में इस फ़्लैग को हटा दिया जाएगा. इस नए TypeConverter analyzer के साथ, सिर्फ़ गैर-शून्य TypeConverters उपलब्ध कराने का सुझाव दिया जाता है. ऐसा इसलिए, क्योंकि नए analyzer में उन्हें शून्य की जांच के साथ रैप करने की सुविधा होती है. ध्यान दें कि इसका असर उन उपयोगकर्ताओं पर नहीं पड़ेगा जो एनोटेशन प्रोसेसर के तौर पर KAPT या Java का इस्तेमाल कर रहे हैं. ऐसा इसलिए, क्योंकि KSP के उलट, इनके टाइप में नल वैल्यू की जानकारी नहीं होती है. (Ia88f9, b/193437407)
  • उस बग को ठीक किया गया है जिसमें आईसीयू टोकनाइज़र का इस्तेमाल करने के लिए घोषित की गई किसी एफ़टीएस इकाई के साथ SQL गड़बड़ी होने पर, Room कंपाइल नहीं हो पाता था. (I00db9, b/201753224)
  • वर्शन के बीच एंबेड की गई इकाई में जोड़े गए नए कॉलम से जुड़ी, अपने-आप माइग्रेट होने की समस्या को ठीक किया गया है. (I5fcb1b/193798291)
  • हमने LEFT JOIN क्वेरी में, रिलेशनल क्वेरी के तरीके से मिलने वाले नतीजों से जुड़ी समस्या को ठीक कर दिया है. इन बदलावों के बाद, अगर एक से ज़्यादा मैपिंग मौजूद है, तो किसी कुंजी के लिए लौटाए गए कलेक्शन में अमान्य वैल्यू ऑब्जेक्ट शामिल नहीं होगा. ऐसा तब होगा, जब वह कर्सर में नहीं मिलता है. अगर कोई मान्य वैल्यू नहीं मिलती है, तो कुंजी को खाली कलेक्शन पर मैप किया जाएगा. (Id5552b/201946438)
  • अपने-आप माइग्रेट होने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, कॉलम के नामों में SQLite कीवर्ड को एस्केप नहीं किया जा सका. (Idbed4b/197133152)

वर्शन 2.4.0-beta01

13 अक्टूबर, 2021

androidx.room:room-*:2.4.0-beta01 रिलीज़ हो गया है. वर्शन 2.4.0-beta01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अपने-आप माइग्रेट होने की सुविधा से जुड़ी एक समस्या को ठीक किया गया है. इस समस्या में, अपने-आप माइग्रेट होने की सुविधा के तहत, नए कॉलम तब नहीं जुड़ते थे, जब उसी सुविधा के तहत माइग्रेट होने वाली किसी दूसरी टेबल में भी उसी नाम का नया कॉलम होता था. (Ia5db5, b/200818663)
  • room-paging से जनरेट किया गया PagingSource अब RoomDatabase.Builder से पास किए गए queryExecutor का इस्तेमाल करता है. इसलिए, इसे पहले Dispatchers.IO के बजाय बदला जा सकता है. (Iae259)

वर्शन 2.4.0-alpha05

29 सितंबर, 2021

androidx.room:room-*:2.4.0-alpha05 रिलीज़ हो गया है. वर्शन 2.4.0-alpha05 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • UUID के लिए, पहले से बना हुआ टाइप कन्वर्टर जोड़ा गया. (I671e8, b/73132006)

एपीआई में हुए बदलाव

  • TypeConverters एनोटेशन में एक नई प्रॉपर्टी जोड़ी गई है. इससे डेवलपर, पहले से मौजूद Enum और UUID कन्वर्टर को बंद कर सकते हैं. डिफ़ॉल्ट रूप से, ये कन्वर्टर चालू होते हैं. हालांकि, आपके पास इन्हें किसी स्कोप या पूरे डेटाबेस के लिए बंद करने का विकल्प होता है. ज़्यादा जानकारी के लिए, TypeConverters का दस्तावेज़ देखें. (36ae9e, b/195413406)

  • @MapInfo एनोटेशन के ज़रिए, DAO में Multimap के लिए नॉन-POJO कुंजियों/वैल्यू का इस्तेमाल किया जा सकता है. (I4d704)

अगर मैप के लिए कुंजी या वैल्यू कॉलम, किसी एक ही कॉलम से लिए गए हैं, तो @MapInfo फ़ंक्शन का इस्तेमाल करना ज़रूरी होगा. उदाहरण देखें:

@MapInfo(valueColumn = "songCount")
@Query("""
       SELECT *, COUNT(mSongId) as songCount
       FROM Artist JOIN Song ON Artist.artistName = Song.artist
       GROUP BY artistName
       """)
fun getArtistAndSongCounts(): Map<Artist, Integer>
  • Room के साथ Paging3 का इस्तेमाल करते समय, room-paging को ज़रूरी आर्टफ़ैक्ट के तौर पर सेट करें. (Ieaffe)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें मल्टीमैप क्वेरी के नतीजों को सही क्रम में नहीं लगाया जाता था. ऐसा तब होता था, जब क्वेरी में मैप की कुंजी के कॉलम का ORDER BY क्लॉज़ शामिल होता था. (I6b887)

बाहरी योगदान

  • @Index में इंडेक्स का क्रम तय करने के लिए, नया एपीआई जोड़ा गया. निकिता ज़ेलोंकिन को धन्यवाद. (I033fc)

वर्शन 2.4.0-alpha04

21 जुलाई, 2021

androidx.room:room-*:2.4.0-alpha04 रिलीज़ हो गया है. वर्शन 2.4.0-alpha04 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room अब मल्टीमैप रिटर्न टाइप @Dao तरीकों के साथ काम करता है. ये JOIN स्टेटमेंट के लिए फ़ायदेमंद होते हैं. मल्टीमैप के लिए, Map के साथ-साथ Guava के ImmutableMap, ImmutableSetMultimap, और ImmutableListMultimap का इस्तेमाल किया जा सकता है.

    यहां मल्टीमैप क्वेरी के उदाहरण दिए गए हैं:

    वन-टू-वन रिलेशन मैप

    @Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId")
    fun getSongAndArtist(): Map<Song, Artist>
    

    एक से कई संबंधों वाला मैप (स्टैंडर्ड मल्टीमैप)

    @Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId")
    fun getArtistAndAlbums(): Map<Artist, List<Album>>
    

    मल्टीमैप के नतीजे को, एसिंक रिटर्न टाइप के साथ भी रैप किया जा सकता है. जैसे, LiveData, Rx’s Observable या कोरूटीन Flow.

रूम-पेजिंग

  • androidx.room:room-paging को रिलीज़ किया गया है. इसमें Room की उन क्वेरी के लिए, Paging 3.0 की नेटिव सहायता उपलब्ध कराई गई है जो androidx.paging.PagingSource दिखाती हैं.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun loadUsers(): PagingSource<Int, User>
    }
    
  • यह आर्टफ़ैक्ट, Room से जनरेट किए गए androidx.paging.PagingSource को Paging 3.0 API पर बनाए गए आर्टफ़ैक्ट से बदल देता है. PagingSource को लागू करने का नया तरीका, कुंजियों को अलग-अलग तरीके से पार्स करता है. इसलिए, Room के PagingSource को मैन्युअल तरीके से दी गई किसी भी कुंजी को इस व्यवहार में हुए बदलाव के बारे में बताना होगा. इसमें Pager के कंस्ट्रक्टर के ज़रिए पास की गई initialKey भी शामिल है. पेज, Key से लोड होना शुरू हो जाएंगे. साथ ही, Key सबसे पहले लोड होने वाला आइटम होगा. यह मौजूदा व्यवहार से अलग है. इसमें LoadParams.Refresh.Key को उपयोगकर्ता की स्क्रोल पोज़िशन माना जाता है और आइटम को कुंजी से पहले और बाद में, दोनों जगह लोड किया जाता है.

  • आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. ऑप्ट-आउट करने पर, Paging 3.0 के लिए मौजूदा सहायता का इस्तेमाल किया जाएगा. यह सहायता Room 2.3 में शुरू की गई थी. हालांकि, आने वाले समय में रिलीज़ होने वाले नए वर्शन में, Room with Paging 3.0 का इस्तेमाल करने वाले लोगों के लिए, यह आर्टफ़ैक्ट इस्तेमाल करना ज़रूरी हो जाएगा. ऑप्ट-इन करने के लिए, अपने क्लासपाथ में नया room-paging आर्टफ़ैक्ट जोड़ें. अगर Gradle का इस्तेमाल किया जा रहा है, तो build.gradle में यह स्निपेट जोड़ा जा सकता है:

    dependency {
      implementation("androidx.room:room-paging:2.4.0-alpha04")
    }
    

गड़बड़ियां ठीक की गईं

  • विदेशी कुंजी के उल्लंघन को मैनेज करने के बारे में, अपने-आप माइग्रेट होने की सुविधा से जुड़ी समस्या को ठीक किया गया है. (b/190113935)

वर्शन 2.4.0-alpha03

16 जून, 2021

androidx.room:room-*:2.4.0-alpha03 रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Room के MigrationTestHelper को अपडेट करें, ताकि अपने-आप माइग्रेट होने की सुविधा काम कर सके. इसके लिए, एक नया कंस्ट्रक्टर एपीआई उपलब्ध कराएं, जो जांच के दायरे में आने वाली डेटाबेस क्लास को स्वीकार करता है. इससे हेल्पर को runMigrationsAndValidate के दौरान, ऑटो माइग्रेशन को उसी तरह अपने-आप जोड़ने की अनुमति मिलती है.

गड़बड़ियां ठीक की गईं

  • Apple के M1 चिप के साथ काम करने के लिए, Room की SQLite नेटिव लाइब्रेरी से जुड़ी समस्या ठीक की गई है. (b/174695268

  • उस समस्या को ठीक किया गया है जिसमें @Transaction फ़ंक्शन का रिटर्न टाइप Flow होने पर, Room से गड़बड़ी का मैसेज नहीं मिलता था (I56ddd, b/190075899)

  • इंडेक्स से जुड़ी ऑटो माइग्रेशन की समस्या ठीक की गई. b/177673291

डिपेंडेंसी से जुड़े अपडेट

  • Room के लिए KSP का इस्तेमाल करने की सुविधा अब KSP 1.5.10-1.0.0-beta01 पर निर्भर करती है. (1ecb11, b/160322705)

वर्शन 2.4.0-alpha02

5 मई, 2021

androidx.room:room-*:2.4.0-alpha02 रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • @ProvidedAutoMigrationSpec एक नया एपीआई है. इसका इस्तेमाल यह एलान करने के लिए किया जाता है कि AutoMigrationSpec को रनटाइम के दौरान RoomDatabase.Builder#addAutoMigrationSpec() के ज़रिए उपलब्ध कराया जाएगा. इससे, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को इस तरह के स्पेसिफ़िकेशन देने की अनुमति मिलती है, जब उन्हें जटिल डिपेंडेंसी की ज़रूरत होती है.

गड़बड़ियां ठीक की गईं

  • अपने-आप होने वाले माइग्रेशन से जुड़ी समस्या ठीक की गई है. इस समस्या में, @DatabaseView को ठीक से फिर से नहीं बनाया जा रहा था.

बाहरी योगदान

  • Room के JournalMode.TRUNCATE में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, InvalidationTracker कॉलबैक को कभी-कभी अमान्य तरीके से, बहुत देर से या बिलकुल भी लागू नहीं किया जा रहा था. Uli Bubenheimer | bubenheimer@users.noreply.github.com का धन्यवाद (b/154040286)

वर्शन 2.4.0-alpha01

21 अप्रैल, 2021

androidx.room:room-*:2.4.0-alpha01 रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अपने-आप माइग्रेट होने की सुविधा: Room अब अपने-आप माइग्रेट होने की सुविधा के लिए एक एपीआई उपलब्ध कराता है. हालांकि, इसके लिए स्कीमा एक्सपोर्ट करना ज़रूरी है. Room को यह बताने के लिए कि उसे नई प्रॉपर्टी के लिए अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, @Database#autoMigrations का इस्तेमाल किया जा सकता है. इससे यह तय किया जा सकता है कि किस वर्शन से किस वर्शन में अपने-आप माइग्रेट होना है. जब Room को टेबल और कॉलम के नाम बदलने या उन्हें मिटाने के बारे में अतिरिक्त जानकारी की ज़रूरत होती है, तब @AutoMigration एनोटेशन, ऐसी जानकारी देने वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए, @AutoMigration दस्तावेज़ देखें.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें Room के स्कीमा की पुष्टि करने की सुविधा, अतिरिक्त ब्रैकेट वाले defaultValue की गलत तरीके से पुष्टि कर रही थी. b/182284899

वर्शन 2.3.0

वर्शन 2.3.0

21 अप्रैल, 2021

androidx.room:room-*:2.3.0 रिलीज़ हो गया है. वर्शन 2.3.0 में ये बदलाव शामिल हैं.

2.2.0 के बाद हुए मुख्य बदलाव

  • इनम के लिए पहले से मौजूद सपोर्ट: अगर कोई टाइप कन्वर्टर नहीं दिया गया है, तो Room अब डिफ़ॉल्ट रूप से, Enum को String और इसके उलट टाइप कन्वर्टर का इस्तेमाल करेगा. अगर किसी enum के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट टाइप कन्वर्टर के बजाय इसका इस्तेमाल करेगा.
  • क्वेरी कॉलबैक: Room अब एक सामान्य कॉलबैक एपीआई RoomDatabase.QueryCallback उपलब्ध कराता है. इसका इस्तेमाल तब किया जाता है, जब क्वेरी को एक्ज़ीक्यूट किया जाना हो. यह डीबग बिल्ड में लॉग इन करने के लिए काम आ सकता है. RoomDatabase.Builder#setQueryCallback() के ज़रिए कॉलबैक सेट किया जा सकता है.
  • पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाने के लिए एपीआई: Room में अब एपीआई उपलब्ध हैं. इनकी मदद से, पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाया जा सकता है. यह डेटाबेस, इनपुट स्ट्रीम से पढ़ा जाता है. इससे ऐसे मामलों में मदद मिलती है, जब प्री-पैकेज किए गए डेटाबेस को gzip किया गया हो.
  • टाइप कन्वर्टर उपलब्ध कराए गए: Room में अब टाइप कन्वर्टर के इंस्टेंस उपलब्ध कराने के लिए एपीआई हैं, ताकि ऐप्लिकेशन उनके इनिशियलाइज़ेशन को कंट्रोल कर सके. Room को उपलब्ध कराए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन @ProvidedTypeConverter का इस्तेमाल करें.
  • RxJava3 के साथ काम करता है: Room अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह ही, ऐसे डीएओ तरीकों का एलान किया जा सकता है जिनका रिटर्न टाइप Flowable, Single, Maybe, और Completable होता है. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट androidx.room:room-rxjava3 उपलब्ध है.
  • Paging 3.0 के साथ काम करता है: Room अब @Query एनोटेट किए गए उन तरीकों के लिए कोड जनरेट करेगा जिनका रिटर्न टाइप androidx.paging.PagingSource है.

वर्शन 2.3.0-rc01

24 मार्च, 2021

androidx.room:room-*:2.3.0-rc01 रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से, Room से बनाई गई Coroutine Flow क्वेरी को निलंबित किए गए withTransaction ब्लॉक में इस्तेमाल नहीं किया जा सकता था. (I797bf)

वर्शन 2.3.0-beta03

10 मार्च, 2021

androidx.room:room-*:2.3.0-beta03 रिलीज़ हो गया है. वर्शन 2.3.0-beta03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • KSP के लिए, इंक्रीमेंटल कंपाइलेशन की सुविधा जोड़ी गई. (I031c1, b/176453350)

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें मुख्य थ्रेड पर PagingSource बनाने से, एएनआर ट्रिगर हो सकता था. (I42b74, b/181221318)
  • @ExperimentalRoomApi की दिखने की सेटिंग को पैकेज के लिए निजी के बजाय सार्वजनिक पर सेट किया गया. (b/181356119)

बाहरी योगदान

  • इस विकल्प को चालू करने पर, Room को @Query एनोटेट किए गए डीएओ मैथड में POJO रिटर्न टाइप स्वीकार करने की अनुमति मिलती है. ऐसा तब होता है, जब इसे @SkipQueryVerification के साथ भी एनोटेट किया गया हो. रूम, क्वेरी के नतीजे को POJO रिटर्न टाइप के तौर पर दिखाने की पूरी कोशिश करेगा. यह ठीक उसी तरह से काम करेगा जिस तरह @RawQuery एनोटेट किए गए डीएओ के तरीके के लिए किया जाता है. ‘Markus Riegel | hey@marcorei.com’ को धन्यवाद. (I45acb)

वर्शन 2.3.0-beta02

18 फ़रवरी, 2021

androidx.room:room-*:2.3.0-beta02 रिलीज़ हो गया है. वर्शन 2.3.0-beta02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room अब Kotlin Symbol Processing KSP के साथ काम करता है. हालांकि, यह सुविधा अभी एक्सपेरिमेंट के तौर पर उपलब्ध है.

    KSP, KAPT की जगह इस्तेमाल किया जाता है. इससे एनोटेशन प्रोसेसर को Kotlin कंपाइलर पर नेटिव तौर पर चलाया जा सकता है. इससे बिल्ड करने में लगने वाला समय काफ़ी कम हो जाता है.

    KSP के साथ Room का इस्तेमाल करने के लिए, KSP Gradle प्लगिन लागू किया जा सकता है. साथ ही, अपनी बिल्ड फ़ाइल में kapt कॉन्फ़िगरेशन को ksp से बदला जा सकता है. उदाहरण के लिए, kapt 'androidx.room:room-compiler:2.3.0-beta02' के बजाय ksp 'androidx.room:room-compiler:2.3.0-beta02' का इस्तेमाल करें. ज़्यादा जानकारी के लिए, KSP का दस्तावेज़ देखें.

    ध्यान दें कि KSP पर अब भी एक्सपेरिमेंट किया जा रहा है. इसलिए, प्रोडक्शन कोड के लिए KAPT का इस्तेमाल करने का सुझाव दिया जाता है. बिल्ड टाइम में कमी सिर्फ़ तब लागू होती है, जब KAPT का इस्तेमाल करने वाले कोई अन्य प्रोसेसर न हों. ऐसी समस्याएं जिनके बारे में पहले से जानकारी है उन्हें देखने के लिए, b/160322705 पर जाएं.

वर्शन 2.3.0-beta01

27 जनवरी, 2021

androidx.room:room-*:2.3.0-beta01 रिलीज़ हो गया है. वर्शन 2.3.0-beta01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अपने-आप बंद होने वाले डेटाबेस: Room में अब ऐसे डेटाबेस को बंद करने की सुविधा है जिन्हें तय समय के बाद ऐक्सेस नहीं किया जाता. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसे RoomDatabase.Builder#setAutoCloseTimeout() को कॉल करके चालू किया जा सकता है. यह सुविधा, एक से ज़्यादा डेटाबेस वाले ऐप्लिकेशन के लिए काम की है.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसमें अलग-अलग टकराव की रणनीतियों वाले कई @Update या @Delete तरीकों के साथ Dao तरीके, सिर्फ़ एक रणनीति वाला कोड जनरेट करते थे. इससे, तय की गई रणनीति को अनदेखा कर दिया जाता था. (/I0b90d, b/176138543)

वर्शन 2.3.0-alpha04

16 दिसंबर, 2020

androidx.room:room-*:2.3.0-alpha04 रिलीज़ हो गया है. वर्शन 2.3.0-alpha04 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room अब एक सामान्य कॉलबैक एपीआई RoomDatabase.QueryCallback उपलब्ध कराता है. इसका इस्तेमाल तब किया जाता है, जब क्वेरी को एक्ज़ीक्यूट किया जाता है. यह डीबग बिल्ड में लॉग इन करने के लिए काम आ सकता है. RoomDatabase.Builder#setQueryCallback() के ज़रिए कॉलबैक सेट किया जा सकता है. (Iaa513, b/174478034, b/74877608)
  • अगर कोई टाइप कन्वर्टर नहीं दिया जाता है, तो रूम अब डिफ़ॉल्ट रूप से Enum से String और इसके उलट टाइप कन्वर्टर का इस्तेमाल करेगा. अगर किसी enum के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट टाइप कन्वर्टर के बजाय इसका इस्तेमाल करेगा. (b/73132006)

आम समस्या

  • अगर Enum के लिए, सिर्फ़ पढ़ने के लिए इस्तेमाल होने वाला टाइप कन्वर्टर पहले से मौजूद है, तो Room गलती से String से Enum में बदलने वाले बिल्ट-इन कन्वर्टर का इस्तेमाल कर सकता है. ऐसा हो सकता है कि आपको ऐसा न करना हो. यह एक आम समस्या है. इसे ठीक करने के लिए, इसे दोनों भाषाओं में बदलने वाला टूल बनाया जा सकता है. देखें: b/175707691

गड़बड़ियां ठीक की गईं

  • हमने एक ऐसी समस्या को ठीक किया है जिसमें Room, JDK के नए वर्शन में इंक्रीमेंटल एनोटेशन प्रोसेसिंग को गलत तरीके से बंद कर देता था. (b/171387388)
  • जब कई क्लास लोडर का इस्तेमाल किया जाता है, तब Room को जनरेट की गई क्लास ढूंढने में आने वाली समस्या को ठीक किया गया है. ‘Serendipity | 892449346@qq.com’ खाते से जुड़ी समस्या को ठीक करने के लिए धन्यवाद! (b/170141113)
  • हमने उस समस्या को ठीक कर दिया है जिसमें Room, Kotlin @Dao के लिए गलत कोड जनरेट करता था. ऐसा तब होता था, जब में एक ऐसी बेस क्लास होती थी जिसके जेनेरिक, JVM में प्रिमिटिव होते हैं. (b/160258066)

बाहरी योगदान

  • अगर WAL मोड चालू है और एपीआई 16 या इससे ज़्यादा है, तो Room अब डिफ़ॉल्ट रूप से beginTransactionNonExclusive का इस्तेमाल करेगा. ‘अहमद आई. Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)

वर्शन 2.3.0-alpha03

14 अक्टूबर, 2020

androidx.room:room-*:2.3.0-alpha03 रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room में अब टाइप कन्वर्टर के इंस्टेंस उपलब्ध कराने के लिए एपीआई हैं, ताकि ऐप्लिकेशन उनके इनिशियलाइज़ेशन को कंट्रोल कर सके. Room को उपलब्ध कराए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन @ProvidedTypeConverter का इस्तेमाल करें. ‘mzgreen yairobbe@gmail.com’ को धन्यवाद. (Ie4fa5, b/121067210)

  • Room में अब ऐसे एपीआई हैं जिनकी मदद से, पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाया जा सकता है. इस डेटाबेस को इनपुट स्ट्रीम से पढ़ा जाता है. इससे ऐसे मामलों में मदद मिलती है, जब प्री-पैकेज किए गए डेटाबेस को gzip किया गया हो. ‘अहमद एल-हेल्व ahmedre@gmail.com’ (3e6792, b/146911060) को धन्यवाद

एपीआई में हुए बदलाव

  • @ForeignKey एनोटेशन में टारगेट एट्रिब्यूट की वैल्यू जोड़ी गई है. इससे @Entity एनोटेशन के बाहर इसका इस्तेमाल नहीं किया जा सकेगा. (Iced1e)

  • RoomDatabase.java में मौजूद mCallbacks फ़ील्ड को अब छिपा दिया गया है. (d576cb, b/76109329)

गड़बड़ियां ठीक की गईं

  • TypeConverters के दस्तावेज़ में अपडेट किया गया है. इसमें यह साफ़ तौर पर बताया गया है कि TypeConverters का इस्तेमाल सिर्फ़ कॉलम / फ़ील्ड को बदलने के लिए किया जा सकता है, न कि लाइनों को बदलने के लिए. (I07c56, b/77307836)

  • DaoProcessor को अपडेट किया गया है, ताकि Kotlin "प्रिमिटिव" के साथ जेनेरिक सुपर टाइप वाले Dao पर कंपाइलर की गड़बड़ी को ठीक किया जा सके. (Ice6bb, b/160258066)

  • ऑब्ज़र्वर को जोड़ने/हटाने के तरीकों से जुड़े दस्तावेज़ को अपडेट किया गया है, ताकि थ्रेडिंग के बारे में ज़्यादा जानकारी दी जा सके (Ifd1d9, b/153948821)

  • Room में, rowid कॉलम का एलान करने वाली FTS टेबल की गलत तरीके से पुष्टि करने से जुड़ी समस्या को ठीक किया गया है. (d62ebc, b/145858914)

बाहरी योगदान

  • टर्किश (5746e3) से जुड़ी, अपरकेस/लोअरकेस वाली स्थानीय भाषा की समस्याएं ठीक की गईं, b/68159494

  • Android Lollipop (d1cfc7, b/162431855) पर आने वाली समस्याओं से बचने के लिए, RoomDatabase में मौजूद ConcurrentHashMap को Collections.synchronizedMap() से बदलें

  • प्रीपैकेज किए गए डेटाबेस को कॉपी किए जाने पर, onOpenPrepackagedDatabase कॉलबैक जोड़ें. (I1ba74, b/148934423)

वर्शन 2.3.0-alpha02

22 जुलाई, 2020

androidx.room:room-*:2.3.0-alpha02 रिलीज़ हो गया है. वर्शन 2.3.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • RxJava3 के साथ काम करता है: Room अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह, ऐसे डीएओ तरीकों का एलान किया जा सकता है जिनका रिटर्न टाइप Flowable, Single, Maybe, और Completable है. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट androidx.room:room-rxjava3 उपलब्ध है. (b/152427884)

एपीआई में हुए बदलाव

  • अब Kotlin ऑब्जेक्ट क्लास में @TypeConverter को एलान किया जा सकता है. (b/151110764)
  • Room इंक्रीमेंटल एनोटेशन प्रोसेसिंग का विकल्प अब डिफ़ॉल्ट रूप से चालू है. (b/112110217)

वर्शन 2.3.0-alpha01

10 जून, 2020

androidx.room:room-*:2.3.0-alpha01 रिलीज़ हो गया है. वर्शन 2.3.0-alpha01 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Paging 3.0 के साथ काम करता है: Room अब @Query एनोटेट किए गए उन तरीकों के लिए कोड जनरेट करेगा जिनका रिटर्न टाइप androidx.paging.PagingSource है.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun pagingSource(): PagingSource<Int, User>
    }
    

एपीआई में हुए बदलाव

  • @RewriteQueriesToDropUnusedColumns एक नया एनोटेशन है. इसकी मदद से Room, क्वेरी में ‘*’ प्रोजेक्शन को फिर से लिखता है, ताकि नतीजे में इस्तेमाल न किए गए कॉलम हटा दिए जाएं.
  • प्रोसेसर के विकल्प room.expandProjection को अब बंद कर दिया गया है. स्टार प्रोजेक्शन के साथ रूम ऑप्टिमाइज़ करने वाली क्वेरी की जगह, @RewriteQueriesToDropUnusedColumns का इस्तेमाल करें. ध्यान दें कि @RewriteQueriesToDropUnusedColumns, कॉलम के टकराव को हल करने के लिए room.expandProjection की जगह नहीं लेता है. यह सुविधा, उन रिटर्न टाइप के लिए उपलब्ध कराई जाती है जिनमें @Embedded फ़ील्ड शामिल होते हैं.

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें Room, इंक्रीमेंटल एनोटेशन प्रोसेसर को चालू करने के लिए इस्तेमाल किए गए JDK वर्शन का सही तरीके से पता नहीं लगा पाता था. Blaz Solar (me@blaz.solar) को धन्यवाद (b/155215201)
  • Room अब एनोटेशन प्रोसेसर के साथ ANTLR डिपेंडेंसी को एम्बेड करता है, ताकि ANTLR का इस्तेमाल करने वाले अन्य प्रोसेसर के साथ वर्शन के टकराव से बचा जा सके. (b/150106190)

वर्शन 2.2.6

वर्शन 2.2.6

16 दिसंबर, 2020

androidx.room:room-*:2.2.6 रिलीज़ हो गया है. वर्शन 2.2.6 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने एक ऐसी समस्या को ठीक किया है जिसमें Room, JDK के नए वर्शन में इंक्रीमेंटल एनोटेशन प्रोसेसिंग को गलत तरीके से बंद कर देता था. (b/171387388)

वर्शन 2.2.5

वर्शन 2.2.5

18 मार्च, 2020

androidx.room:room-*:2.2.5 रिलीज़ हो गया है. वर्शन 2.2.5 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • MultiInstanceInvalidationService को directBootAware के तौर पर सेट करें. ‘Mygod contact-git@mygod.be’ (b/148240967) को धन्यवाद
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, एक से ज़्यादा इंस्टेंस के अमान्य होने की सुविधा चालू होने पर ऐप्लिकेशन क्रैश हो जाता था. ऐसा तब होता था, जब डेटाबेस में FTS इकाई मौजूद होती थी. (b/148969394)
  • Room annotation processor में SQLite नेटिव लाइब्रेरी लोड करते समय आने वाली समस्या को ठीक किया गया है. इस समस्या की वजह से, पैरलल कंपाइलेशन की वजह से कंपाइलर क्रैश हो जाता था. (b/146217083)

वर्शन 2.2.4

वर्शन 2.2.4

19 फ़रवरी, 2020

androidx.room:room-common:2.2.4, androidx.room:room-compiler:2.2.4, androidx.room:room-guava:2.2.4, androidx.room:room-ktx:2.2.4, androidx.room:room-migration:2.2.4, androidx.room:room-runtime:2.2.4, androidx.room:room-rxjava2:2.2.4, और androidx.room:room-testing:2.2.4 रिलीज़ किए जाते हैं. वर्शन 2.2.4 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • लेन-देन को निलंबित करने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, लेन-देन शुरू होने से पहले ही कोराउटीन को तुरंत रद्द कर दिया जाता था. (b/148181325)
  • JDK 9 का इस्तेमाल करके बिल्ड करते समय, @Generated का गलत तरीके से इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया है. (b/146538330)
  • हमने उस समस्या को ठीक कर दिया है जिसमें Kotlin में मौजूद DAO इंटरफ़ेस में कोई कॉन्क्रीट फ़ंक्शन होने पर, Room गलत कोड जनरेट करता था. (b/146825845)

वर्शन 2.2.3

वर्शन 2.2.3

18 दिसंबर, 2019

androidx.room:room-*:2.2.3 रिलीज़ हो गया है. वर्शन 2.2.3 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें Room, ऐसे डेटाबेस की पुष्टि नहीं कर पाता था जिसे माइग्रेट नहीं किया गया था. साथ ही, जिसमें स्कीमा में इंडेक्स के साथ लेगसी हैश शामिल था. (b/139306173)

वर्शन 2.2.2

वर्शन 2.2.2

20 नवंबर, 2019

androidx.room:room-*:2.2.2 रिलीज़ हो गया है. वर्शन 2.2.2 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक बग ठीक किया गया है. इस बग की वजह से, 999 से ज़्यादा लाइनों वाले एक-से-एक संबंध को इकट्ठा करने पर, Room से संबंधित आइटम के लिए null वैल्यू मिलती थी. (b/143105450)

वर्शन 2.2.1

वर्शन 2.2.1

23 अक्टूबर, 2019

androidx.room:room-*:2.2.1 रिलीज़ हो गया है. वर्शन 2.2.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • हमने एक गड़बड़ी को ठीक किया है. इस गड़बड़ी की वजह से, कंपाइलर के विकल्पexpandProjection के चालू होने पर Room, CURSOR_MISMATCH के बारे में गलत तरीके से चेतावनी देता था. (b/140759491)
  • कंपाइल टाइम के दौरान क्वेरी की पुष्टि करने के लिए इस्तेमाल की गई नेटिव लाइब्रेरी के न मिलने की समस्या को ठीक करने के लिए, फिर से कोशिश करने की सुविधा जोड़ी गई है.

वर्शन 2.2.0

वर्शन 2.2.0

9 अक्टूबर, 2019

androidx.room:room-*:2.2.0 रिलीज़ हो गया है. वर्शन 2.2.0 में ये बदलाव शामिल हैं.

वर्शन 2.1.0 के बाद के मुख्य बदलाव

  • पहले से पैकेज किया गया डेटाबेस: RoomDatabase.Builder में दो नए एपीआई अब उपलब्ध हैं. इनकी मदद से, पहले से मौजूद डेटाबेस फ़ाइल का इस्तेमाल करके RoomDatabase बनाया जा सकता है. createFromAsset() का इस्तेमाल तब किया जाता है, जब पहले से भरी गई डेटाबेस फ़ाइल, APK के ऐसेट फ़ोल्डर में होती है. वहीं, createFromFile() का इस्तेमाल तब किया जाता है, जब फ़ाइल किसी भी जगह पर होती है. इन एपीआई के इस्तेमाल से, डेटा मिटाने वाली माइग्रेशन प्रोसेस का तरीका बदल जाता है. इससे फ़ॉलबैक माइग्रेशन के दौरान, Room पहले से भरे गए डेटाबेस को फिर से कॉपी करने की कोशिश करेगा. अगर ऐसा नहीं होता है, तो वह सभी टेबल को सिर्फ़ हटाने और फिर से बनाने की प्रोसेस पर फ़ॉलबैक करेगा. b/62185732
  • स्कीमा की डिफ़ॉल्ट वैल्यू: @ColumnInfo में अब एक नई प्रॉपर्टी defaultValue है. इसका इस्तेमाल किसी कॉलम की डिफ़ॉल्ट वैल्यू तय करने के लिए किया जा सकता है. डिफ़ॉल्ट वैल्यू, डेटाबेस स्कीमा का हिस्सा होती हैं. अगर इन्हें तय किया जाता है, तो माइग्रेशन के दौरान इनकी पुष्टि की जाएगी. b/64088772
  • कई-से-कई संबंध: @Relation में अब एक नई प्रॉपर्टी associateBy है. यह एक नया एनोटेशन @Junction लेता है. इसका इस्तेमाल ऐसे संबंध का एलान करने के लिए किया जाता है जिसे जंक्शन टेबल (इसे जॉइन टेबल भी कहा जाता है) के ज़रिए पूरा किया जाना चाहिए. b/69201917
  • एक से एक संबंध: POJO फ़ील्ड में @Relation एनोटेशन के साथ List या Set टाइप होने की पाबंदी हटा दी गई है. इससे एक वैल्यू वाले संबंधों को दिखाया जा सकेगा. b/62905145
  • टारगेट इकाई: DAO एनोटेशन @Insert, @Update, और @Delete में अब एक नई प्रॉपर्टी targetEntity है. इसकी मदद से, उस टारगेट टेबल के बारे में बताया जा सकता है जिस पर DAO के तरीके को काम करना है. इससे उन DAO तरीकों के पैरामीटर, मनमाने POJO हो सकते हैं जिन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. असल में, इससे कुछ डेटा को इंसर्ट, मिटाने, और अपडेट करने की अनुमति मिलती है. b/127549506
  • कोरूटीन फ़्लो: @Query डीएओ के तरीके अब Flow<T> के रिटर्न टाइप के हो सकते हैं. अगर क्वेरी में शामिल टेबल अमान्य हो जाती हैं, तो लौटाया गया फ़्लो, वैल्यू का नया सेट फिर से जारी करेगा. Channel<T> रिटर्न टाइप के साथ DAO फ़ंक्शन को एलान करना एक गड़बड़ी है. इसके बजाय, Room आपको Flow का इस्तेमाल करने का सुझाव देता है. इसके बाद, Flow को Channel में बदलने के लिए, आस-पास के फ़ंक्शन का इस्तेमाल करें. b/130428884
  • Gradle Incremental Annotation Processor: Room अब Gradle का आइसोलेटिंग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental की मदद से, इंक्रीमेंटेबिलिटी को चालू किया जा सकता है. ज़्यादा जानकारी के लिए, Room Compiler Options देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां जाकर बग की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में इंक्रीमेंटेबिलिटी को डिफ़ॉल्ट रूप से चालू करने का प्लान बना रहे हैं. b/112110217
  • प्रोजेक्शन को बड़ा करना: कंपाइलर का एक नया एक्सपेरिमेंटल विकल्प room.expandProjection जोड़ा गया है. इससे Room, स्टार प्रोजेक्शन वाली क्वेरी को फिर से लिखता है, ताकि उसमें सिर्फ़ POJO टाइप को वापस लाने वाले कॉलम शामिल हों. उदाहरण के लिए, @Query("SELECT * FROM Song") के साथ डीएओ के किसी ऐसे तरीके के लिए जो सिर्फ़ दो फ़ील्ड वाले SongIdAndTitle नाम के POJO को दिखाता है. इसके बाद, Room क्वेरी को SELECT id, title FROM Song में फिर से लिखेगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससे CURSOR_MISMATCH चेतावनी नहीं मिलती. यह चेतावनी तब दिखती है, जब क्वेरी ऐसी अतिरिक्त कॉलम दिखाती है जो POJO टाइप के किसी भी फ़ील्ड से मेल नहीं खाते.

वर्शन 2.2.0-rc01

5 सितंबर, 2019

androidx.room:room:2.2.0-rc01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

Room 2.2.0-beta01 के बाद से, सार्वजनिक तौर पर कोई बदलाव नहीं किया गया है.

वर्शन 2.2.0-beta01

22 अगस्त, 2019

androidx.room:room-*:2.2.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • उस बग को ठीक किया गया है जिसकी वजह से, कोरूटीन फ़्लो क्वेरी कुछ समय बाद नई वैल्यू फिर से जनरेट करना बंद कर देती थी. (b/139175786)
  • Room में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room 1.0 के बाद से माइग्रेट नहीं किए गए डेटाबेस को खोलते समय, Room लेगसी स्कीमा हैश कोड को स्वीकार नहीं करता था. इस वजह से, अमान्य स्कीमा की वजह से रनटाइम क्रैश हो जाता था. (b/139306173)

वर्शन 2.2.0-alpha02

7 अगस्त, 2019

androidx.room:room-*:2.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

नई सुविधाएं

  • कोरूटीन फ़्लो: @Query डीएओ के तरीके अब Flow<T> के रिटर्न टाइप के हो सकते हैं. अगर क्वेरी में शामिल टेबल अमान्य हो जाती हैं, तो लौटाया गया फ़्लो, वैल्यू का नया सेट फिर से जारी करेगा. Channel<T> रिटर्न टाइप के साथ DAO फ़ंक्शन को एलान करना एक गड़बड़ी है. इसके बजाय, Room आपको Flow का इस्तेमाल करने का सुझाव देता है. इसके बाद, Flow को Channel में बदलने के लिए, आस-पास के फ़ंक्शन का इस्तेमाल करें. b/130428884
  • प्रोजेक्शन को बड़ा करना: कंपाइलर का एक नया एक्सपेरिमेंटल विकल्प room.expandProjection जोड़ा गया है. इससे Room, स्टार प्रोजेक्शन वाली क्वेरी को फिर से लिखता है, ताकि उसमें सिर्फ़ POJO टाइप को वापस लाने वाले कॉलम शामिल हों. उदाहरण के लिए, @Query("SELECT * FROM Song") वाला डीएओ मैथड, सिर्फ़ दो फ़ील्ड वाला SongIdAndTitle नाम का POJO दिखाता है. इसके बाद, Room क्वेरी को SELECT id, title FROM Song में फिर से लिखेगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससे CURSOR_MISMATCH चेतावनी नहीं मिलती. यह चेतावनी तब दिखती है, जब क्वेरी ऐसी अतिरिक्त कॉलम दिखाती है जो POJO टाइप के किसी भी फ़ील्ड से मेल नहीं खाते.
  • onDestructiveMigrate एक नया कॉलबैक एपीआई है, जिसे RoomDatabase.Callback में जोड़ा गया है. इसका इस्तेमाल तब किया जाता है, जब Room किसी डेटाबेस को डिस्ट्रक्टिव तरीके से माइग्रेट करता है. b/79962330

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें Room, फ़ील्ड के सुरक्षित होने पर फ़ील्ड सेटर के तौर पर किसी तरीके का इस्तेमाल करके गलत कोड जनरेट करता था. b/136194628
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, कई इंस्टेंस के अमान्य होने की सुविधा चालू होने पर, दूसरी प्रोसेस में InvalidationTracker, NPE दिखाता था. ऐसा तब होता था, जब invalidationService बंद हो जाता था. b/137454915
  • ऐसी गड़बड़ी को ठीक किया गया है जिसमें Room, @RawQuery एनोटेशन वाले इनहेरिट किए गए सस्पेंड फ़ंक्शन के रिटर्न टाइप की सही पहचान नहीं कर पाता था. b/137878827
  • @Relation के लिए जनरेट किए गए कोड को अपडेट किया गया है. ऐसा तब किया जाता है, जब संबंधित कुंजी BLOB टाइप की हो, ताकि तुलना की जा सकने वाली ByteBuffer का इस्तेमाल किया जा सके. b/137881998
  • हमने एक बग को ठीक किया है. इस बग में, Room @Insert, @Update, और @Delete के आंशिक इकाई पैरामीटर के तौर पर इस्तेमाल किए गए POJO पर सेटर मौजूद न होने की शिकायत करता था. b/138664463
  • एक बग ठीक किया गया है. इसमें Room, @Entity के ज़रिए अनदेखा किए गए कॉलम के लिए, गेटर और सेटर के मौजूद न होने की शिकायत करता था. ऐसा तब होता था, जब इकाई क्लास का इस्तेमाल कुछ DAO तरीकों में किया जाता था. b/138238182
  • एक गड़बड़ी को ठीक किया गया है. इसमें Room, नाम वाले बाइंडिंग आर्ग्युमेंट को पोज़िशनल आर्ग्युमेंट में सही तरीके से बदल नहीं पाता था. इसकी वजह से, रीयूज़ किए गए पैरामीटर के साथ क्वेरी को एक्ज़ीक्यूट करते समय रनटाइम अपवाद होता था. b/137254857

वर्शन 2.2.0-alpha01

10 जुलाई, 2019

नई सुविधाएं

  • पहले से पैकेज किया गया डेटाबेस: RoomDatabase.Builder में दो नए एपीआई अब उपलब्ध हैं. इनकी मदद से, पहले से मौजूद डेटाबेस फ़ाइल का इस्तेमाल करके RoomDatabase बनाया जा सकता है. createFromAsset() का इस्तेमाल तब किया जाता है, जब पहले से भरी गई डेटाबेस फ़ाइल, APK के ऐसेट फ़ोल्डर में होती है. वहीं, createFromFile() का इस्तेमाल तब किया जाता है, जब फ़ाइल किसी भी जगह पर होती है. इन एपीआई के इस्तेमाल से, डेटा मिटाने वाली माइग्रेशन प्रोसेस का तरीका बदल जाता है. इससे फ़ॉलबैक माइग्रेशन के दौरान, Room पहले से भरे गए डेटाबेस को फिर से कॉपी करने की कोशिश करेगा. अगर ऐसा नहीं होता है, तो वह सभी टेबल को सिर्फ़ हटाने और फिर से बनाने की प्रोसेस पर फ़ॉलबैक करेगा. b/62185732
  • स्कीमा की डिफ़ॉल्ट वैल्यू: @ColumnInfo में अब एक नई प्रॉपर्टी defaultValue है. इसका इस्तेमाल किसी कॉलम की डिफ़ॉल्ट वैल्यू तय करने के लिए किया जा सकता है. डिफ़ॉल्ट वैल्यू, डेटाबेस स्कीमा का हिस्सा होती हैं. अगर इन्हें तय किया जाता है, तो माइग्रेशन के दौरान इनकी पुष्टि की जाएगी. b/64088772

    ध्यान दें: अगर आपके डेटाबेस स्कीमा में पहले से ही डिफ़ॉल्ट वैल्यू मौजूद हैं, जैसे कि ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z के ज़रिए जोड़ी गई वैल्यू, और आपको उन्हीं कॉलम के लिए @ColumnInfo के ज़रिए डिफ़ॉल्ट वैल्यू तय करनी हैं, तो आपको माइग्रेशन की सुविधा देनी पड़ सकती है. इससे, उन डिफ़ॉल्ट वैल्यू की पुष्टि की जा सकेगी जिनका हिसाब नहीं रखा गया है. ज़्यादा जानकारी के लिए, Room माइग्रेशन देखें.

  • मेनी-टू-मेनी संबंध: @Relation में अब एक नई प्रॉपर्टी associateBy है. यह एक नया एनोटेशन @Junction लेता है. इसका इस्तेमाल ऐसे संबंध का एलान करने के लिए किया जाता है जिसे जंक्शन टेबल (इसे जॉइन टेबल भी कहा जाता है) के ज़रिए पूरा किया जाना चाहिए. b/69201917
  • एक से एक संबंध: POJO फ़ील्ड में @Relation एनोटेशन के साथ List या Set टाइप होने की पाबंदी हटा दी गई है. इससे एक वैल्यू वाले संबंधों को दिखाया जा सकेगा. b/62905145
  • टारगेट इकाई: DAO एनोटेशन @Insert, @Update, और @Delete में अब एक नई प्रॉपर्टी targetEntity है. इसकी मदद से, उस टारगेट टेबल के बारे में बताया जा सकता है जिस पर DAO के तरीके को काम करना है. इससे उन DAO तरीकों के पैरामीटर, मनमाने POJO हो सकते हैं जिन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. असल में, इससे कुछ डेटा को इंसर्ट, मिटाने, और अपडेट करने की अनुमति मिलती है. b/127549506
  • Gradle Incremental Annotation Processor: Room अब Gradle का आइसोलेटिंग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental की मदद से, इंक्रीमेंटेबिलिटी को चालू किया जा सकता है. ज़्यादा जानकारी के लिए, Room Compiler Options देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां जाकर बग की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से इंक्रीमेंटेबिलिटी की सुविधा चालू करने का प्लान बना रहे हैं. b/112110217

गड़बड़ियां ठीक की गईं

  • क्वेरी पूरी होने से पहले, क्वेरी की Rx स्ट्रीम को बंद कर दिया गया है. ऐसे में, Room अब EmptySetResultException को ग्लोबल गड़बड़ी हैंडलर तक नहीं पहुंचाएगा. b/130257475
  • उस गड़बड़ी को ठीक किया गया है जिसमें Room, निलंबित किए गए DAO फ़ंक्शन के लिए गलत गड़बड़ी का मैसेज दिखाता था. इस फ़ंक्शन को @RawQuery के साथ एनोटेट किया गया था और इसका कोई रिटर्न टाइप नहीं था. b/134303897
  • रूम अब रॉ टाइप के साथ डीएओ अडैप्टर जनरेट नहीं करेगा. b/135747255

वर्शन 2.1.0

वर्शन 2.1.0

13 जून, 2019

Room 2.1.0 को 2.1.0-rc01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

2.0.0 के बाद हुए अहम बदलाव

  • FTS: Room अब मैपिंग वाली इकाइयों के साथ काम करता है. इसके लिए, FTS3 या FTS4 टेबल का इस्तेमाल किया जाता है. @Entity के साथ एनोटेट की गई क्लास को अब @Fts3 या @Fts4 के साथ भी एनोटेट किया जा सकता है, ताकि मैपिंग की पूरी जानकारी वाली टेक्स्ट सर्च टेबल के साथ क्लास का एलान किया जा सके. एनोटेशन के तरीकों के ज़रिए, FTS के विकल्पों को और ज़्यादा पसंद के मुताबिक बनाया जा सकता है.
  • व्यू: Room अब @DatabaseView एनोटेशन का इस्तेमाल करके, किसी क्लास को सेव की गई क्वेरी के तौर पर एलान करने की सुविधा देता है. इसे व्यू भी कहा जाता है.
  • कोरूटीन: डीएओ के तरीके अब सस्पेंड फ़ंक्शन हो सकते हैं. इस सुविधा का फ़ायदा पाने के लिए, अपनी डिपेंडेंसी में room-ktx शामिल करें. ktx आर्टफ़ैक्ट, कोरूटीन में डेटाबेस ट्रांज़ैक्शन करने के लिए, एक्सटेंशन फ़ंक्शन RoomDatabase.withTransaction भी उपलब्ध कराता है.
  • Auto Value: Room अब AutoValue एनोटेट की गई क्लास को इकाइयों और POJO के तौर पर एलान करने की सुविधा देता है. Room के एनोटेशन @PrimaryKey, @ColumnInfo, @Embedded, और @Relation को अब ऑटो वैल्यू एनोटेट की गई क्लास के ऐब्स्ट्रैक्ट मेथड में एलान किया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ @CopyAnnotations भी होना चाहिए, ताकि Room इन्हें सही तरीके से समझ सके.
  • असिंक की अतिरिक्त सुविधा: @Insert, @Delete या @Update के साथ एनोटेट किए गए DAO के तरीके, अब Rx के रिटर्न टाइप Completable, Single, Maybe, और Guava के रिटर्न टाइप ListenableFuture के साथ काम करते हैं. साथ ही, इनमें @Query में शामिल INSERT, DELETE या UPDATE स्टेटमेंट भी शामिल हैं. ये फ़ंक्शन को निलंबित भी कर सकते हैं.
  • enableMultiInstanceInvalidation, RoomDatabase.Builder में एक नया एपीआई है. इसका इस्तेमाल, एक ही डेटाबेस फ़ाइल का इस्तेमाल करके RoomDatabase के कई इंस्टेंस में अमान्य करने की सुविधा चालू करने के लिए किया जाता है.
  • fallbackToDestructiveMigrationOnDowngrade, RoomDatabase.Builder में मौजूद एक नया एपीआई है. इसका इस्तेमाल, डेटाबेस को डाउनग्रेड होने पर अपने-आप फिर से बनाने के लिए किया जाता है.
  • ignoredColumns, @Entity एनोटेशन में एक नया एपीआई है. इसका इस्तेमाल, नाम के हिसाब से अनदेखा किए गए फ़ील्ड की सूची बनाने के लिए किया जा सकता है.
  • अब Room, डेटा क्लास में Kotlin के प्राइमरी कंस्ट्रक्टर का सही तरीके से इस्तेमाल करेगा. इससे प्रॉपर्टी को vars के तौर पर एलान करने की ज़रूरत नहीं होगी.

वर्शन 2.1.0-rc01

29 मई, 2019

गड़बड़ियां ठीक की गईं

  • रूम को शुरू करने से जुड़ी गड़बड़ी को ठीक किया गया है. यह गड़बड़ी, पहले से सेट अप किए गए temp_store कॉन्फ़िगरेशन की वजह से हो सकती है. b/132602198
  • SQLite 3.27.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले लोगों के लिए, डबल कोट का इस्तेमाल करने से जुड़ी चेतावनी को ठीक किया गया है. b/131712640
  • उस बग को ठीक किया गया है जिसकी वजह से, एक साथ कई बार अमान्य होने की जांच करने पर InvalidationTracker क्रैश हो जाता था. b/133457594

वर्शन 2.1.0-beta01

7 मई, 2019

androidx.room 2.1.0-beta01 को 2.1.0-alpha07 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

वर्शन 2.1.0-alpha07

25 अप्रैल, 2019

एपीआई / व्यवहार में बदलाव

  • एक्सटेंशन फ़ंक्शन RoomDatabase.withTransaction को बदल दिया गया है. अब यह CoroutineScope को रिसीवर के तौर पर इस्तेमाल करने वाले फ़ंक्शन ब्लॉक को नहीं लेगा. इससे लेन-देन वाले ब्लॉक में एक साथ कई चीज़ें चलाने के लिए ज़रूरी coroutineScope { } रैपर को स्किप नहीं किया जा सकता.

गड़बड़ियां ठीक की गईं

  • हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें Room, Collection टाइप का पैरामीटर रखने वाले Kotlin DAO फ़ंक्शन के लिए TypeConverter से मेल नहीं खाता था. b/122066791

वर्शन 2.1.0-alpha06

22 मार्च, 2019

एपीआई / व्यवहार में बदलाव

  • अब एसिंक लेन-देन की क्वेरी को क्रम से लगाया जाता है, ताकि Room, डेटाबेस के लेन-देन को पूरा करने के लिए एक से ज़्यादा थ्रेड का इस्तेमाल न करे. RoomDatabase.Builder.setTransactionExecutor(Executor) को जोड़ा गया है, ताकि लेन-देन के लिए इस्तेमाल किए जाने वाले एक्ज़ीक्यूटर को कॉन्फ़िगर किया जा सके.
  • RoomDatabase.runInTransaction(Callable) अब जांच की गई अपवादों को RuntimeExceptions में रैप नहीं करेगा. b/128623748

गड़बड़ियां ठीक की गईं

  • हमने उस बग को ठीक कर दिया है जिसकी वजह से, कॉन्टेंट टेबल और बाहरी कॉन्टेंट की एफ़टीएस टेबल, दोनों के लिए ऑब्ज़र्वर जोड़ने पर, अमान्य ट्रैकर कॉन्टेंट टेबल को मॉनिटर करना बंद कर देता था. b/128508917
  • SQLite 3.24.0 से मेल खाने के लिए, Room SQLite व्याकरण को अपडेट किया गया. b/110883668

वर्शन 2.1.0-alpha05

13 मार्च, 2019

नई सुविधाएं

  • एक्सटेंशन फ़ंक्शन RoomDatabase.withTransaction की मदद से, कोरूटीन में डेटाबेस के लेन-देन सुरक्षित तरीके से किए जा सकते हैं. रूम एक्सटेंशन फ़ंक्शन और कोरूटीन की सुविधा, room-ktx आर्टफ़ैक्ट में उपलब्ध है.
  • @Transaction के साथ एनोटेट किए गए नॉन-ऐब्स्ट्रैक्ट डीएओ मैथड अब सस्पेंड फ़ंक्शन हो सकते हैं. b/120241587

एपीआई / व्यवहार में बदलाव

  • आर्टफ़ैक्ट room-coroutines का नाम बदलकर room-ktx कर दिया गया है. इसका नामकरण, अन्य androidx आर्टफ़ैक्ट के नामकरण के जैसा ही है.
  • RoomDatabase में मौजूद beginTransaction, setTransactionSuccessful, और endTransaction को बंद कर दिया गया है. अब इनकी जगह runInTransaction और room-ktx एक्सटेंशन फ़ंक्शन withTransaction का इस्तेमाल किया जा सकता है.

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें SIMPLE टोकनाइज़र का इस्तेमाल करने पर, टोकनाइज़र के आर्ग्युमेंट हटा दिए जाते थे. b/125427014
  • हमने एक गड़बड़ी ठीक की है. इस गड़बड़ी की वजह से, Room उन सस्पेंडिंग फ़ंक्शन की सही तरीके से पहचान नहीं कर पाता था जिनके पैरामीटर का टाइप, इनर क्लास था. b/123767877
  • उस गड़बड़ी को ठीक किया गया है जिसमें INSERT, UPDATE या DELETE स्टेटमेंट के साथ, स्थगित किए गए @Query DAO तरीके से मुख्य थ्रेड में क्वेरी को तुरंत तैयार किया जा रहा था. b/123695593
  • कई गड़बड़ियों को ठीक किया गया है. इनमें से कुछ गड़बड़ियों में, Room, निलंबित किए गए कुछ फ़ंक्शन के लिए गलत कोड जनरेट करता था. b/123466702 और b/123457323
  • हमने एक गड़बड़ी को ठीक किया है. इसमें जनरेट किए गए कोड में, इस्तेमाल न किए जा रहे तरीकों को सही तरीके से नहीं हटाया जा रहा था. b/117602586
  • androidx.sqlite की Room डिपेंडेंसी को 1.0.2 पर अपडेट किया गया है. इसमें खराब हो चुके डेटाबेस को सही तरीके से हैंडल करने से जुड़ी समस्याएं ठीक की गई हैं. b/124476912

मौजूदा समस्याएं

  • Room 2.1.0-alpha05, kotlinx-metadata-jvm आर्टफ़ैक्ट पर निर्भर करता है. यह फ़िलहाल Maven Central में उपलब्ध नहीं है (KT-27991). अपने प्रोजेक्ट के डेटाबेस में maven { url "https://kotlin.bintray.com/kotlinx/" } जोड़कर, इस डिपेंडेंसी को हल किया जा सकता है.

वर्शन 2.1.0-alpha04

25 जनवरी, 2019

नई सुविधाएं

  • @Query एनोटेशन वाले डीएओ मैथड, अब Single, Mayble, Completable, और ListenableFuture जैसे एसिंक टाइप दिखा सकते हैं. इन मैथड में INSERT, UPDATE या DELETE स्टेटमेंट शामिल होते हैं. इसके अलावा, ये सस्पेंड फ़ंक्शन भी हो सकते हैं. b/120227284

एपीआई / व्यवहार में बदलाव

  • अगर @Transaction के साथ एनोटेट किया गया कोई नॉन-ऐब्स्ट्रैक्ट डीएओ मैथड, Single, Mayble, Completable, LiveData या ListenableFuture जैसे एसिंक टाइप को दिखाता है, तो Room अब गड़बड़ी दिखाएगा. लेन-देन थ्रेड तक सीमित होते हैं. इसलिए, फ़िलहाल Room के लिए किसी ऐसे फ़ंक्शन के आस-पास लेन-देन शुरू और खत्म करना मुमकिन नहीं है जो अलग-अलग थ्रेड में क्वेरी कर सकता है. b/120109336
  • OnConflictStrategy.FAIL और OnConflictStrategy.ROLLBACK को @Deprecated कर दिया गया है, क्योंकि ये Android के मौजूदा SQLite बाइंडिंग के साथ ठीक से काम नहीं करते. b/117266738

गड़बड़ियां ठीक की गईं

  • हमने एक गड़बड़ी ठीक की है. इसमें DAO का तरीका, निलंबन फ़ंक्शन होने पर, Room, रिटर्न टाइप के TypeConverter का सही तरीके से इस्तेमाल नहीं करता था. b/122988159
  • उस गड़बड़ी को ठीक किया गया है जिसमें Room, इनहेरिट किए गए निलंबन फ़ंक्शन को ग़लती से गैर-निलंबन फ़ंक्शन के तौर पर पहचानता था. b/122902595
  • उस बग को ठीक किया गया है जिसमें Room, @Embedded फ़ील्ड के पैरंट क्लास में होने और कई चाइल्ड क्लास में इस्तेमाल किए जाने पर गलत कोड जनरेट करता था. b/121099048
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से, beginTransaction() और endTransaction() के बीच डीएओ के सस्पेंड फ़ंक्शन को लागू करने पर डेटाबेस लॉक हो जाता था. b/120854786

वर्शन 2.1.0-alpha03

4 दिसंबर, 2018

एपीआई में हुए बदलाव

  • @Fts3/@Fts4 में मौजूद FTS tokenizer अब Enum के बजाय String लेता है. इससे Room को कस्टम टोकनाइज़र इस्तेमाल करने की अनुमति मिलती है. बिल्ट-इन टोकनाइज़र को अब भी FtsOptions में स्ट्रिंग कॉन्स्टेंट के तौर पर तय किया जाता है. b/119234881

नई सुविधाएं

  • कोरूटीन: डीएओ के तरीके अब सस्पेंड फ़ंक्शन हो सकते हैं. Room में सस्पेंड करने से जुड़े फ़ंक्शन को सपोर्ट करने के लिए, एक नया आर्टफ़ैक्ट room-coroutines रिलीज़ किया गया है. b/69474692
  • @Insert, @Delete या @Update के साथ एनोटेट किए गए डीएओ के तरीके, अब ListenableFuture को रिटर्न टाइप के तौर पर इस्तेमाल कर सकते हैं. b/119418331

गड़बड़ियां ठीक की गईं

  • हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें Room, @Entity की ignoredColumns प्रॉपर्टी में कॉलम के साथ कंस्ट्रक्टर को गलत तरीके से ढूंढने की कोशिश करता था. b/119830714
  • हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें रूम, जनरेट किए गए कोड में डीएओ मैथड के पैरामीटर को फ़ाइनल के तौर पर मार्क नहीं करता था. b/118015483
  • हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें खास सिंबल वाली क्वेरी पर गड़बड़ी की रिपोर्ट करते समय, Room प्रोसेसर क्रैश हो जाता था. b/119520136
  • हमने एक गड़बड़ी को ठीक किया है. इस गड़बड़ी की वजह से, Room, IN एक्सप्रेशन के आर्ग्युमेंट के तौर पर, Collection के अन्य कई तरीकों को अस्वीकार कर देता था. b/119884035
  • उस गड़बड़ी को ठीक किया गया है जिसमें Room से मिला LiveData, हमेशा के लिए ऑब्ज़र्व किए जाने पर गार्बेज इकट्ठा कर लेता था. इस वजह से, वह नया डेटा नहीं भेज पाता था. b/74477406
  • लॉक के विवाद को कम करने के लिए, RoomDatabase के क्लोज़ लॉक को अपडेट किया गया है. b/117900450

वर्शन 2.1.0-alpha02

30 अक्टूबर, 2018

नई सुविधाएं

  • @Relation में @DatabaseView को रेफ़रंस करने की सुविधा जोड़ी गई. b/117680932

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें Room, Rx रिटर्न टाइप से सदस्यता लेते और उसे बंद करते समय, मुख्य थ्रेड में डिस्क I/O करता था. b/117201279
  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room को Kotlin की इकाई क्लास में मौजूद किसी फ़ील्ड के लिए सही टाइप कन्वर्टर नहीं मिल पाता था. b/111404868
  • उस गड़बड़ी को ठीक किया गया है जिसमें Room, DAO इंटरफ़ेस लागू करने के लिए गलत कोड जनरेट करता था. इस इंटरफ़ेस में, Kotlin का डिफ़ॉल्ट तरीका शामिल होता है, जिसमें कोई तर्क नहीं होता. b/117527454
  • Room SQLite व्याकरण पार्सर को अपडेट किया गया है. इससे परफ़ॉर्मेंस से जुड़ी उस समस्या को ठीक किया गया है जिसकी वजह से, ऐप्लिकेशन को बनाने में ज़्यादा समय लगता था. b/117401230

वर्शन 2.1.0-alpha01

8 अक्टूबर, 2018

नई सुविधाएं

  • FTS: Room अब FTS3 या FTS4 टेबल की मैपिंग वाली इकाइयों के साथ काम करता है. @Entity के साथ एनोटेट की गई क्लास को अब @Fts3 या @Fts4 के साथ भी एनोटेट किया जा सकता है. इससे मैपिंग की पूरी जानकारी वाली टेक्स्ट सर्च टेबल के साथ क्लास का एलान किया जा सकेगा. एनोटेशन के तरीकों के ज़रिए, फ़ुल टेक्स्ट सर्च (एफ़टीएस) के विकल्प उपलब्ध हैं. इनका इस्तेमाल करके, खोज को अपनी पसंद के मुताबिक बनाया जा सकता है. b/62356416
  • व्यू: Room अब किसी क्लास को सेव की गई क्वेरी के तौर पर सेट करने की सुविधा देता है. इसे @DatabaseView एनोटेशन का इस्तेमाल करके व्यू भी कहा जाता है. b/67033276
  • Auto Value: Room अब AutoValue एनोटेट की गई क्लास को इकाइयों और POJO के तौर पर इस्तेमाल करने की सुविधा देता है. Room के एनोटेशन @PrimaryKey, @ColumnInfo, @Embedded, और @Relation को अब ऑटो वैल्यू एनोटेट की गई क्लास के ऐब्स्ट्रैक्ट तरीकों में एलान किया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ @CopyAnnotations भी होना चाहिए, ताकि Room इन्हें ठीक से समझ सके. b/62408420
  • Rx के अन्य रिटर्न टाइप के लिए सहायता: @Insert, @Delete या @Update के साथ एनोटेट किए गए डीएओ के तरीके, अब Rx के रिटर्न टाइप Completable, Single<T>, और Maybe<T> के साथ काम करते हैं. b/63317956
  • @Relation के साथ इम्यूटेबल टाइप: पहले रूम के लिए, @Relation एनोटेट किए गए फ़ील्ड को सेट करना ज़रूरी था. हालांकि, अब इन्हें कंस्ट्रक्टर पैरामीटर के तौर पर इस्तेमाल किया जा सकता है.
  • enableMultiInstanceInvalidation: RoomDatabase.Builder में एक नया एपीआई है. इसका इस्तेमाल, एक ही डेटाबेस फ़ाइल का इस्तेमाल करके RoomDatabase के कई इंस्टेंस में अमान्य करने की सुविधा चालू करने के लिए किया जाता है. कई इंस्टेंस के अमान्य होने की यह प्रोसेस, कई प्रोसेस में भी काम करती है. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: यह RoomDatabase.Builder में मौजूद एक नया एपीआई है. अगर डाउनग्रेड होता है, तो यह डेटाबेस को अपने-आप फिर से बना देता है. b/110416954
  • ignoredColumns: यह @Entity एनोटेशन में मौजूद एक नया एपीआई है. इसका इस्तेमाल, नाम के हिसाब से अनदेखा किए गए फ़ील्ड की सूची बनाने के लिए किया जा सकता है. यह कुकी, किसी इकाई पर इनहेरिट किए गए फ़ील्ड को अनदेखा करने के लिए काम की होती है. b/63522075

एपीआई / व्यवहार में बदलाव

  • RoomDatabase में मौजूद mCallback और mDatabase अब @Deprecated हो गए हैं. इन्हें Room के अगले मेजर वर्शन में हटा दिया जाएगा. b/76109329

गड़बड़ियां ठीक की गईं

  • दो समस्याएं ठीक की गई हैं. इनमें से एक समस्या में, Room को शुरू करते समय डेटाबेस में गड़बड़ी होने या माइग्रेशन ठीक से न होने की वजह से, डेटा को ठीक से वापस नहीं लाया जा सका. b/111504749 और b/111519144
  • अब Room, डेटा क्लास में Kotlin के प्राइमरी कंस्ट्रक्टर का सही तरीके से इस्तेमाल करेगा. इससे फ़ील्ड को vars के तौर पर एलान करने की ज़रूरत नहीं होगी. b/105769985

वर्शन 2.0.0

वर्शन 2.0.0

1 अक्टूबर, 2018

androidx.room 2.0.0 को 2.0.0-rc01 वर्शन के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.

वर्शन 2.0.0-rc01

20 सितंबर, 2018

androidx.room 2.0.0-rc01 को 2.0.0-beta01 वर्शन के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.

वर्शन 2.0.0-beta01

2 जुलाई, 2018

एपीआई / व्यवहार में बदलाव

  • RoomDatabase.Builder.setQueryExecutor() को जोड़ा गया, ताकि यह तय किया जा सके कि क्वेरी कहां चलाई जाएंगी
  • RxJava2 Observable के लिए सहायता जोड़ी गई
  • जनरेट किए गए डीएओ और डेटाबेस के लागू होने की प्रोसेस अब पूरी हो गई है

गड़बड़ियां ठीक की गईं

  • "cannot find getter for field" गड़बड़ी b/73334503 में क्लास/फ़ील्ड का नाम बताएं
  • RoomOpenHelper के पुराने वर्शन के साथ Room के पुराने वर्शन के काम करने से जुड़ी समस्या ठीक की गई b/110197391

AndroidX से पहले की डिपेंडेंसी

Room के AndroidX से पहले के वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:

dependencies {
    def room_version = "1.1.1"

    implementation "android.arch.persistence.room:runtime:$room_version"
    annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

    // optional - RxJava support for Room
    implementation "android.arch.persistence.room:rxjava2:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "android.arch.persistence.room:guava:$room_version"

    // Test helpers
    testImplementation "android.arch.persistence.room:testing:$room_version"
}

वर्शन 1.1.1

वर्शन 1.1.1

19 जून, 2018

कमरा 1.1.1, कमरे 1.1.1-rc1 जैसा ही है.

वर्शन 1.1.1-rc1

16 मई, 2018 अगर माइग्रेशन का इस्तेमाल किया जा रहा है, तो हमारा सुझाव है कि 1.1.0 के बजाय Room 1.1.1-rc1 का इस्तेमाल करें.

माइग्रेशन के बाद, Room के ठीक से शुरू न होने की गड़बड़ी को ठीक किया गया है b/79362399

वर्शन 1.1.0

वर्शन 1.1.0-beta3

19 अप्रैल, 2018

गड़बड़ियां ठीक की गईं

  • जब कोई Kotlin POJO, Java में तय की गई किसी रिलेशन एंटिटी को रेफ़रंस करता है, तब कंपाइल करने से जुड़ी गड़बड़ी को ठीक किया गया b/78199923

वर्शन 1.1.0-beta2

5 अप्रैल, 2018

गड़बड़ियां ठीक की गईं

  • Room Rx Single और Maybe के लागू करने से जुड़ी एक गंभीर गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, क्वेरी को समय से पहले रीसाइकल कर दिया जाता था. इससे, अगर आपने Single या Maybe के दिखाए गए इंस्टेंस में एक से ज़्यादा ऑब्ज़र्वर जोड़े हैं, तो समस्याएं हो सकती हैं. b/76031240

  • अगर [RoomDatabase.clearAllTables][ref-clearAllTables] को किसी लेन-देन के अंदर कॉल किया जाता है, तो यह डेटाबेस को VACUUM नहीं करेगा. b/77235565

वर्शन 1.1.0-beta1

21 मार्च, 2018

एपीआई में हुए बदलाव

  • एपीआई की समीक्षा के दौरान मिले सुझाव/राय या शिकायत के आधार पर, @RawQuery अब क्वेरी पैरामीटर के तौर पर String को पास करने की अनुमति नहीं देता. आपको [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इस्तेमाल करना होगा. (आर्गुमेंट के साथ [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इंस्टेंस आसानी से बनाने के लिए, [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] देखें).
  • RoomDatabase.Builder के [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] तरीके में अब vararg Integer के बजाय vararg int स्वीकार किया जाता है.

गड़बड़ियां ठीक की गईं

  • [RoomDatabase.clearAllTables][ref-clearAllTables] अब WAL चेकपॉइंट सेट करके और डेटाबेस को VACUUM करके, ऑपरेटिंग सिस्टम को स्पेस वापस देने की कोशिश करता है.
  • [@RawQuery][ref-RawQuery] अब observedEntities प्रॉपर्टी के लिए किसी भी Pojo को स्वीकार करता है. हालांकि, Pojo को अपने Embedded फ़ील्ड या Relation के ज़रिए एक या उससे ज़्यादा इकाइयों को रेफ़र करना होगा. b/74041772
  • पेजिंग: रूम के DataSource को लागू करने की सुविधा अब एक से ज़्यादा टेबल की डिपेंडेंसी (जैसे कि संबंध और जॉइन) को सही तरीके से मैनेज करती है. पहले, ये क्वेरी नए नतीजे ट्रिगर नहीं कर पाती थीं या कंपाइल नहीं हो पाती थीं. b/74128314

वर्शन 1.1.0-alpha1

22 जनवरी, 2018

नई सुविधाएं

  • RawQuery: इस नए एपीआई की मदद से, @Dao तरीकों को क्वेरी पैरामीटर के तौर पर एसक्यूएल मिल सकता है b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: RoomDatabase.Builder में मौजूद इस नए एपीआई की मदद से, यह बेहतर तरीके से कंट्रोल किया जा सकता है कि किन शुरुआती स्कीमा वर्शन से डेटा मिटाने वाली माइग्रेशन की प्रोसेस को अनुमति दी जाए. यह सुविधा, fallbackToDestructiveMigration की तुलना में बेहतर है b/64989640
  • Room अब सिर्फ़ नए पेजिंग एपीआई (ऐल्फ़ा-4+) के साथ काम करता है. साथ ही, अब यह LivePagedListProvider के साथ काम नहीं करता. Room के नए ऐल्फ़ा वर्शन का इस्तेमाल करने के लिए, आपको पेजिंग alpha-4 या उसके बाद वाले वर्शन का इस्तेमाल करना होगा. साथ ही, अगर आपने पहले से ही LivePagedListProvider से LivePagedListBuilder पर स्विच नहीं किया है, तो आपको ऐसा करना होगा.

गड़बड़ियां ठीक की गईं

  • Kotlin Kapt टाइप के लिए बेहतर सहायता. b/69164099
  • फ़ील्ड के क्रम से अब स्कीमा अमान्य नहीं होती. b/64290754