रूम

Room परसिस्टेंस लाइब्रेरी, SQLite को लेकर एक ऐब्स्ट्रैक्शन लेयर उपलब्ध कराती है, ताकि डेटाबेस को ज़्यादा अच्छे से ऐक्सेस किया जा सके.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा वर्शन
16 जुलाई, 2025 2.7.2 - - 2.8.0-alpha01

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

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

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

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

Kotlin

dependencies {
    val room_version = "2.7.2"

    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.7.2"

    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 माइग्रेशन देखें.
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 बिल्ड फ़ाइल में, प्लगिन और उसका वर्शन तय करें.

ग्रूवी

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

Kotlin

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

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

ग्रूवी

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 प्लगिन का इस्तेमाल नहीं किया जा रहा है या आपके पास प्लगिन का ऐसा वर्शन है जिसमें आपको चाहिए वह विकल्प काम नहीं करता, तो एनोटेशन प्रोसेसर के विकल्पों का इस्तेमाल करके Room को कॉन्फ़िगर किया जा सकता है. इसके बारे में बिल्ड डिपेंडेंसी जोड़ना लेख में बताया गया है. एनोटेशन के विकल्प तय करने का तरीका इस बात पर निर्भर करता है कि Room के लिए KSP या KAPT में से किसका इस्तेमाल किया जा रहा है.

ग्रूवी

// 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.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 के लिए KMP टारगेट जोड़ें (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)
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, SQL में शुरुआती टिप्पणियों की वजह से स्टेटमेंट ऐसे एक्ज़ीक्यूट होते थे जैसे वे पढ़ी नहीं गई क्वेरी हों. (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 को Room के साथ कॉन्फ़िगर किया जाता है, तब 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 API के एक्ज़ीक्यूशन के दौरान थ्रेड में रुकावट आने पर, अब 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 के चालू होने (KMP डिफ़ॉल्ट) पर होने वाला व्यवहार, इसके बंद होने पर होने वाले मौजूदा व्यवहार के साथ अलाइन हो जाता है. (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 के साथ संबंध बनाने के लिए, इंटरनल 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 आर्टफ़ैक्ट को KMP के साथ काम करने के लिए माइग्रेट कर दिया गया है. (Ib8756, b/339934824)
  • एपीआई invalidationTrackerFlow() को पहले पक्ष के एपीआई के तौर पर InvalidationTracker.createFlow() के तौर पर सामान्य बना दिया गया है. अब यह KMP प्रोजेक्ट में, Android के अलावा अन्य सोर्स सेट के लिए उपलब्ध है. (I1fbfa, (I8fb29), b/329291639, b/329315924)

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

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

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

  • उस समस्या को ठीक किया गया है जिसमें Room KMP, नॉन-जेवीएम प्लैटफ़ॉर्म के लिए 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 के नए वर्शन में वह सुविधा काम करने लगेगी.

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 ड्राइवर के साथ रूम को कॉन्फ़िगर करने के लिए, एक एपीआई जोड़ा गया है: 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 के रिलीज़ नोट देखें.
  • Room Entities में वैल्यू क्लास अब KSP के लिए काम करती हैं. (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)

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

  • @MapInfo की जगह लेने के लिए, @MapColumn नाम का एक नया टाइप एनोटेशन बनाया गया है. @MapInfo को अब बंद कर दिया गया है. @MapInfo एनोटेशन में दिए गए हर कॉलम के नाम (keyColumnName, valueColumnName या दोनों) के लिए, आपको सिर्फ़ columnName के साथ @MapColumn एनोटेशन का एलान करना होगा. साथ ही, डीएओ फ़ंक्शन के रिटर्न टाइप में, उस खास टाइप के आर्ग्युमेंट पर एनोटेशन का इस्तेमाल करना होगा जिसे मैप की कुंजी या वैल्यू के तौर पर रेफ़र किया जा रहा है. ऐसा इसलिए है, क्योंकि @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 में ये कमिट शामिल हैं.

नई सुविधाएं

  • Room में KSP के लिए वैल्यू क्लास का इस्तेमाल किया जा सकता है. 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() को फिर से तैयार किया गया है. अब यह कंट्रोल जॉब पर निर्भर नहीं रहेगा. इसके बजाय, यह लेन-देन थ्रेड में 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 में, अब आपको Observer में onInvalidate() को एलान करना होगा, ताकि Set टाइप का पैरामीटर मिल सके, न कि MutableSet टाइप का. इसके अलावा, कुछ गेटर मेथड को प्रॉपर्टी में बदल दिया गया था. इसके लिए, Kotlin फ़ाइलों पर प्रॉपर्टी ऐक्सेस सिंटैक्स की ज़रूरत होती है. अगर आपको कोई गंभीर समस्या आती है, तो कृपया गड़बड़ी की शिकायत करें.
  • नया शॉर्टकट एनोटेशन, @Upsert जोड़ा गया है. यह एनोटेशन, किसी इकाई को तब शामिल करने की कोशिश करता है, जब कोई यूनीकनेस विवाद न हो. अगर कोई विवाद होता है, तो यह इकाई को अपडेट करता है. (I7aaab, b/241964353)
  • रूम पेजिंग में सहायता के लिए, नए रूम-पेजिंग आर्टफ़ैक्ट 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 में, अब आपको Observer में onInvalidate() को एलान करना होगा, ताकि 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" सफ़िक्स की ज़रूरत होगी.

  • 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 या इसके जैसे किसी अन्य फ़ंक्शन के साथ कंपाइल करने की वजह से, डिफ़ॉल्ट इंटरफ़ेस तरीके को जनरेट करने वाली बॉडी के साथ suspend फ़ंक्शन होता है. (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 Support: androidx.room:room-paging को रिलीज़ कर दिया गया है. यह Room क्वेरी के लिए, Paging 3.0 की नेटिव सुविधा उपलब्ध कराता है. इससे androidx.paging.PagingSource मिलता है.
  • रिलेशनल क्वेरी के तरीके: Room अब मल्टीमैप रिटर्न टाइप @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 में ये कमिट शामिल हैं.

नई सुविधाएं

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

  • 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 अब multimap रिटर्न टाइप @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 का 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 के साथ 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

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

  • रूम के लिए केएसपी की सुविधा अब केएसपी 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 के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट कन्वर्टर के बजाय इसका इस्तेमाल करेगा.
  • क्वेरी कॉलबैक: Room अब एक सामान्य कॉलबैक API 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 बनाने पर, ANR ट्रिगर हो सकता था. (I42b74, b/181221318)
  • @ExperimentalRoomApi की दिखने की सेटिंग को पैकेज के लिए निजी के बजाय सार्वजनिक के तौर पर सेट किया गया. (b/181356119)

बाहरी योगदान

  • इस विकल्प को चालू करने पर, Room को @Query एनोटेट किए गए डीएओ मैथड में POJO रिटर्न टाइप स्वीकार करने की अनुमति मिलती है. ऐसा तब होता है, जब इसे @SkipQueryVerification के साथ भी एनोटेट किया गया हो. रूम, क्वेरी के नतीजे को POJO के तौर पर दिखाता है. यह ठीक उसी तरह काम करता है जिस तरह @RawQuery एनोटेट किए गए डीएओ के तरीके के लिए किया जाता है. ‘मार्कस रीगल | 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 में गलत कोड जनरेट करता था. ऐसा तब होता था, जब 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 "primitives" के साथ जेनेरिक सुपर टाइप वाले 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() से बदलें

  • प्रीपैकेज किए गए DB को कॉपी किए जाने पर, 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 की जगह नहीं लेता है. यह 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)
  • रूम एनोटेशन प्रोसेसर में 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 से संबंधित आइटम के लिए शून्य वैल्यू मिलती थी. (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
  • टारगेट इकाई: डीएओ एनोटेशन @Insert, @Update, और @Delete में अब एक नई प्रॉपर्टी targetEntity है. इसकी मदद से, उस टारगेट टेबल के बारे में बताया जा सकता है जिस पर डीएओ को काम करना है. इससे उन DAO तरीकों के पैरामीटर, मनमाने POJO हो सकते हैं जिन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. असल में, इससे कुछ डेटा को जोड़ने, मिटाने, और अपडेट करने की अनुमति मिलती है. b/127549506
  • कोरूटीन फ़्लो: @Query डीएओ के तरीके अब Flow<T> के रिटर्न टाइप के हो सकते हैं. अगर क्वेरी में शामिल टेबल अमान्य हो जाती हैं, तो लौटाया गया फ़्लो, वैल्यू का नया सेट फिर से जारी करेगा. Channel<T> return type के साथ DAO फ़ंक्शन को एलान करना एक गड़बड़ी है. इसके बजाय, Room आपको Flow का इस्तेमाल करने का सुझाव देता है. इसके बाद, Flow को Channel में बदलने के लिए, आस-पास के फ़ंक्शन का इस्तेमाल करें. b/130428884
  • Gradle Incremental Annotation Processor: Room अब Gradle का आइसोलेटिंग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental के ज़रिए, इंक्रीमेंटेबिलिटी को चालू किया जा सकता है. ज़्यादा जानकारी के लिए, Room कंपाइलर के विकल्प देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां जाकर बग की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से इंक्रीमेंटेबिलिटी की सुविधा चालू करने का प्लान बना रहे हैं. 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 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.

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

वर्शन 2.2.0-beta01

22 अगस्त, 2019

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

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

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

वर्शन 2.2.0-alpha02

7 अगस्त, 2019

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

नई सुविधाएं

  • कोरूटीन फ़्लो: @Query डीएओ के तरीके अब Flow<T> के रिटर्न टाइप के हो सकते हैं. अगर क्वेरी में शामिल टेबल अमान्य हो जाती हैं, तो लौटाया गया फ़्लो, वैल्यू का नया सेट फिर से जारी करेगा. Channel<T> return type के साथ 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
  • टारगेट इकाई: डीएओ एनोटेशन @Insert, @Update, और @Delete में अब एक नई प्रॉपर्टी targetEntity है. इसकी मदद से, उस टारगेट टेबल के बारे में बताया जा सकता है जिस पर डीएओ को काम करना है. इससे उन DAO तरीकों के पैरामीटर, मनमाने POJO हो सकते हैं जिन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. असल में, इससे कुछ डेटा को जोड़ने, मिटाने, और अपडेट करने की अनुमति मिलती है. b/127549506
  • Gradle Incremental Annotation Processor: Room अब Gradle का आइसोलेटिंग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental के ज़रिए, इंक्रीमेंटेबिलिटी को चालू किया जा सकता है. ज़्यादा जानकारी के लिए, Room कंपाइलर के विकल्प देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां जाकर बग की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से इंक्रीमेंटेबिलिटी की सुविधा चालू करने का प्लान बना रहे हैं. b/112110217

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

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

वर्शन 2.1.0

वर्शन 2.1.0

13 जून, 2019

कमरा 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 के साथ एनोटेट किए गए डीएओ के तरीके, अब 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, Kotlin DAO फ़ंक्शन के लिए TypeConverter से मैच नहीं कर पाता था. इस फ़ंक्शन में Collection टाइप का पैरामीटर होता है. 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
  • उस गड़बड़ी को ठीक किया गया है जिसमें @Query, UPDATE या DELETE स्टेटमेंट वाले, डीफ़र किए गए @Query DAO तरीके से मुख्य थ्रेड में क्वेरी को तुरंत तैयार किया जा रहा था. b/123695593INSERT
  • कई गड़बड़ियां ठीक की गई हैं. इनमें वे गड़बड़ियां भी शामिल हैं जिनमें 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, Collection एक्सप्रेशन के आर्ग्युमेंट के तौर पर, Collection के अन्य कई तरीकों को अस्वीकार कर देता था. b/119884035IN
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, 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 के साथ भी एनोटेट किया जा सकता है. इससे मैपिंग की पूरी जानकारी वाली टेक्स्ट सर्च टेबल के साथ क्लास का एलान किया जा सकेगा. एनोटेशन के तरीकों के ज़रिए, FTS के विकल्पों को अपनी पसंद के मुताबिक बनाया जा सकता है. b/62356416
  • व्यू: Room अब @DatabaseView एनोटेशन का इस्तेमाल करके, किसी क्लास को सेव की गई क्वेरी के तौर पर सेट करने की सुविधा देता है. इसे व्यू भी कहा जाता है. b/67033276
  • Auto Value: Room अब AutoValue एनोटेट की गई क्लास को इकाइयों और POJO के तौर पर इस्तेमाल करने की सुविधा देता है. Room के एनोटेशन @PrimaryKey, @ColumnInfo, @Embedded, और @Relation को अब, ऑटो वैल्यू एनोटेट की गई क्लास के ऐब्स्ट्रैक्ट तरीकों में एलान किया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ @CopyAnnotations भी होना चाहिए, ताकि Room इन्हें सही तरीके से समझ सके. b/62408420
  • Rx के अन्य रिटर्न टाइप के लिए सहायता: @Insert, @Delete या @Update के साथ एनोटेट किए गए DAO के तरीके, अब Rx के रिटर्न टाइप Completable, Single<T>, और Maybe<T> के साथ काम करते हैं. b/63317956
  • @Relation के साथ इम्यूटेबल टाइप: Room को पहले @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
  • पेजिंग: Room के DataSource को लागू करने की सुविधा अब एक से ज़्यादा टेबल की डिपेंडेंसी (जैसे कि संबंध और जॉइन) को सही तरीके से मैनेज करती है. पहले, इन क्वेरी से नए नतीजे ट्रिगर नहीं होते थे या ये कंपाइल नहीं हो पाती थीं. b/74128314

वर्शन 1.1.0-alpha1

22 जनवरी, 2018

नई सुविधाएं

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

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

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