रूम

रूम परसिस्टेंस लाइब्रेरी, SQLite को लेकर एक ऐब्स्ट्रैक्शन लेयर उपलब्ध कराती है, ताकि डेटाबेस को ज़्यादा अच्छे से ऐक्सेस किया जा सके. साथ ही, SQLite की सभी सुविधाओं का फ़ायदा भी लिया जा सके.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
11 दिसंबर, 2024 2.6.1 - - 2.7.0-alpha12

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

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

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

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

Kotlin

dependencies {
    val room_version = "2.6.1"

    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")
}

Groovy

dependencies {
    def room_version = "2.6.1"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

प्लग इन जोड़ने के लिए, अपनी टॉप-लेवल Gradle बिल्ड फ़ाइल में, प्लग इन और उसके वर्शन की जानकारी दें.

Groovy

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

Kotlin

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

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

Groovy

plugins {
    id 'androidx.room'
}

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

Kotlin

plugins {
    id("androidx.room")
}

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

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

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

विकल्प Since version
room.schemaLocation (ज़रूरी) 2.6.0
room.incremental -
room.generateKotlin -

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

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

Groovy

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

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

Kotlin

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

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

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

सुझाव

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

नई समस्या बनाना

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

वर्शन 2.7

वर्शन 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)

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

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

वर्शन 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, JVM प्लैटफ़ॉर्म के अलावा अन्य प्लैटफ़ॉर्म के लिए UUID का इस्तेमाल करके कोड को एमिट करने की कोशिश करता था. (b/362994709)
  • Room Gradle प्लग इन से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, Compose के मल्टीप्लैटफ़ॉर्म वर्शन के साथ KMP प्रोजेक्ट में इस्तेमाल करने पर, 'बदलाव करने के लिए लॉक किए जाने के बाद, कॉन्फ़िगरेशन के एट्रिब्यूट में बदलाव नहीं किया जा सकता' जैसी गड़बड़ी होती थी. (b/343408758)

वर्शन 2.7.0-alpha07

21 अगस्त, 2024

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

नई सुविधाएं

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

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

  • RoomDatabaseConstructor के जनरेट किए गए 'असल' में initialize फ़ंक्शन में 'असल' मॉडिफ़ायर मौजूद न होने की समस्या को ठीक किया गया. ऐसा तब होता है, जब '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() नाम के ऐसे फ़ंक्शन का रेफ़रंस देने की रणनीति अब काम नहीं करती जिसे जनरेट करना है. @ConstructedBy और RoomDatabaseConstructor नाम के दो नए एपीआई पेश किए गए हैं. ये एपीआई, instantiateImpl() रणनीति की जगह लेते हैं. नई रणनीति इस तरह है:

  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 को ठीक करता है

  • RoomRawQuery नाम का एक नया एपीआई जोड़कर, Room KMP में @RawQuery के लिए सहायता जोड़ी गई है. यह एपीआई, रॉ SQL स्ट्रिंग और स्टेटमेंट में आर्ग्युमेंट को बांधने वाले फ़ंक्शन को होल्ड करने के मामले में SupportSQLiteQuery से मिलता-जुलता है. एनोटेट किए गए @RawQuery फ़ंक्शन, अब अपने एक पैरामीटर के तौर पर RoomRawQuery स्वीकार कर सकते हैं. (Iea844, b/330586815)
  • setQueryCallback() का एक ओवरलोड जोड़ें, जो CoroutineContext स्वीकार करता हो. (Id66ff, b/309996304)
  • linuxArm64 Kotlin के मल्टीप्लैटफ़ॉर्म टारगेट (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 के एनोटेशन प्रोसेसर में एक समस्या को ठीक किया गया है. इसकी वजह से, डीएओ में मल्टी-मैप रिटर्न टाइप तय करने पर, काम न करने वाला केएमपी कोड जनरेट होता था. (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 में ये कमिट शामिल हैं.

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

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

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

वर्शन 2.6

वर्शन 2.6.1

29 नवंबर, 2023

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

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

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

वर्शन 2.6.0

18 अक्टूबर, 2023

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

2.5.0 के बाद किए गए ज़रूरी बदलाव

  • Kotlin कोड जनरेशन (या “Kotlin CodeGen”) को चालू करने का विकल्प, अब Room KSP में उपलब्ध है. (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 प्लग इन के लिए नया आर्टफ़ैक्ट, आईडी androidx.room के साथ Room में जोड़ा गया है. इससे, Gradle एनोटेशन प्रोसेसर के विकल्पों की मदद से, स्कीमा के इनपुट और आउटपुट से जुड़ी Room की कई मौजूदा समस्याएं हल हो जाती हैं. ज़्यादा जानकारी के लिए, Room के वर्शन 2.6.0-alpha02 के रिलीज़ नोट देखें.
  • रूम इकाइयों में वैल्यू क्लास, अब KSP के साथ काम करती हैं. (4194095)
  • डीएओ फ़ंक्शन में नेस्ट किए गए मैप के रिटर्न टाइप, अब 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 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

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

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

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

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

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

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

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

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

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

वर्शन 2.6.0-alpha01

22 मार्च, 2023

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

नई सुविधाएं

  • KSP के लिए Room में इस्तेमाल की जा सकने वाली वैल्यू क्लास. Room में अब इकाइयों में वैल्यू क्लास का इस्तेमाल किया जा सकता है. (4194095)
  • Kotlin कोड जनरेशन(या “Kotlin CodeGen”) को अब Room (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 में, एब्स्ट्रैक्ट प्रॉपर्टी को डीओ (डेटा ऑब्जेक्ट) गटर या डीओ क्वेरी के तौर पर इस्तेमाल करने की अनुमति न दें. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न हो कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और उसका स्टोर किया गया नतीजा एक जैसा रहता है. (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)
  • रूम के acquireTransactionThread() में, फिर से शामिल होने वाले उपयोगकर्ता को बेहतर तरीके से मैनेज करने की सुविधा अब उपलब्ध है. (219f98b). रोके गए लेन-देन के दौरान, Room, लेन-देन को लागू करने वाले थ्रेड का इस्तेमाल करता है. साथ ही, उसमें इवेंट लूप शुरू करता है और रोके गए डेटाबेस ऑपरेशन को उसमें भेजता है, ताकि वे सभी लेन-देन के कोरयूटीन में शामिल हो जाएं. आम तौर पर, यह उम्मीद की जाती है कि लेन-देन की थ्रेड, लेन-देन शुरू करने वाली थ्रेड से अलग हो, लेकिन कुछ मामलों में वे एक ही होती हैं. फिर से शुरू होने वाले ऐसे मामलों को हैंडल करने के लिए, withTransaction() को फिर से तैयार किया गया है, ताकि वह कंट्रोल जॉब पर निर्भर न रहे. इसके बजाय, यह ट्रांज़ैक्शन थ्रेड में runBlocking से निलंबित ट्रांज़ैक्शन ब्लॉक को लागू करेगा.

वर्शन 2.5.0

वर्शन 2.5.0

22 फ़रवरी, 2023

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

वर्शन 2.5.0

11 जनवरी, 2023

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

2.4.0 के बाद किए गए ज़रूरी बदलाव

  • room-runtime के सभी सोर्स को Java से Kotlin में बदल दिया गया है. ध्यान दें कि लाइब्रेरी को Kotlin में बदलने की वजह से, अगर आपका कोड Kotlin में है, तो आपको सोर्स के साथ काम न कर पाने से जुड़ी समस्याएं आ सकती हैं. उदाहरण के लिए, सोर्स के साथ काम न करने वाला एक बदलाव यह है कि InvalidationTracker में अब आपको Observer में onInvalidate() का एलान करना होगा, ताकि MutableSet के बजाय Set टाइप का पैरामीटर हो. इसके अलावा, कुछ गेट्टर मेथड को प्रॉपर्टी में बदल दिया गया है. इसके लिए, 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 वर्शन में ये बदलाव शामिल हैं.

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

  • ऐसे अलग-अलग एपीआई ठीक करें जो क्वेरी के आर्ग्युमेंट को इनवैरिएंट (Array<Any?>) से कॉन्ट्रावैरिएंट (Array<out Any?>) में बदलते हैं, ताकि वे Java के ऐरे के व्यवहार से मेल खा सकें. (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() का एलान करना होगा, ताकि MutableSet के बजाय Set टाइप का पैरामीटर हो.

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

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

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

वर्शन 2.5.0-alpha01

23 फ़रवरी, 2022

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

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

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

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

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

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

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

वर्शन 2.4.3

वर्शन 2.4.3

27 जुलाई, 2022

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

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

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

वर्शन 2.4.2

वर्शन 2.4.2

23 फ़रवरी, 2022

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

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

  • -Xjvm-default=all या मिलते-जुलते टूल के साथ कंपाइल करने की वजह से, डिफ़ॉल्ट इंटरफ़ेस का तरीका जनरेट करने वाले बॉडी के साथ, Dao @Transaction निलंबित करने वाले फ़ंक्शन के लिए कोड जनरेट करने से जुड़ी समस्या को ठीक करें. (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 सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई. Room में, फ़ंक्शन के सोर्स नाम का इस्तेमाल किया जाएगा. साथ ही, उन्हें गेट्टर/सेटर के तौर पर प्रॉपर्टी से मैच किया जाएगा. पहले, फ़ंक्शन के 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 के दौरान, अपने-आप माइग्रेट होने की सुविधा को उसी तरह से अपने-आप जोड़ने में मदद मिलती है.
  • रूम में पेजिंग की सुविधा: androidx.room:room-paging रिलीज़ हो गया है. इससे, रूम में की गई क्वेरी के नतीजों के तौर पर androidx.paging.PagingSource दिखाने के लिए, पेजिंग 3.0 की नेटिव सुविधा मिलती है.
  • रिलेशनल क्वेरी के तरीके: 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 का एक नया ऐनालाइज़र जोड़ा है, जो वैल्यू के लिए शून्य होने की जानकारी को ध्यान में रखता है. यह जानकारी सिर्फ़ KSP में उपलब्ध है. इसलिए, यह सिर्फ़ KSP में डिफ़ॉल्ट रूप से चालू होती है. अगर इससे कोई समस्या आती है, तो एनोटेशन प्रोसेसर में room.useNullAwareTypeAnalysis=false डालकर, इसे बंद किया जा सकता है. अगर ऐसा होता है, तो कृपया गड़बड़ी की शिकायत करें, क्योंकि आने वाले समय में इस फ़्लैग को हटा दिया जाएगा. TypeConverter के इस नए विश्लेषक के साथ, सिर्फ़ ऐसे TypeConverter इस्तेमाल करने का सुझाव दिया जाता है जो वैल्यू के तौर पर null नहीं दिखाते. ऐसा इसलिए, क्योंकि नए विश्लेषक में वैल्यू के तौर पर null दिखाने वाले TypeConverter को null की जांच के साथ रैप करने की सुविधा होती है. ध्यान दें कि इस बदलाव का असर, KAPT या Java का इस्तेमाल करने वाले लोगों पर नहीं पड़ेगा. ऐसा इसलिए है, क्योंकि एनोटेशन प्रोसेसर (KSP के उलट) में वैल्यू के लिए 'शून्य हो सकती है' जानकारी नहीं होती. (Ia88f9, b/193437407)
  • एक गड़बड़ी को ठीक किया गया है. इसमें, जब कोई एफ़टीएस इकाई, ICU टोकनेटर का इस्तेमाल करने का एलान करती थी, तो 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)
  • रूम-पेजिंग की मदद से जनरेट किए गए 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 एनोटेशन की मदद से, डीएओ में मल्टीमैप रिटर्न टाइप के लिए, नॉन-पीओजेओ (POJO) बटन/वैल्यू का इस्तेमाल किया जा सकता है. (I4d704)

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha04

21 जुलाई, 2021

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

नई सुविधाएं

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

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

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

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

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

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

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

रूम-पेजिंग

  • androidx.room: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 को उपयोगकर्ता की स्क्रोल पोज़िशन माना जाता है और आइटम, बटन से पहले और बाद, दोनों में लोड किए जाते हैं.

  • आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. ऑप्ट आउट करने पर, पेजिंग 3.0 के लिए मौजूदा सहायता का इस्तेमाल किया जाएगा. इसे Room 2.3 में लॉन्च किया गया था. हालांकि, आने वाले समय में रिलीज़ होने वाले नए वर्शन में, पेजिंग 3.0 के साथ Room का इस्तेमाल करने वालों के लिए यह आर्टफ़ैक्ट ज़रूरी हो जाएगा. ऑप्ट-इन करने के लिए, अपने क्लासपाथ में नया रूम-पेजिंग आर्टफ़ैक्ट जोड़ें. अगर 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 फ़ंक्शन का रिटर्न टाइप फ़्लो होने पर, Room में गड़बड़ी न दिखने की समस्या को ठीक किया गया (I56ddd, b/190075899)

  • इंडेक्स से जुड़े अपने-आप माइग्रेट होने की सुविधा से जुड़ी समस्या को ठीक करना. b/177673291

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

  • Room में केएसपी की सुविधा अब केएसपी 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 सही तरीके से फिर से नहीं बन रहे थे.

बाहरी योगदान

  • रूम के 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 डिफ़ॉल्ट कन्वर्टर के बजाय, उस कन्वर्टर का इस्तेमाल करेगा.
  • क्वेरी कॉलबैक: Room में अब एक सामान्य कॉलबैक एपीआई RoomDatabase.QueryCallback उपलब्ध है. यह तब काम आता है, जब क्वेरी लागू होने वाली हों. यह डीबग बिल्ड में लॉग करने के लिए भी काम का हो सकता है. कॉलबैक को RoomDatabase.Builder#setQueryCallback() की मदद से सेट किया जा सकता है.
  • पहले से पैकेज किए गए डेटा में सुधार: Room में अब एपीआई हैं, जिनकी मदद से इनपुट स्ट्रीम से पहले से पैकेज किए गए डेटा का इस्तेमाल करके डेटाबेस बनाया जा सकता है. इससे, पहले से पैकेज किए गए डेटाबेस को जिप करने जैसे मामलों में मदद मिलती है.
  • टाइप कन्वर्टर उपलब्ध कराना: Room में अब टाइप कन्वर्टर के इंस्टेंस उपलब्ध कराने के लिए एपीआई हैं, ताकि ऐप्लिकेशन उनके शुरू होने को कंट्रोल कर सके. Room में इस्तेमाल किए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन @ProvidedTypeConverter का इस्तेमाल करें.
  • RxJava3 के साथ काम करना: Room अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह ही, डीएओ के ऐसे तरीके भी बनाए जा सकते हैं जिनका रिटर्न टाइप Flowable, Single, Maybe, और Completable हो. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट androidx.room:room-rxjava3 उपलब्ध है.
  • पेजिंग 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)

बाहरी योगदान

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

वर्शन 2.3.0-beta02

18 फ़रवरी, 2021

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

नई सुविधाएं

  • Room में अब Kotlin सिंबल प्रोसेसिंग 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 से स्ट्रिंग और स्ट्रिंग से Enum में बदलने वाले कनवर्टर का इस्तेमाल करेगा. अगर किसी एनम के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट कन्वर्टर के बजाय, उस कन्वर्टर का इस्तेमाल करेगा. (b/73132006)

आम समस्या

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

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

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

बाहरी योगदान

  • अगर WAL मोड चालू है और एपीआई 16 या उससे ज़्यादा है, तो Room अब डिफ़ॉल्ट रूप से beginTransactionNonExclusive का इस्तेमाल करेगा. ‘अहमद I’ को धन्यवाद. खलील | 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 में अब एपीआई हैं, जिनका इस्तेमाल करके, पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाया जा सकता है. यह डेटाबेस, इनपुट स्ट्रीम से पढ़ा जाता है. इससे, पहले से पैकेज किए गए डेटाबेस को जिप करने जैसे मामलों में मदद मिलती है. ‘Ahmed El-Helw ahmedre@gmail.com’ (3e6792, b/146911060) को धन्यवाद

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

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

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

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

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

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

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

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

बाहरी योगदान

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

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

  • पहले से पैकेज किए गए 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)
  • रूम में एनोटेशन को क्रम से प्रोसेस करने का विकल्प, अब डिफ़ॉल्ट रूप से चालू है. (b/112110217)

वर्शन 2.3.0-alpha01

10 जून, 2020

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

नई सुविधाएं

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

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

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

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

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

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

वर्शन 2.2.6

वर्शन 2.2.6

16 दिसंबर, 2020

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

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

  • एक समस्या को ठीक किया गया है. इसकी वजह से, नए JDK वर्शन में, Room में एनोटेशन की प्रोसेसिंग की सुविधा गलत तरीके से बंद हो जाती थी. (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) को धन्यवाद
  • एक से ज़्यादा इंस्टेंस अमान्य करने की सुविधा चालू होने और डेटाबेस में एफ़टीएस इकाई मौजूद होने पर, क्रैश होने की समस्या को ठीक किया गया. (b/148969394)
  • Room एनोटेशन प्रोसेसर में 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
  • एक-से-एक रिलेशन: @Relation के साथ एनोटेट किए गए POJO फ़ील्ड में, List या Set टाइप की पाबंदी हटा दी गई है. इससे, एक वैल्यू वाले रिलेशन को दिखाने की सुविधा मिलती है. b/62905145
  • टारगेट इकाई: डीएओ एनोटेशन @Insert, @Update, और @Delete में अब एक नई प्रॉपर्टी targetEntity है. इसकी मदद से, उस टारगेट टेबल की जानकारी दी जा सकती है जिस पर डीएओ का तरीका लागू करना है. इससे उन DAO तरीकों के पैरामीटर, मनमुताबिक POJO हो सकते हैं. इन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. इसका इस्तेमाल करके, डेटा को कुछ हिस्सों में डाला, मिटाया, और अपडेट किया जा सकता है. b/127549506
  • कोरूटीन फ़्लो: @Query डीएओ मैथड अब रिटर्न टाइप Flow<T> के हो सकते हैं. अगर क्वेरी में निगरानी की जा रही टेबल अमान्य हो जाती हैं, तो दिखाया गया फ़्लो वैल्यू का नया सेट फिर से दिखाएगा. Channel<T> रिटर्न टाइप के साथ DAO फ़ंक्शन का एलान करना गड़बड़ी है. इसके बजाय, Room आपको Flow का इस्तेमाल करने का सुझाव देता है. इसके बाद, Flow को Channel में बदलने के लिए, आस-पास मौजूद फ़ंक्शन का इस्तेमाल करें. b/130428884
  • Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर: Room अब Gradle का एक अलग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental की मदद से, इंक्रीमेंट करने की सुविधा चालू की जा सकती है. ज़्यादा जानकारी के लिए, रूम कंपाइलर के विकल्प देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां गड़बड़ी की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से, ज़्यादा से ज़्यादा सदस्य जोड़ने की सुविधा चालू करने जा रहे हैं. b/112110217
  • प्रोजेक्शंस को बड़ा करना: एक्सपेरिमेंट के तौर पर उपलब्ध कंपाइलर का एक नया विकल्प room.expandProjection जोड़ा गया है. इसकी वजह से, Room किसी क्वेरी को स्टार प्रोजेक्शन के साथ फिर से लिखता है, ताकि सिर्फ़ रिटर्निंग टाइप POJO में कॉलम शामिल हों. उदाहरण के लिए, @Query("SELECT * FROM Song") वाले डीएओ मैथड के लिए, जो सिर्फ़ दो फ़ील्ड वाला SongIdAndTitle नाम का पीओजेओ रिटर्न करता है. इसके बाद, 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> रिटर्न टाइप के साथ DAO फ़ंक्शन का एलान करना गड़बड़ी है. इसके बजाय, Room आपको Flow का इस्तेमाल करने का सुझाव देता है. इसके बाद, Flow को Channel में बदलने के लिए, आस-पास मौजूद फ़ंक्शन का इस्तेमाल करें. b/130428884
  • प्रोजेक्शंस को बड़ा करना: एक्सपेरिमेंट के तौर पर उपलब्ध कंपाइलर का एक नया विकल्प room.expandProjection जोड़ा गया है. इसकी वजह से, Room किसी क्वेरी को स्टार प्रोजेक्शन के साथ फिर से लिखता है, ताकि सिर्फ़ रिटर्निंग टाइप POJO में कॉलम शामिल हों. उदाहरण के लिए, @Query("SELECT * FROM Song") वाले डीएओ मैथड के लिए, जो सिर्फ़ दो फ़ील्ड वाला SongIdAndTitle नाम का पीओजेओ रिटर्न करता है. इसके बाद, Room क्वेरी को SELECT id, title FROM Song में फिर से लिख देगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससे CURSOR_MISMATCH चेतावनी को पूरी तरह से हटा दिया जाता है. यह चेतावनी तब दिखती है, जब क्वेरी ऐसे अतिरिक्त कॉलम दिखाती है जो रिटर्न किए गए POJO टाइप के किसी भी फ़ील्ड से मेल नहीं खाते.
  • onDestructiveMigrate, RoomDatabase.Callback में जोड़ा गया एक नया कॉलबैक एपीआई है. इसे तब इस्तेमाल किया जाता है, जब Room किसी डेटाबेस को नुकसान पहुंचाकर माइग्रेट करता है. b/79962330

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

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फ़ील्ड को सुरक्षित करने पर, Room किसी तरीके को फ़ील्ड सेटर के तौर पर इस्तेमाल करके गलत कोड जनरेट करता था. b/136194628
  • एक से ज़्यादा इंस्टेंस को अमान्य करने की सुविधा चालू होने और invalidationService बंद होने पर, InvalidationTracker की दूसरी प्रोसेस में एनपीई (नॉन-पर्सिस्टेंट एलिमेंट) मिलने की गड़बड़ी को ठीक किया गया. b/137454915
  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room, @RawQuery के साथ एनोटेट किए गए, इनहेरिट किए गए निलंबित फ़ंक्शन के रिटर्न टाइप की सही तरीके से पहचान नहीं कर पाता था. b/137878827
  • @Relation के लिए जनरेट किए गए कोड को अपडेट किया गया. ऐसा तब किया गया, जब मिलती-जुलती कुंजी का टाइप, तुलना की जा सकने वाली ByteBuffer का इस्तेमाल करने के लिए, BLOB था. b/137881998
  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room में @Insert, @Update, और @Delete के कुछ इकाई पैरामीटर के तौर पर इस्तेमाल किए गए POJOs पर सेटर मौजूद न होने की शिकायत होती थी. b/138664463
  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, @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 के ज़रिए डिफ़ॉल्ट वैल्यू तय करनी हैं, तो आपको बिना गिनती वाली डिफ़ॉल्ट वैल्यू की पुष्टि करने के लिए, माइग्रेशन की जानकारी देनी पड़ सकती है. ज़्यादा जानकारी के लिए, रूम को माइग्रेट करना देखें.

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

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

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

वर्शन 2.1.0

वर्शन 2.1.0

13 जून, 2019

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

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

  • एफ़टीएस: Room में अब एफ़टीएस3 या एफ़टीएस4 टेबल की मैपिंग वाली इकाइयां काम करती हैं. @Entity के साथ एनोटेट की गई क्लास को अब @Fts3 या @Fts4 के साथ भी एनोटेट किया जा सकता है. इससे, मैपिंग की गई फ़ुल-टेक्स्ट सर्च टेबल के साथ क्लास को एनोटेट किया जा सकता है. एनोटेशन के तरीकों की मदद से, एफ़टीएस को ज़्यादा पसंद के मुताबिक बनाने के विकल्प उपलब्ध हैं.
  • व्यू: Room में अब किसी क्लास को स्टोर की गई क्वेरी के तौर पर घोषित किया जा सकता है. इसे व्यू भी कहा जाता है. इसके लिए, @DatabaseView एनोटेशन का इस्तेमाल किया जाता है.
  • कोरूटीन: डीएओ मैथड अब सस्पेंड फ़ंक्शन हो सकते हैं. इस सुविधा का फ़ायदा पाने के लिए, अपनी डिपेंडेंसी में room-ktx शामिल करें. ktx आर्टफ़ैक्ट, कोरूटीन में डेटाबेस लेन-देन करने के लिए, एक्सटेंशन फ़ंक्शन RoomDatabase.withTransaction भी उपलब्ध कराता है.
  • अपने-आप लागू होने वाली वैल्यू: Room में अब AutoValue एनोटेशन वाली क्लास को इकाइयों और पीओजेओ के तौर पर दिखाने की सुविधा है. रूम एनोटेशन @PrimaryKey, @ColumnInfo, @Embedded, और @Relation को अब अपने-आप वैल्यू एनोटेट करने वाली क्लास के ऐब्स्ट्रैक्ट मेथड में एनोटेट किया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ @CopyAnnotations का इस्तेमाल भी करना होगा, ताकि Room उन्हें सही तरीके से समझ सके.
  • अन्य असाइन्सिंक (एक साथ होने वाली कई प्रोसेस) सहायता: @Insert, @Delete या @Update के साथ एनोटेट किए गए डीएओ मैथड के साथ-साथ, @Query में INSERT, DELETE या UPDATE स्टेटमेंट अब Rx के रिटर्न टाइप Completable, Single, Maybe और Guava के रिटर्न टाइप ListenableFuture के साथ काम करते हैं. साथ ही, उन्हें निलंबित किए जाने वाले फ़ंक्शन भी कहा जा सकता है.
  • 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 से मैच नहीं कर पाता था. इस फ़ंक्शन में कलेक्शन टाइप का पैरामीटर होता है. b/122066791

वर्शन 2.1.0-alpha06

22 मार्च, 2019

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

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

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

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

वर्शन 2.1.0-alpha05

13 मार्च, 2019

नई सुविधाएं

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

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

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

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

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

ऐसी समस्याएं जिनकी जानकारी पहले से है

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

वर्शन 2.1.0-alpha04

25 जनवरी, 2019

नई सुविधाएं

  • @Query वाले डीएओ मैथड, जिनमें INSERT, UPDATE या DELETE स्टेटमेंट शामिल हैं वे अब असाइनिक टाइप Single, Mayble, Completable, और ListenableFuture दिखा सकते हैं. इसके अलावा, उन्हें सस्पेंड भी किया जा सकता है. 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
  • एक बग को ठीक किया गया. इसकी वजह से, जब कोई @Embedded फ़ील्ड पैरंट क्लास में होता था और उसका इस्तेमाल एक से ज़्यादा चाइल्ड क्लास में किया जाता था, तो Room गलत कोड जनरेट करता था. b/121099048
  • beginTransaction() और endTransaction() के बीच डीएओ सस्पेंड फ़ंक्शन को लागू करने पर, डेटाबेस में डेडलॉक होने की समस्या को ठीक किया गया. b/120854786

वर्शन 2.1.0-alpha03

4 दिसंबर, 2018

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

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

नई सुविधाएं

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

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

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

वर्शन 2.1.0-alpha02

30 अक्टूबर, 2018

नई सुविधाएं

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

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

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

वर्शन 2.1.0-alpha01

8 अक्टूबर, 2018

नई सुविधाएं

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

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

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

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

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

वर्शन 2.0.0

वर्शन 2.0.0

1 अक्टूबर, 2018

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

वर्शन 2.0.0-rc01

20 सितंबर, 2018

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

वर्शन 2.0.0-beta01

2 जुलाई, 2018

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

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

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

  • "फ़ील्ड के लिए गटर नहीं मिला" गड़बड़ी b/73334503 में क्लास/फ़ील्ड का नाम बताएं
  • RoomOpenHelper को Room के पुराने वर्शन के साथ काम करने लायक बनाया गया है b/110197391

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

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

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 का इस्तेमाल करें.

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

वर्शन 1.1.0

वर्शन 1.1.0-बीटा3

19 अप्रैल, 2018

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

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

वर्शन 1.1.0-बीटा2

5 अप्रैल, 2018

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

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

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

वर्शन 1.1.0-बीटा1

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 के डेटा सोर्स को लागू करने की सुविधा, अब कई टेबल की डिपेंडेंसी (जैसे, संबंध और जॉइन) को सही तरीके से मैनेज करती है. पहले, ये नए नतीजे ट्रिगर नहीं कर पाते थे या कंपाइल नहीं हो पाते थे. b/74128314

वर्शन 1.1.0-alpha1

22 जनवरी, 2018

नई सुविधाएं

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

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

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