रूम
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा वर्शन |
---|---|---|---|---|
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
का इस्तेमाल किया जाएगा. नई रणनीति इस तरह है:
RoomDatabaseConstructor
को लागू करने वाला expect ऑब्जेक्ट तय करेंexpect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
@ConstructedBy
का इस्तेमाल करके, ऑब्जेक्ट को@Database
के एलान से लिंक करना@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
फ़ैक्ट्री आर्ग्युमेंट पास किए बिना नया डेटाबेस इंस्टेंस बनाना
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 में ये कमिट शामिल हैं.
नई सुविधाएं
एपीआई में हुए बदलाव
@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 में ये कमिट शामिल हैं.
नई सुविधाएं
- यूयूआईडी के लिए, बिल्ट-इन टाइप कन्वर्टर जोड़ा गया. (I671e8, b/73132006)
एपीआई में हुए बदलाव
TypeConverters एनोटेशन में एक नई प्रॉपर्टी जोड़ी गई है. इससे डेवलपर, बिल्ट-इन Enum और UUID कन्वर्टर को बंद कर सकते हैं. डिफ़ॉल्ट रूप से, ये कन्वर्टर चालू होते हैं. हालांकि, आपके पास इन्हें किसी खास स्कोप या पूरे डेटाबेस के लिए बंद करने का विकल्प होता है. ज़्यादा जानकारी के लिए, TypeConverters का दस्तावेज़ देखें. (36ae9e, b/195413406)
@MapInfo
एनोटेशन के ज़रिए, DAO में Multimap के लिए नॉन-POJO कुंजियों/वैल्यू का इस्तेमाल किया जा सकता है. (I4d704)
अगर मैप के लिए कुंजी या वैल्यू वाला कॉलम, किसी एक ही कॉलम से लिया गया है, तो @MapInfo
फ़ंक्शन का इस्तेमाल करना ज़रूरी होगा. उदाहरण देखें:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- Room के साथ Paging3 का इस्तेमाल करते समय,
room-paging
को ज़रूरी आर्टफ़ैक्ट के तौर पर इस्तेमाल करें. (Ieaffe)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें मल्टीमैप क्वेरी के नतीजों को सही क्रम में नहीं लगाया जाता था. ऐसा तब होता था, जब क्वेरी में मैप की कुंजी के किसी कॉलम का ORDER BY क्लॉज़ शामिल होता था. (I6b887)
बाहरी योगदान
- @Index में इंडेक्स का क्रम तय करने के लिए, नया एपीआई जोड़ा गया. निकिता ज़ेलोंकिन को धन्यवाद. (I033fc)
वर्शन 2.4.0-alpha04
21 जुलाई, 2021
androidx.room:room-*:2.4.0-alpha04
रिलीज़ हो गया है. वर्शन 2.4.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
Room अब 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
के चालू होने पर, RoomCURSOR_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
में मौजूद FTStokenizer
अब 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/62334005fallbackToDestructiveMigrationOnDowngrade
: यहRoomDatabase.Builder
में मौजूद एक नया एपीआई है. अगर डाउनग्रेड होता है, तो यह डेटाबेस को अपने-आप फिर से बना देता है. b/110416954ignoredColumns
: यह@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
RxSingle
और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/71458963fallBackToDestructiveMigrationsFrom
:RoomDatabase.Builder
में मौजूद इस नए एपीआई की मदद से, यह बेहतर तरीके से कंट्रोल किया जा सकता है कि किन शुरुआती स्कीमा वर्शन से डिस्ट्रक्टिव माइग्रेशन की अनुमति है. यह fallbackToDestructiveMigration की तुलना में बेहतर है b/64989640- Room अब सिर्फ़ नए Paging API (alpha-4+) के साथ काम करता है. साथ ही, अब यह बंद हो चुके
LivePagedListProvider
के साथ काम नहीं करता. Room के नए वर्शन के ऐल्फ़ा वर्शन का इस्तेमाल करने के लिए, आपको पेजिंगalpha-4
या उसके बाद वाले वर्शन का इस्तेमाल करना होगा. साथ ही, अगर आपने पहले से हीLivePagedListProvider
सेLivePagedListBuilder
पर स्विच नहीं किया है, तो आपको ऐसा करना होगा.
गड़बड़ियां ठीक की गईं
- Kotlin Kapt टाइप के लिए बेहतर सपोर्ट. b/69164099
- फ़ील्ड के क्रम से अब स्कीमा अमान्य नहीं होती. b/64290754