कमरा
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 09 सितंबर, 2026 | 2.8.5 | - | - | - |
डिपेंडेंसी का एलान करना
Room पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
Room के लिए इन डिपेंडेंसी की ज़रूरत होती है: Room माइग्रेशन की जांच करना और Room RxJava
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Kotlin
dependencies { val room_version = "2.8.4" implementation("androidx.room:room-runtime:$room_version") // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See Add the KSP plugin to your project ksp("androidx.room:room-compiler:$room_version") // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
ग्रूवी
dependencies { def room_version = "2.8.4" implementation "androidx.room:room-runtime:$room_version" // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See KSP Quickstart to add KSP to your build ksp "androidx.room:room-compiler:$room_version" // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
KAPT प्लगिन का इस्तेमाल करने के बारे में जानकारी के लिए, KAPT का दस्तावेज़ देखें.
KSP प्लगिन इस्तेमाल करने के बारे में जानकारी पाने के लिए, KSP का क्विक-स्टार्ट दस्तावेज़ देखें.
Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
इसके अलावा, Android के अलावा अन्य लाइब्रेरी (जैसे, सिर्फ़ Java या Kotlin Gradle मॉड्यूल) के लिए, Room एनोटेशन का इस्तेमाल करने के लिए androidx.room:room-common पर निर्भर किया जा सकता है.
कंपाइलर के विकल्पों को कॉन्फ़िगर करना
Room में एनोटेशन प्रोसेसर के ये विकल्प होते हैं.
room.schemaLocation |
directory
इस विकल्प की मदद से, डेटाबेस स्कीमा को दी गई डायरेक्ट्री में JSON फ़ाइलों में एक्सपोर्ट किया जा सकता है. ज़्यादा जानकारी के लिए, रूम माइग्रेशन देखें. |
room.incremental |
boolean
इससे Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर चालू होता है. डिफ़ॉल्ट वैल्यू true है.
|
room.generateKotlin |
boolean
Java के बजाय Kotlin की सोर्स फ़ाइलें जनरेट करें. इसके लिए, KSP की ज़रूरत होती है. वर्शन 2.7.0 के मुताबिक, डिफ़ॉल्ट वैल्यू true है.
ज़्यादा जानकारी के लिए, वर्शन 2.6.0 के नोट देखें. इसमें बताया गया है कि इसे कब लॉन्च किया गया था.
|
Room Gradle प्लगिन का इस्तेमाल करना
Room के वर्शन 2.6.0 और इसके बाद के वर्शन में, Room Gradle प्लगिन का इस्तेमाल करके, Room कंपाइलर के लिए विकल्प कॉन्फ़िगर किए जा सकते हैं. यह प्लगिन, प्रोजेक्ट को इस तरह कॉन्फ़िगर करता है कि जनरेट किए गए स्कीमा (जो कंपाइल टास्क का आउटपुट होते हैं और जिनका इस्तेमाल ऑटो-माइग्रेशन के लिए किया जाता है) सही तरीके से कॉन्फ़िगर किए जाएं. इससे, दोबारा बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड तैयार किए जा सकते हैं.
प्लगिन जोड़ने के लिए, सबसे ऊपर के लेवल की Gradle बिल्ड फ़ाइल में, प्लगिन और उसका वर्शन तय करें.
Groovy
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
मॉड्यूल-लेवल की Gradle बिल्ड फ़ाइल में, प्लगिन लागू करें और room एक्सटेंशन का इस्तेमाल करें.
Groovy
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
Room Gradle Plugin का इस्तेमाल करते समय, schemaDirectory सेट करना ज़रूरी है. इससे Room कंपाइलर और अलग-अलग कंपाइल टास्क के साथ-साथ इसके बैकएंड (javac, KAPT, KSP) कॉन्फ़िगर हो जाएंगे. ये फ़्लेवर्ड फ़ोल्डर में स्कीमा फ़ाइलें आउटपुट करेंगे. उदाहरण के लिए, schemas/flavorOneDebug/com.package.MyDatabase/1.json. इन फ़ाइलों को रिपॉज़िटरी में सेव किया जाना चाहिए, ताकि इनका इस्तेमाल पुष्टि करने और अपने-आप माइग्रेट होने की प्रोसेस के लिए किया जा सके.
कुछ विकल्पों को Room Gradle Plugin के सभी वर्शन में कॉन्फ़िगर नहीं किया जा सकता. हालांकि, Room कंपाइलर इन्हें सपोर्ट करता है. यहां दी गई टेबल में हर विकल्प की सूची दी गई है. साथ ही, इसमें Room Gradle Plugin का वह वर्शन दिखाया गया है जिसने room एक्सटेंशन का इस्तेमाल करके उस विकल्प को कॉन्फ़िगर करने की सुविधा जोड़ी है. अगर आपका वर्शन इससे कम है या यह विकल्प अभी मौजूद नहीं है, तो इसके बजाय एनोटेशन प्रोसेसर के विकल्प इस्तेमाल किए जा सकते हैं.
| विकल्प | इस वर्शन के बाद से |
|---|---|
room.schemaLocation (ज़रूरी) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
एनोटेशन प्रोसेसर के विकल्पों का इस्तेमाल करना
अगर Room Gradle Plugin का इस्तेमाल नहीं किया जा रहा है या आपके पास प्लगिन का ऐसा वर्शन है जिसमें आपको चाहिए वह विकल्प काम नहीं करता, तो एनोटेशन प्रोसेसर के विकल्पों का इस्तेमाल करके Room को कॉन्फ़िगर किया जा सकता है. इसके बारे में बिल्ड डिपेंडेंसी जोड़ना लेख में बताया गया है. एनोटेशन के विकल्प तय करने का तरीका इस बात पर निर्भर करता है कि Room के लिए KSP या KAPT में से किसका इस्तेमाल किया जा रहा है.
Groovy
// For KSP ksp { arg("option_name", "option_value") // other otions... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "option_name":"option_value", // other options... ] } } } }
Kotlin
// For KSP ksp { arg("option_name", "option_value") // other options... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "option_name" to "option_value", // other options... ) } } } }
room.schemaLocation एक डायरेक्ट्री है, न कि प्रिमिटिव टाइप. इसलिए, इस विकल्प को जोड़ते समय CommandLineArgumentsProvider का इस्तेमाल करना ज़रूरी है. इससे Gradle को अप-टू-डेट जांच करते समय इस डायरेक्ट्री के बारे में पता चलेगा.
अपने Room डेटाबेस को माइग्रेट करें में, CommandLineArgumentsProvider को पूरी तरह से लागू करने का तरीका बताया गया है. इससे स्कीमा की जगह की जानकारी मिलती है.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 2.8
वर्शन 2.8.5
09 सितंबर, 2026
androidx.room:room-*:2.8.5 रिलीज़ हो गया है. वर्शन 2.8.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डेटाबेस बंद होने के बाद, रूम निलंबित करने वाली क्वेरी और अमान्य ट्रैकर ऑपरेशन को कॉल करने पर, अब
IllegalStateExceptionदिखेगा. (Ic0166, b/543076356)
वर्शन 2.8.4
19 नवंबर, 2025
androidx.room:room-*:2.8.4 रिलीज़ हो गया है. वर्शन 2.8.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- का इस्तेमाल करते समय, Room के कनेक्शन पूल में तैयार किए गए स्टेटमेंट की कैश मेमोरी जोड़ी गई है. ऐसा तब किया जाता है, जब
SQLiteDriverमें इंटरनल पूल नहीं होता है. जैसे,BundledSQLiteDriver. इससे एक ही एसक्यूएल स्टेटमेंट को बार-बार लागू करने पर परफ़ॉर्मेंस बेहतर होती है. (5f43bc, b/319653917) - उस समस्या को ठीक किया गया है जिसमें स्कीमा की पुष्टि करने पर, गड़बड़ी के असल / अनुमानित मैसेज में जानकारी मौजूद नहीं थी. (8b23da, b/454531083)
- Room के Kotlin कोड जनरेशन से जुड़ी समस्या ठीक की गई है. इसमें टाइप वैरिएबल के साथ
@TransactionDAO फ़ंक्शन मौजूद नहीं थे. (a8365d, b/251316420) SupportSQLiteDatabaseएपीआई की तरह ही थ्रेड को ब्लॉक करने के व्यवहार को बनाए रखते हुए, थ्रेड हॉप से बचें. इससे Room केSupportSQLiteरैपर की परफ़ॉर्मेंस बेहतर होगी. (fc70e4)
वर्शन 2.8.3
22 अक्टूबर, 2025
androidx.room:room-*:2.8.3 रिलीज़ हो गया है. वर्शन 2.8.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Room SQLite रैपर से जुड़ी परफ़ॉर्मेंस की समस्या को ठीक किया गया है. इस समस्या की वजह से, कर्सर पर बार-बार दोहराए जाने पर, बहुत ज़्यादा JNI कॉल हो रहे थे और परफ़ॉर्मेंस में काफ़ी गिरावट आ रही थी.
वर्शन 2.8.2
08 अक्टूबर, 2025
androidx.room:room-*:2.8.2 रिलीज़ हो गया है. वर्शन 2.8.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अपने-आप बंद होने वाले डेटाबेस को फ़्लो एमिशन से फिर से खोलने पर होने वाली डेडलॉक की समस्या को ठीक किया गया (b/446643789).
वर्शन 2.8.1
24 सितंबर, 2025
androidx.room:room-*:2.8.1 रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सस्पेंड किए गए लैम्ब्डा के साथ DAO फ़ंक्शन को प्रोसेस करते समय होने वाली प्रोसेसर क्रैश की समस्या को ठीक किया गया. (b/442220723).
- रेस कंडीशन की समस्या को ठीक किया गया है. इस वजह से, फ़्लो को अपडेट नहीं मिल रहे थे.
वर्शन 2.8.0
10 सितंबर, 2025
androidx.room:room-*:2.8.0 रिलीज़ हो गया है. वर्शन 2.8.0 में ये बदलाव शामिल हैं.
2.7.0 के बाद हुए मुख्य बदलाव:
- नया आर्टफ़ैक्ट
androidx.room:room-sqlite-wrapperजोड़ा गया है. इसमें ऐसे एपीआई शामिल हैं जिनकी मदद से, कॉन्फ़िगर किए गएSQLiteDriverवालेRoomDatabaseसेSupportSQLiteDatabaseरैपर पाया जा सकता है. रैपर पाने के लिए, नए एक्सटेंशन फ़ंक्शनRoomDatabase.getSupportWrapper()का इस्तेमाल करें. यह कंपैटिबिलिटी आर्टफ़ैक्ट है. इसका इस्तेमालSupportSQLiteDatabaseके इस्तेमाल को बनाए रखने के लिए किया जाता है. आम तौर पर, इसेroomDatabase.openHelper.writableDatabaseसे हासिल किया जाता है. भले ही, Room डेटाबेस कोSQLiteDriverके साथ कॉन्फ़िगर किया गया हो. यह रैपर, उन कोडबेस के लिए काम का है जो SQLiteDriver API का इस्तेमाल करना चाहते हैं. हालांकि, वे अब भी SupportSQLite API का बड़े पैमाने पर इस्तेमाल करते हैं. साथ ही, वेBundledSQLiteDriverका फ़ायदा पाना चाहते हैं. ज़्यादा जानकारी के लिए, माइग्रेशन गाइड देखें. - KMP टारगेट Watch OS और Tv OS के लिए सपोर्ट जोड़ा गया.
- लाइब्रेरी के Android minSDK को एपीआई 21 से एपीआई 23 पर अपडेट किया गया
वर्शन 2.8.0-rc02
27 अगस्त, 2025
androidx.room:room-*:2.8.0-rc02 रिलीज़ हो गया है. वर्शन 2.8.0-rc02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- minSDK को एपीआई 21 से एपीआई 23 पर अपडेट करें (Ibdfca, b/380448311, b/435705964, b/435705223)
- Room Gradle प्लगिन के साथ काम करने वाले Android Gradle प्लगिन (AGP) के कम से कम वर्शन को 8.1 से 8.4 पर अपडेट किया गया है. (Ia0d28)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें पहले से पैकेज किए गए डेटाबेस के लिए माइग्रेशन पाथ उपलब्ध होने के बावजूद, डिस्ट्रक्टिव माइग्रेशन किया जा रहा था (b/432634197).
वर्शन 2.8.0-rc01
13 अगस्त, 2025
androidx.room:room-*:2.8.0-rc01 रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
गड़बड़ियां ठीक की गईं
- रेस कंडीशन को ठीक किया गया है. इसमें Room Flows, एसिंक्रोनस मल्टी-क्वेरी/राइट सिचुएशन में क्वेरी का नया नतीजा नहीं दिखाता था. (Ic9a3c)
वर्शन 2.8.0-beta01
1 अगस्त, 2025
androidx.room:room-*:2.8.0-beta01 रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डेटा मिटाने वाले माइग्रेशन के दौरान, टेबल और व्यू के नामों को अब सही तरीके से एस्केप किया जाता है. (9e55f8, b/427095319)
वर्शन 2.8.0-alpha01
16 जुलाई, 2025
androidx.room:room-*:2.8.0-alpha01 रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक नया आर्टफ़ैक्ट
androidx.room:room-sqlite-wrapperजोड़ा गया है. इसमेंSQLiteDriverके साथ कॉन्फ़िगर किए गएRoomDatabaseकाSupportSQLiteDatabaseरैपर पाने के लिए एपीआई शामिल हैं. रैपर पाने के लिए, नए एक्सटेंशन फ़ंक्शनRoomDatabase.getSupportWrapper()का इस्तेमाल करें. यह कंपैटिबिलिटी आर्टफ़ैक्ट है. इसका इस्तेमालSupportSQLiteDatabaseके इस्तेमाल को बनाए रखने के लिए किया जाता है. आम तौर पर, इसेRoomDatabase.openHelper.writableDatabaseसे हासिल किया जाता है. भले ही, Room डेटाबेस कोSQLiteDriverके साथ कॉन्फ़िगर किया गया हो. यह रैपर, कोडबेस के इंक्रीमेंटल माइग्रेशन के लिए फ़ायदेमंद है. इसका इस्तेमाल उन डेवलपर के लिए किया जा सकता है जोSQLiteDriverको अपनाना चाहते हैं, लेकिन अब भीSupportSQLiteएपीआई का इस्तेमाल कर रहे हैं. हालांकि, वेBundledSQLiteDriverका फ़ायदा पाना चाहते हैं. (Icf6ac) - Watch OS और TV OS के लिए केएमपी टारगेट जोड़ें (I228f6, b/394238801)
गड़बड़ियां ठीक की गईं
- लेन-देन को निलंबित करने और
AndroidSQLiteDriverका इस्तेमाल करने के दौरान, कभी-कभी होने वाली डेडलॉक की समस्या को ठीक किया गया. (b/415006268)
वर्शन 2.7
वर्शन 2.7.2
18 जून, 2025
androidx.room:room-*:2.7.2 रिलीज़ हो गया है. वर्शन 2.7.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐसी समस्या को ठीक किया गया है जिसमें KSP के साथ नेटिव सोर्स को प्रोसेस करते समय, एनोटेशन वैल्यू को गलत तरीके से पढ़ा जाता था. साथ ही, कभी-कभी स्कीमा एक्सपोर्ट नहीं होते थे. (b/416549580)
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, एसक्यूएल में मौजूद शुरुआती टिप्पणियों की वजह से स्टेटमेंट ऐसे एक्ज़ीक्यूट होते थे जैसे वे पढ़ी नहीं गई क्वेरी हों. (b/413061402)
- स्कीमा डायरेक्ट्री खाली होने की वजह से, Room के Gradle प्लगिन को कॉन्फ़िगर नहीं किया जा सका. इस समस्या को ठीक किया गया है. (b/417823384)
- कनेक्शन मिलने में ज़्यादा समय लगने पर, अब
SQLiteExceptionनहीं दिखेगा. इसके बजाय, लाइब्रेरी से लॉग मैसेज भेजा जाएगा. लॉगिंग के बजाय थ्रो करने से, iOS के लूपर को निलंबित करने से जुड़ी समस्या ठीक हो जाती है. इससे Room, कनेक्शन हासिल करने वाली Kotlin Coroutine में होने वाले टाइमआउट की गलत व्याख्या नहीं करता. साथ ही, जब कोई iOS ऐप्लिकेशन बैकग्राउंड में होता है और बाद में डेटाबेस ऑपरेशन के बीच में फिर से शुरू होता है, तो अपवाद को थ्रो होने से रोकता है. (b/422448815)
वर्शन 2.7.1
23 अप्रैल, 2025
androidx.room:room-*:2.7.1 रिलीज़ हो गया है. वर्शन 2.7.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टाइप कन्वर्टर की पुष्टि के दौरान,
IndexOutOfBoundsExceptionबग को ठीक किया गया. (b/409804755). - मीटिंग रूम से कनेक्ट करने की सुविधा के साथ
SQLiteDriverकॉन्फ़िगर किए जाने पर,RoomDatabase.runInTransaction()की सुविधा काम करती है. (b/408364828).
वर्शन 2.7.0
9 अप्रैल, 2025
androidx.room:room-*:2.7.0 रिलीज़ हो गया है. वर्शन 2.7.0 में ये बदलाव शामिल हैं.
2.6.0 के बाद हुए अहम बदलाव
- Kotlin Multiplatform (KMP) के साथ काम करता है: इस रिलीज़ में, Room को Kotlin Multiplatform (KMP) लाइब्रेरी के तौर पर फिर से बनाया गया है. फ़िलहाल, ये प्लैटफ़ॉर्म केएमपी के साथ काम करते हैं: Android, iOS, JVM (डेस्कटॉप), नेटिव Mac, और नेटिव Linux. Room KMP का इस्तेमाल शुरू करने के बारे में ज़्यादा जानने के लिए, कृपया Room KMP का आधिकारिक दस्तावेज़ देखें. KMP के साथ काम करने की सुविधा के तहत, Room को
SQLiteDriverके साथ भी कॉन्फ़िगर किया जा सकता है. किसी मौजूदा ऐप्लिकेशन को ड्राइवर एपीआई और Room KMP पर माइग्रेट करने के तरीके के बारे में जानने के लिए, माइग्रेशन से जुड़े दस्तावेज़ देखें. - अगर प्रोसेसिंग KSP के ज़रिए की जाती है, तो KSP पर Kotlin कोड जनरेट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. KAPT या सिर्फ़ Java प्रोजेक्ट के लिए, Room अब भी Java सोर्स जनरेट करेगा.
- Kotlin 2.0 और KSP2: Room अब Kotlin 2.0 को टारगेट करता है. साथ ही, प्रोजेक्ट को Kotlin 2.0 और इसके बराबर या इससे ज़्यादा वर्शन वाली भाषा के साथ कंपाइल करना होगा. इसमें KSP2 के लिए भी सहायता जोड़ी गई है. हमारा सुझाव है कि Kotlin 2.0 या इसके बाद के वर्शन के साथ Room का इस्तेमाल करते समय, KSP2 का इस्तेमाल करें.
वर्शन 2.7.0-rc03
26 मार्च, 2025
androidx.room:room-*:2.7.0-rc03 रिलीज़ हो गया है. वर्शन 2.7.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Room blocking APIs के एक्ज़ीक्यूशन के दौरान थ्रेड में रुकावट आने पर, अब
InterruptedExceptionनहीं दिखेगा. इसमें DAO फ़ंक्शन (b/400584611) को ब्लॉक करना भी शामिल है. SQLException: Error code: 5, message: Timed out attempting to acquire a reader connection.और इसी तरह की अन्य समस्याओं (b/380088809) को कम करने के लिए, Room के कनेक्शन पूल को फिर से लागू किया गया है.
वर्शन 2.7.0-rc02
12 मार्च, 2025
androidx.room:room-*:2.7.0-rc02 रिलीज़ हो गया है. वर्शन 2.7.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऑटो माइग्रेशन की सुविधा से जुड़ी समस्या ठीक की गई है. इस समस्या में, ऑटो माइग्रेशन की सुविधा, FTS टेबल पर मौजूद नए कॉलम को गलत तरीके से हैंडल कर रही थी. (b/348227770, Ic53f3)
- KSP के ज़रिए नॉन-JVM सोर्स प्रोसेस करते समय,
NullPointerExceptionकी वजह से रूम-कंपाइलर क्रैश होने की समस्या ठीक की गई है. (b/396607230, I693c9) - उस समस्या को ठीक किया गया है जिसमें Room, writer कनेक्शन का इस्तेमाल खत्म होने के बाद टेबल को अमान्य नहीं करता था. (b/340606803, I73ef6)
वर्शन 2.7.0-rc01
26 फ़रवरी, 2025
androidx.room:room-*:2.7.0-rc01 रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से Room, डेटाबेस से शुरुआती कनेक्शन के दौरान
busy_timeoutसेट नहीं कर रहा था. इससेSQLException: Error code: 5, message: database is lockedसे जुड़ी समस्याएं हो रही थीं (I93208, b/380088809). - Room के कंपाइलर में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, Kotlin 2.1.x और KSP1 पर नेटिव सोर्स सेट (जैसे कि iOS) को प्रोसेस करते समय, KSP प्रोसेसर क्रैश हो जाता था (I883b8, b/396607230).
वर्शन 2.7.0-beta01
12 फ़रवरी, 2025
androidx.room:room-*:2.7.0-beta01 रिलीज़ हो गया है. वर्शन 2.7.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
RoomDatabase.inTransaction()के बंद होने पर, डेटाबेस को खोलने से जुड़ी समस्या को ठीक किया गया है. साथ ही, अगर डेटाबेस बंद है, तो इसे तुरंत गलत जवाब देना चाहिए (b/325432967).- Kotlin की इनलाइन / वैल्यू क्लास (b/388299754) के साथ डीएओ फ़ंक्शन प्रोसेस करते समय, Room के कंपाइलर में क्रैश (
IllegalArgumentException: not a valid name) की समस्या ठीक की गई है. room-runtimeके JVM आर्टफ़ैक्ट में Proguard के नियम शामिल करें, ताकि जनरेट किए गए डेटाबेस के डिफ़ॉल्ट कंस्ट्रक्टर को न हटाया जाए. ऐसा इसलिए, क्योंकि इसका इस्तेमाल Room के डिफ़ॉल्ट इनिशियलाइज़ेशन में किया जाता है, जो रिफ़्लेक्शन का इस्तेमाल करता है (b/392657750).
वर्शन 2.7.0-alpha13
29 जनवरी, 2025
androidx.room:room-*:2.7.0-alpha13 रिलीज़ हो गया है. वर्शन 2.7.0-alpha13 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Room अब Kotlin लैंग्वेज 2.0 को टारगेट करता है. इसलिए, प्रोजेक्ट को Kotlin 2.0 और इसके बराबर या इससे ज़्यादा वर्शन वाली लैंग्वेज के साथ कंपाइल करना होगा. (I8efb0, b/315461431, b/384600605)
गड़बड़ियां ठीक की गईं
- Android में पाथ के बजाय सामान्य नाम का इस्तेमाल करने पर, Room KMP डेटाबेस बिल्डर में समस्या ठीक की गई. साथ ही, डेटाबेस फ़ाइल के पाथ को ऐप्लिकेशन की डेटा डायरेक्ट्री में नहीं रखा जाएगा. (I83315, b/377830104)
- Room Gradle प्लगिन से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, स्कीमा इनपुट और आउटपुट को कॉन्फ़िगर करने की वजह से Android प्रोजेक्ट में समस्या आ रही थी:
property 'inputDirectory' is final and cannot be changed any further.(1dbb4c, b/376071291) - Room Gradle Plugin में KSP2 के लिए सहायता जोड़ी गई है. इससे उस समस्या को ठीक किया जा सकेगा जिसमें प्लगिन, स्कीमा डायरेक्ट्री को ठीक से सेट अप नहीं कर रहा था. (Iec3c4, b/379159770)
बाहरी योगदान
Roomपेजिंग इंटिग्रेशन से जुड़ी समस्या को ठीक किया गया है. इस वजह से, रीफ़्रेश करने के लिए शुरुआती कुंजी, सूची के आखिर के बहुत करीब होने पर यूज़र इंटरफ़ेस (यूआई) जंप करता है. एवा को धन्यवाद! (I2abbe, b/389729367)
वर्शन 2.7.0-alpha12
11 दिसंबर, 2024
androidx.room:room-*:2.7.0-alpha12 रिलीज़ हो गया है. वर्शन 2.7.0-alpha12 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई
RoomDatabase.Builder.setInMemoryTrackingMode()को जोड़ें. इससे यह कॉन्फ़िगर किया जा सकेगा कि Room, अमान्य होने की स्थिति को ट्रैक करने के लिए इन-मेमोरी टेबल का इस्तेमाल करेगा या नहीं. (I2a9b2, b/185414040)
गड़बड़ियां ठीक की गईं
- डेटा मिटाने वाली माइग्रेशन प्रोसेस अब व्यू हटा देती है, ताकि उन्हें फिर से बनाया जा सके. इससे,
allowDestructiveMigrationForAllTablesके चालू होने (केएमपी डिफ़ॉल्ट) पर होने वाला व्यवहार, इसके बंद होने पर होने वाले मौजूदा व्यवहार के साथ अलाइन हो जाता है. (0a3e83, b/381518941)
वर्शन 2.7.0-alpha11
30 अक्टूबर, 2024
androidx.room:room-*:2.7.0-alpha11 रिलीज़ हो गया है. वर्शन 2.7.0-alpha11 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- हाल ही में जोड़े गए
convertRows()तरीके के सिग्नेचर को फिर से देखें, ताकि यह एक सस्पेंड फ़ंक्शन बन जाए. यह फ़ंक्शन, रूम-पेजिंग के लिएRawRoomQueryको स्वीकार करता है. (Ie57b5, b/369136627)
गड़बड़ियां ठीक की गईं
- रूम-पेजिंग में,
@Relationके साथPagingSourceका इस्तेमाल करने पर अमान्य कोड जनरेट होने की समस्या को ठीक किया गया है.
वर्शन 2.7.0-alpha10
16 अक्टूबर, 2024
androidx.room:room-*:2.7.0-alpha10 रिलीज़ हो गया है. वर्शन 2.7.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Android और JVM के अलावा अन्य प्लैटफ़ॉर्म पर
ByteBufferके साथ Relations की सुविधा इस्तेमाल करने के लिए, इंटरनलByteArrayWrapperक्लास बनाएं. (I75543, b/367205685) - किसी कॉलम का डेटा टाइप वापस पाने की सुविधा चालू करने के लिए, अलग-अलग
SQLITE_DATA_*नतीजे के कॉन्स्टेंट के साथSQLiteStatement.getColumnType()जोड़ें. (I1985c, b/369636251)
वर्शन 2.7.0-alpha09
2 अक्टूबर, 2024
androidx.room:room-*:2.7.0-alpha09 रिलीज़ हो गया है. वर्शन 2.7.0-alpha09 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
room-pagingके KMP को लागू करने से जुड़ी समस्या को ठीक किया गया है. इससे, पढ़ने के कनेक्शन पर लिखने का लेन-देन शुरू करने की वजह सेError code: 8, message: attempt to write a readonly databaseकी समस्या होती थी. (b/368380988)
वर्शन 2.7.0-alpha08
18 सितंबर, 2024
androidx.room:room-*:2.7.0-alpha08 रिलीज़ हो गया है. वर्शन 2.7.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
room-pagingआर्टफ़ैक्ट को केएमपी के साथ काम करने के लिए माइग्रेट कर दिया गया है. (Ib8756, b/339934824)- एपीआई
invalidationTrackerFlow()कोInvalidationTracker.createFlow()के तौर पर पहले पक्ष का एपीआई बना दिया गया है. अब यह KMP प्रोजेक्ट में, Android के अलावा अन्य सोर्स सेट के लिए उपलब्ध है. (I1fbfa, (I8fb29), b/329291639, b/329315924)
एपीआई में हुए बदलाव
- Room में मौजूद उन सभी चेतावनियों और गड़बड़ी के मैसेज को हटा दिया गया है या बदल दिया गया है जिनमें
Cursorशब्द का इस्तेमाल किया गया था. ऐसा इसलिए, क्योंकि Room के KMP वर्शन मेंCursorका इस्तेमाल करना अब सही नहीं है. (Id8cd9, b/334087492)
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें Room KMP, नॉन-JVM प्लैटफ़ॉर्म के लिए
UUIDका इस्तेमाल करके कोड को ट्रांसफ़र करने की कोशिश करता था. (b/362994709) - Room Gradle प्लगिन से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, Compose Multiplatform के साथ KMP प्रोजेक्ट में इस्तेमाल किए जाने पर, ‘Cannot change attributes of configuration … after it has been locked for mutation’ जैसी गड़बड़ी होती थी. (b/343408758)
वर्शन 2.7.0-alpha07
21 अगस्त, 2024
androidx.room:room-*:2.7.0-alpha07 रिलीज़ हो गया है. वर्शन 2.7.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Room Gradle Plugin अब एक्सपोर्ट किए गए स्कीमा को Android इंस्ट्रुमेंटेशन टेस्ट के संसाधन सोर्स में अपने-आप जोड़ देगा, ताकि उनका इस्तेमाल
MigrationTestHelperकर सके.
गड़बड़ियां ठीक की गईं
RoomDatabaseConstructorके जनरेट किए गए ‘actual’ में मौजूद उस समस्या को ठीक किया गया है जिसमेंinitializeफ़ंक्शन में ‘actual’ मॉडिफ़ायर मौजूद नहीं होता है. ऐसा तब होता है, जब ‘expect’ एलान में भी इस फ़ंक्शन को बदला गया हो. (359631627)RoomDatabaseConstructorके जनरेट किए गए ‘असल’ की वैल्यू, ‘अनुमानित’ वैल्यू से मेल न खाने की समस्या को ठीक किया गया है. (358138953)
वर्शन 2.7.0-alpha06
7 अगस्त, 2024
androidx.room:room-*:2.7.0-alpha06 रिलीज़ हो गया है. वर्शन 2.7.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- KMP प्रोजेक्ट में
RoomDatabaseके इंस्टैंटिएशन सेटअप में बदलाव करें.
Kotlin 2.0 के कंपाइलेशन मॉडल की वजह से, जनरेट किए जाने वाले फ़ंक्शन instantiateImpl() को रेफ़रंस करने की रणनीति अब काम नहीं करेगी. instantiateImpl() रणनीति की जगह, दो नए एपीआई @ConstructedBy और RoomDatabaseConstructor का इस्तेमाल किया जाएगा. नई रणनीति इस तरह है:
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)linuxArm64Kotlin Multiplatform टारगेट (I139d3, b/338268719) के लिए सहायता जोड़ी गई
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें Room, Android के अलावा अन्य टारगेट में
recursiveFetchArrayMapको गलत तरीके से कॉल करता था. (710c36, b/352482325) - उस समस्या को ठीक किया गया है जिसमें कभी-कभी KMP प्रोजेक्ट में, Room ‘कनेक्शन की कोशिश का समय खत्म हो गया’ के बारे में अपवाद दिखाता था. (fa72d0, b/347737870)
- अपने-आप माइग्रेट होने की सुविधा से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, अन्य टेबल के स्कीमा नई विदेशी कुंजियों के मुताबिक बदलने से पहले ही, विदेशी कुंजियों की जाँच हो जाती थी. (7672c0, b/352085724)
वर्शन 2.7.0-alpha05
10 जुलाई, 2024
androidx.room:room-*:2.7.0-alpha05 रिलीज़ हो गया है. वर्शन 2.7.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SQLiteKtका नाम बदलकरSQLiteऔरBundledSQLiteKtका नाम बदलकरBundledSQLiteकर दिया गया. (I8b501)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें
AndroidSQLiteDriverका इस्तेमाल करते समय, कनेक्शन टाइम आउट होने परRoomDatabaseलॉक हो जाता था या गड़बड़ी होती थी.
वर्शन 2.7.0-alpha04
12 जून, 2024
androidx.room:room-*:2.7.0-alpha04 रिलीज़ हो गया है. वर्शन 2.7.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Room के एनोटेशन प्रोसेसर में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से, DAO में मल्टी-मैप रिटर्न टाइप तय किए जाने पर, KMP कोड जनरेट नहीं होता था. (b/340983093)
- उस समस्या को ठीक किया गया है जिसमें
@Databaseएनोटेट की गई क्लास में कोई पैकेज न होने पर, Room जनरेट किए गए डेटाबेस को लागू करने की सुविधा नहीं ढूंढ पाता था. (b/342097292) - उस समस्या को ठीक कर दिया गया है जिसमें अपने-आप बंद होने और एक से ज़्यादा इंस्टेंस अमान्य होने की सुविधा चालू करने पर, कभी-कभी
ConcurrentModificationExceptionकी समस्या आ जाती थी. ऐसा तब होता था, जब डेटाबेस के इस्तेमाल में न होने की वजह से वह अपने-आप बंद हो जाता था.
वर्शन 2.7.0-alpha03
29 मई, 2024
androidx.room:room-*:2.7.0-alpha03 रिलीज़ हो गया है. वर्शन 2.7.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Kotlin 2.0 और KSP 2.0 से जुड़ी कई समस्याओं को ठीक किया गया है. ध्यान दें कि KSP 2 के साथ Kotlin 2.0 पूरी तरह से काम नहीं करता है. साथ ही, टीम नए कंपाइलर में अलग-अलग एपीआई और व्यवहार में होने वाले बदलावों पर काम कर रही है. (b/314151707)
वर्शन 2.7.0-alpha02
14 मई, 2024
androidx.room:room-*:2.7.0-alpha02 रिलीज़ हो गया है. वर्शन 2.7.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- केएसपी से जुड़ी कई समस्याएं ठीक की गईं.
वर्शन 2.7.0-alpha01
1 मई, 2024
androidx.room:room-*:2.7.0-alpha01 रिलीज़ हो गया है. वर्शन 2.7.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Kotlin Multiplatform (KMP) के साथ काम करता है: इस रिलीज़ में, Room को Kotlin Multiplatform (KMP) लाइब्रेरी के तौर पर फिर से बनाया गया है. हालांकि, अब भी कुछ काम बाकी है. इस रिलीज़ में, Room का नया वर्शन पेश किया गया है. इसमें ज़्यादातर फ़ंक्शन को “कॉमन” (मल्टीप्लैटफ़ॉर्म के लिए बनाया गया) कर दिया गया है. फ़िलहाल, ये प्लैटफ़ॉर्म केएमपी के साथ काम करते हैं: Android, iOS, JVM (डेस्कटॉप), नेटिव Mac, और नेटिव Linux. नए प्लैटफ़ॉर्म पर काम न करने वाली सुविधाओं को, Room के आने वाले वर्शन में “पूरी तरह से काम करने वाली” बनाया जाएगा.
Room KMP का इस्तेमाल शुरू करने के बारे में ज़्यादा जानने के लिए, कृपया Room KMP का आधिकारिक दस्तावेज़ देखें.
- अगर प्रोसेसिंग KSP के ज़रिए की जाती है, तो KSP पर Kotlin कोड जनरेट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. KAPT या सिर्फ़ Java प्रोजेक्ट के लिए, Room अब भी Java सोर्स जनरेट करेगा.
एपीआई में हुए बदलाव
Room.databaseBuilder()का एक ओवरलोड जोड़ा गया है. यह एक लैम्डा पैरामीटर लेता है, जिसका इस्तेमाल Room से जनरेट किए गए फ़ंक्शन के साथ किया जाना है. इससे जनरेट किए गएRoomDatabaseको इंस्टैंटिएट करते समय रिफ़्लेक्शन का इस्तेमाल करने से बचा जा सकता है. इस्तेमाल का उदाहरण:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- बिल्डर में,
CoroutineContextकी मदद से रूम को कॉन्फ़िगर करने के लिए एक एपीआई जोड़ा गया है:RoomDatabase.Builder.setQueryCoroutineContext. ध्यान दें किRoomDatabaseको सिर्फ़setQueryExecutorका इस्तेमाल करने वाले एक्ज़ीक्यूटर या Coroutine कॉन्टेक्स्ट के साथ कॉन्फ़िगर किया जा सकता है. दोनों के साथ कॉन्फ़िगर नहीं किया जा सकता. SQLiteड्राइवर के साथ Room को कॉन्फ़िगर करने के लिए एक एपीआई जोड़ा गया है:RoomDatabase.Builder.setDriver().SQLiteDriver API के बारे में ज़्यादा जानने के लिए, SQLite KMP दस्तावेज़ देखें- ड्राइवर एपीआई से,
SQLiteConnectionको ऐक्सेस करने के लिए एपीआई जोड़े गए हैं:RoomDatabase.useReaderConnectionऔरRoomDatabase.useWriterConnection. - कमरे से जुड़े कई Varios Room कॉलबैक में अब ओवरलोड किया गया वर्शन है. इसमें
SupportSQLiteDatabaseके बजायSQLiteConnectionमिलता है. इन्हें KMP प्रोजेक्ट पर माइग्रेट करते समय बदला जा सकता है. Android ऐप्लिकेशन में Room के इस्तेमाल को सामान्य KMP मॉड्यूल में माइग्रेट करने के बारे में ज़्यादा जानने के लिए, माइग्रेशन गाइड देखें. कॉलबैक ये हैं:Migration.migrate(SQLiteConnection)AutoMigrationSpec.onPostMigrate(SQLiteConnection)RoomDatabase.Callback.onCreate(SQLiteConnection)RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)RoomDatabase.Callback.onOpen(SQLiteConnection)
- KTX आर्टफ़ैक्ट
androidx.room:room-ktxको उसके सभी एपीआई के साथandroidx.room:room-runtimeमें मर्ज कर दिया गया है. अब आर्टफ़ैक्ट खाली है. कृपया इसे अपनी डिपेंडेंसी की सूची से हटा दें.
वर्शन 2.6
वर्शन 2.6.1
29 नवंबर, 2023
androidx.room:room-*:2.6.1 रिलीज़ हो गया है. वर्शन 2.6.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जनरेट किए गए कोड में मौजूद समस्या को ठीक किया गया है. इस समस्या की वजह से,
EntityCursorConverterमें Double कॉलम के लिए डिफ़ॉल्ट वैल्यू 0.0 के बजाय 0 पर सेट हो रही थी. फ़्लोट टाइप कॉलम के लिए, मिलते-जुलते एज-केस को ठीक करने का तरीका भी शामिल किया गया है. (Id75f5, b/304584179) PagingSourceलोड करने के दौरान होने वाली गड़बड़ियों को अबLoadResult.ErrorकेLoadStateUpdateके तौर पर दिखाया जाएगा. इसमें Throwable शामिल होगा. इस गड़बड़ी की स्थिति कोPagingDataAdapter.loadStateFlow(Views)याLazyPagingItems.loadState(Compose)के ज़रिए देखा जा सकता है. ध्यान दें कि इससे व्यवहार में बदलाव होता है. पहले, लोड करने से जुड़ी गड़बड़ियां, dao के उस तरीके से थ्रो किए गए अपवाद के तौर पर दिखती थीं जिसने लोड को ट्रिगर किया था. (I93887, b/302708983)
वर्शन 2.6.0
18 अक्टूबर, 2023
androidx.room:room-*:2.6.0 रिलीज़ हो गया है. वर्शन 2.6.0 में ये बदलाव शामिल हैं.
2.5.0 के बाद हुए ज़रूरी बदलाव
- Room KSP में अब Kotlin कोड जनरेट करने (या “Kotlin CodeGen”) की सुविधा चालू करने का विकल्प उपलब्ध है. (4297ec0). Room में Kotlin CodeGen चालू करने के लिए, KSP के लिए प्रोसेसर के विकल्पों में
room.generateKotlinविकल्प का नाम जोड़ें. KSP के लिए प्रोसेसर के विकल्प पास करने के तरीके के बारे में ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें.
ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, यह ध्यान रखना ज़रूरी है कि कुछ और पाबंदियां जोड़ी गई हैं. Kotlin CodeGen में, DAO गेटर या DAO क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी इस्तेमाल करने की अनुमति नहीं है. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न बने कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और इसका नतीजा पहले से सेव है. एक और पाबंदी यह जोड़ी गई है कि Kotlin CodeGen के लिए, Room में अब Nullable कलेक्शन के रिटर्न टाइप की अनुमति नहीं है.
चेतावनी: Kotlin CodeGen का इस्तेमाल करते समय, आपको लग सकता है कि आपके प्रोजेक्ट में वैल्यू न होने की स्थिति के लिए ज़्यादा सख्त नियम लागू किए गए हैं. Kotlin CodeGen में, टाइप आर्ग्युमेंट की शून्यता अहम होती है. हालांकि, Java में इसे ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` रिटर्न टाइप है और टेबल खाली है. Java CodeGen में, इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको गड़बड़ी का मैसेज मिलेगा. इससे बचने के लिए, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. हालांकि, यह मान लिया गया है कि एक शून्य वैल्यू दी गई है. </foo?\></foo\>
- Room Gradle प्लगिन के लिए नया आर्टफ़ैक्ट, Room में
androidx.roomआईडी के साथ जोड़ा गया है. इससे Room में मौजूद कई समस्याएं हल हो जाती हैं. ये समस्याएं, Gradle एनोटेशन प्रोसेसर के विकल्पों के ज़रिए स्कीमा के इनपुट और आउटपुट से जुड़ी हैं. ज़्यादा जानकारी के लिए, Room के वर्शन 2.6.0-alpha02 के रिलीज़ नोट पढ़ें. - KSP के लिए, Room Entities में वैल्यू क्लास का इस्तेमाल किया जा सकता है. (4194095)
- DAO फ़ंक्शन में नेस्ट किए गए मैप के रिटर्न टाइप, अब Room में काम करते हैं. (I13f48, 203008711)
वर्शन 2.6.0-rc01
20 सितंबर, 2023
androidx.room:room-*:2.6.0-rc01 रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.6.0-beta01
23 अगस्त, 2023
androidx.room:room-*:2.6.0-beta01 रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अपसर्ट के दौरान आने वाली
SQLiteअपवाद की स्थिति को हैंडल करना. अगर अपसर्ट के दौरान2067 SQLITE_CONSTRAINT_UNIQUEअपवाद की स्थिति आती है, तो अपसर्ट को अपडेट करना चाहिए. (If2849, b/243039555)
वर्शन 2.6.0-alpha03
9 अगस्त, 2023
androidx.room:room-*:2.6.0-alpha03 रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
एपीआई में हुए बदलाव
- की जगह लेने के लिए,
@MapColumnनाम का एक नया टाइप एनोटेशन बनाया गया है.@MapInfoको अब बंद कर दिया गया है.@MapInfoएनोटेशन में दिए गए हर कॉलम के नाम (keyColumnName,valueColumnNameया दोनों) के लिए, आपको सिर्फ़columnNameके साथ@MapColumnएनोटेशन का एलान करना होगा. साथ ही, एनोटेशन का इस्तेमाल उस खास टाइप आर्ग्युमेंट पर करना होगा जिसे डीएओ फ़ंक्शन के रिटर्न टाइप में मैप (Map) की कुंजी या वैल्यू के तौर पर रेफ़र किया जा रहा है. ऐसा इसलिए है, क्योंकि@MapColumnएनोटेशन का इस्तेमाल, डीएओ फ़ंक्शन के रिटर्न टाइप में टाइप आर्ग्युमेंट पर सीधे तौर पर किया जाता है. इसे@MapInfoकी तरह फ़ंक्शन पर इस्तेमाल नहीं किया जाता. ज़्यादा जानकारी के लिए, कृपया@MapColumnदस्तावेज़ देखें. (Ib0305, b/203008711) - एपीआई की अपडेट की गई फ़ाइलें, जिनमें कंपैटिबिलिटी सप्रेशन की जानकारी शामिल की गई है (I8e87a, b/287516207)
- Room Gradle प्लगिन एपीआई को अपडेट किया गया है, ताकि हर वैरिएंट के लिए कॉन्फ़िगरेशन की ज़रूरत न पड़े. इसका मतलब है कि प्लगिन, अलग-अलग डायरेक्ट्री बनाए बिना सभी वैरिएंट के लिए ग्लोबल लोकेशन स्वीकार कर सकता है. इससे डेटा दूसरी जगह भेजना आसानी से हो पाता है. साथ ही, यह इतना फ़्लेक्सिबल होता है कि प्लगिन के फ़ायदों (दोबारा बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड) को बनाए रखते हुए, मैन्युअल तरीके से फ़्लेवर कॉन्फ़िगर किए जा सकते हैं या बिल्ड का तरीका स्कीमा बनाए जा सकते हैं. (I09d6f, b/278266663)
गड़बड़ियां ठीक की गईं
QueryInterceptorStatementमें मेमोरी लीक की संभावित समस्या को ठीक किया गया. (I193d1)QueryInterceptorDatabase execSQL()फ़ंक्शन में गलत तरीके से काम करने की समस्या को ठीक किया गया है. (Iefdc8)
वर्शन 2.6.0-alpha02
21 जून, 2023
androidx.room:room-*:2.6.0-alpha02 रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये बदलाव शामिल हैं.
Room Gradle प्लगिन
इस नई रिलीज़ में, Room Gradle प्लगिन के लिए एक नया आर्टफ़ैक्ट शामिल है. इसका आईडी androidx.room है. यह Room में मौजूद कई समस्याओं को हल करता है. ये समस्याएं, Gradle एनोटेशन प्रोसेसर के विकल्पों के ज़रिए स्कीमा के इनपुट और आउटपुट से जुड़ी हैं. Room Gradle प्लगिन, प्रोजेक्ट को इस तरह से कॉन्फ़िगर करता है कि जनरेट किए गए स्कीमा, ऑटो-माइग्रेशन के लिए इस्तेमाल किए जाते हैं. साथ ही, कंपाइल टास्क के आउटपुट को सही तरीके से कॉन्फ़िगर किया जाता है, ताकि फिर से बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड मिल सकें. यह प्लगिन, बुनियादी स्कीमा की लोकेशन को कॉन्फ़िगर करने के लिए डीएसएल उपलब्ध कराता है:
room {
schemaDirectory("$projectDir/schemas/")
}
इसके बाद, प्लगिन Room कंपाइलर और अलग-अलग कंपाइल टास्क के साथ-साथ इसके बैकएंड (javac, KAPT, KSP) को कॉन्फ़िगर करेगा.इससे, फ़्लेवर्ड फ़ोल्डर में स्कीमा फ़ाइलें आउटपुट होंगी. जैसे, schemas/flavorOneDebug/com.package.MyDatabase/1.json. आम तौर पर, इन फ़ाइलों को रिपॉज़िटरी में चेक-इन किया जाता है, ताकि इनका इस्तेमाल पुष्टि करने और अपने-आप माइग्रेट होने की प्रोसेस के लिए किया जा सके. एनोटेशन प्रोसेसर के विकल्पों के बजाय प्लगिन का इस्तेमाल करने पर, मौजूदा स्कीमा फ़ाइलों को प्लगिन से बनाई गई फ़्लेवर डायरेक्ट्री में कॉपी करना होगा. यह माइग्रेशन की एक बार की कार्रवाई है, जिसे मैन्युअल तरीके से करना होगा. developers.android.com पर मौजूद स्कीमा के दस्तावेज़ को आने वाले समय में अपडेट किया जाएगा. ऐसा तब होगा, जब हमें मिले सुझावों/राय पर काम कर लिया जाएगा और प्लगिन का स्टेबल वर्शन उपलब्ध हो जाएगा. इसलिए, कृपया इसे आज़माएं.
एपीआई में हुए बदलाव
RoomDatabase.QueryCallbackको एक फ़ंक्शनल इंटरफ़ेस के तौर पर तय किया गया है, ताकि एसएएम कन्वर्ज़न के इस्तेमाल की अनुमति दी जा सके. (Iab8ea, b/281008549)
गड़बड़ियां ठीक की गईं
- Room सोर्स को Java से Kotlin में माइग्रेट करने के बाद, Robolectric में डेटाबेस को इंस्टैंटिएट करते समय आने वाली समस्या को हल किया गया. (Ic053c, b/274924903)
वर्शन 2.6.0-alpha01
22 मार्च, 2023
androidx.room:room-*:2.6.0-alpha01 रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- KSP के लिए, Room में वैल्यू क्लास का इस्तेमाल किया जा सकता है. Room अब इकाइयों में वैल्यू क्लास के साथ काम कर सकता है. (4194095)
- Room में अब Kotlin कोड जनरेशन(या “Kotlin CodeGen”) की सुविधा चालू की जा सकती है (4297ec0). Room में Kotlin CodeGen चालू करने के लिए, KSP के लिए प्रोसेसर के विकल्पों में
room.generateKotlinविकल्प का नाम जोड़ें. KSP के लिए प्रोसेसर के विकल्प पास करने के तरीके के बारे में ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें.
ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, यह ध्यान रखना ज़रूरी है कि कुछ और पाबंदियां जोड़ी गई हैं. Kotlin CodeGen में, DAO गेटर या DAO क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी इस्तेमाल करने की अनुमति नहीं है. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न बने कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और इसका नतीजा पहले से सेव है. एक और पाबंदी यह जोड़ी गई है कि Kotlin CodeGen के लिए, Room में अब Nullable कलेक्शन के रिटर्न टाइप की अनुमति नहीं है.
चेतावनी: Kotlin CodeGen का इस्तेमाल करते समय, आपको लग सकता है कि आपके प्रोजेक्ट में वैल्यू न होने की स्थिति के लिए ज़्यादा सख्त नियम लागू किए गए हैं. Kotlin CodeGen में, टाइप आर्ग्युमेंट की शून्यता अहम होती है. हालांकि, Java में इसे ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` रिटर्न टाइप है और टेबल खाली है. Java CodeGen में, इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको गड़बड़ी का मैसेज मिलेगा. इससे बचने के लिए, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. हालांकि, यह मान लिया गया है कि एक शून्य वैल्यू दी गई है. </foo?\></foo\>
एपीआई में हुए बदलाव
- डीएओ के तरीके के रिटर्न टाइप में, नल वैल्यू स्वीकार करने वाले कलेक्शन का बिना मतलब इस्तेमाल करने से सुरक्षा मिलती है. (I777dc, b/253271782, b/259426907)
- एक ऐसा एपीआई जोड़ा गया है जो अमान्य होने की स्थिति को ट्रैक करने वाले बदलावों को दिखाता है. यह एपीआई, ऐसी स्ट्रीम बनाने के लिए काम का है जिनमें डेटाबेस में हुए बदलावों के हिसाब से बदलाव करने की ज़रूरत होती है. (I8c790, b/252899305)
गड़बड़ियां ठीक की गईं
- Kotlin codegen में, DAO getter या DAO क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी की अनुमति न दें. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न बने कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और इसका नतीजा पहले से सेव है. (If6a13, b/127483380, b/257967987)
वर्शन 2.5.2
वर्शन 2.5.2
21 जून, 2023
androidx.room:room-*:2.5.2 रिलीज़ हो गया है. वर्शन 2.5.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- kotlinx-metadata-jvm के साथ काम न करने की समस्या को ठीक किया गया है. (386d5c)
- उस समस्या को ठीक किया गया है जिसकी वजह से, Robolectric टेस्ट में Room का इस्तेमाल करते समय गड़बड़ी होती है. (f79bea, b/274924903)
वर्शन 2.5.1
वर्शन 2.5.1
22 मार्च, 2023
androidx.room:room-*:2.5.1 रिलीज़ हो गया है. वर्शन 2.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अगर डेटाबेस पहले से खुला है, तो
FrameworkSQLiteHelperमें डेटाबेस की पैरंट डायरेक्ट्री को न देखें. (5de86b8) - यह देखने के लिए कि डेटाबेस पहले से खुला है या नहीं,
isOpenInternalचेक का इस्तेमाल करें. (e91fb35) RoomकेacquireTransactionThread()में, रीएंट्रेंट केस को बेहतर तरीके से हैंडल करने की सुविधा अब उपलब्ध है. (219f98b). लेन-देन को निलंबित करने के दौरान, Room, लेन-देन को लागू करने वाले थ्रेड का इस्तेमाल करता है. साथ ही, इसमें एक इवेंट लूप शुरू करता है. इसके बाद, डेटाबेस से जुड़ी निलंबित कार्रवाइयों को इसमें भेजता है, ताकि वे सभी लेन-देन के कोरूटीन में शामिल हो जाएं. आम तौर पर, लेन-देन की थ्रेड, लेन-देन शुरू करने वाली थ्रेड से अलग होती है. हालांकि, कुछ मामलों में ये एक ही होती हैं. ऐसे मामलों को हैंडल करने के लिए,withTransaction()को फिर से फ़ैक्टर किया गया है, ताकि यह अब कंट्रोल जॉब पर निर्भर न रहे. इसके बजाय, यह लेन-देन थ्रेड मेंrunBlockingके अंदर से लेन-देन ब्लॉक को निलंबित कर देगा.
वर्शन 2.5.0
वर्शन 2.5.0
22 फ़रवरी, 2023
androidx.room:room-paging-guava:2.5.0, androidx.room:room-paging-rxjava2:2.5.0, और androidx.room:room-paging-rxjava3:2.5.0 रिलीज़ किए जाते हैं. वर्शन 2.5.0 में ये बदलाव शामिल हैं.
वर्शन 2.5.0
11 जनवरी, 2023
androidx.room:room-*:2.5.0 रिलीज़ हो गया है. वर्शन 2.5.0 में ये बदलाव शामिल हैं.
2.4.0 के बाद हुए अहम बदलाव
- सभी
room-runtimeसोर्स को Java से Kotlin में बदल दिया गया है. ध्यान दें कि अगर आपका कोड Kotlin में है, तो आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं. ऐसा इसलिए, क्योंकि लाइब्रेरी को Kotlin में बदल दिया गया है. उदाहरण के लिए, किसी भरोसेमंद सोर्स में किया गया ऐसा बदलाव जो काम नहीं करता. अब आपकोInvalidationTrackerमेंonInvalidate()कोObserverमें एलान करना होगा, ताकिSetटाइप का पैरामीटर मिल सके, न किMutableSetटाइप का. इसके अलावा, कुछ गेटर मेथड को प्रॉपर्टी में बदल दिया गया था. इसके लिए, Kotlin फ़ाइलों पर प्रॉपर्टी ऐक्सेस सिंटैक्स की ज़रूरत होती है. अगर कोई गंभीर समस्या आ रही है, तो कृपया गड़बड़ी की शिकायत करें. - नया शॉर्टकट एनोटेशन,
@Upsertजोड़ा गया है. यह एनोटेशन, किसी इकाई को तब शामिल करने की कोशिश करता है, जब कोई यूनीकनेस विवाद न हो. अगर कोई विवाद होता है, तो यह इकाई को अपडेट करता है. (I7aaab, b/241964353) - Room Paging में सहायता के लिए, नए रूम-पेजिंग आर्टफ़ैक्ट
room-paging-rxjava2,room-paging-rxjava3, औरroom-paging-guavaजोड़े गए हैं. @MapInfo(Icc4b5) में, की और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए
वर्शन 2.5.0-rc01
7 दिसंबर, 2022
androidx.room:room-*:2.5.0-rc01 रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये बदलाव शामिल हैं.
- यह रिलीज़,
2.5.0-beta02के जैसी ही है.
वर्शन 2.5.0-beta02
9 नवंबर, 2022
androidx.room:room-*:2.5.0-beta02 रिलीज़ हो गया है. वर्शन 2.5.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Java के ऐरे के व्यवहार से मेल खाने के लिए, क्वेरी आर्ग्युमेंट लेने वाले अलग-अलग एपीआई को इनवेरिएंट (
Array<Any?>) से कॉन्ट्रावेरिएंट (Array<out Any?>) में बदलें. (b/253531073)
वर्शन 2.5.0-beta01
5 अक्टूबर, 2022
androidx.room:room-*:2.5.0-beta01 रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
@Upsertके साथ काम करने वाले कम से कम वर्शन को एपीआई 16 पर प्रतिबंधित करें. ऐसा इसलिए होता है, क्योंकि पुराने एपीआई में प्राइमरी कुंजी की पाबंदी के टकराव की पहचान नहीं की जा सकती. (I5f67f, b/243039555)
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसकी वजह से शैडो टेबल को
.jsonफ़ाइलों के स्कीमा में गलत तरीके से एक्सपोर्ट किया जा रहा था. इससे वे फ़ाइलें खराब हो रही थीं. (I4f83b, b/246751839)
वर्शन 2.5.0-alpha03
24 अगस्त, 2022
androidx.room:room-*:2.5.0-alpha03 रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नया शॉर्टकट एनोटेशन,
@Upsertजोड़ा गया है. यह एनोटेशन, किसी इकाई को तब शामिल करने की कोशिश करता है, जब कोई यूनीकनेस विवाद न हो. अगर कोई विवाद होता है, तो यह इकाई को अपडेट करता है. (I7aaab, b/241964353)
गड़बड़ियां ठीक की गईं
- विदेशी कुंजी की बाधा की अपने-आप जांच के दौरान, Room अब
IllegalStateExceptionके बजायSQLiteConstraintExceptionदिखाएगा. (I328dd) getOpenHelper,getQueryExecutor, औरgetTransactionExecutorके गेटर / प्रॉपर्टी के लिए, Kotlin सोर्स के साथ काम न करने वाले बदलाव को ठीक किया गया. (Iad0ac)
वर्शन 2.5.0-alpha02
1 जून, 2022
androidx.room:room-*:2.5.0-alpha02 रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- रूम पेजिंग की सुविधा के लिए, नए
room-pagingआर्टफ़ैक्टroom-paging-rxjava2,room-paging-rxjava3, औरroom-paging-guavaजोड़े गए हैं.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203666906)
एपीआई में हुए बदलाव
room-runtimeको Java से Kotlin में बदल दिया गया है. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/206859668)ध्यान दें: लाइब्रेरी को Kotlin में बदलने की वजह से, आपको सोर्स के साथ काम न कर पाने से जुड़ी समस्याएं आ सकती हैं. अगर आपका कोड Kotlin में था और Room के पुराने वर्शन को कॉल कर रहा था, तो नए वर्शन को इन मामलों को हैंडल करना होगा. उदाहरण के लिए, किसी भरोसेमंद सोर्स में किया गया ऐसा बदलाव जो काम नहीं करता. अब आपको
InvalidationTrackerमेंonInvalidate()कोObserverमें एलान करना होगा, ताकिSetटाइप का पैरामीटर मिल सके, न किMutableSetटाइप का.@MapInfo(Icc4b5) में, की और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए- सोर्स के साथ काम न करने की समस्या को ठीक करें, ताकि प्रॉपर्टी गेटर में
@Ignoreको फिर से अनुमति दी जा सके. (Ifc2fb)
गड़बड़ियां ठीक की गईं
- डुप्लीकेट कॉलम का पता लगाने वाला अनुमानित एल्गोरिदम. Room अब मल्टीमैप क्वेरी में, एक से ज़्यादा मतलब वाले कॉलम की समस्या को हल करने की कोशिश करेगा. इससे एक ही नाम वाली टेबल के साथ JOIN को, नतीजे के डेटा ऑब्जेक्ट पर सही तरीके से मैप किया जा सकता है. (I4b444, b/201306012, b/212279118)
वर्शन 2.5.0-alpha01
23 फ़रवरी, 2022
androidx.room:room-*:2.5.0-alpha01 रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- उस समस्या को ठीक किया गया है जिसकी वजह से Kotlin सोर्स में Room
@IntDefके इस्तेमाल को लागू नहीं किया जा रहा था. (I75f41, b/217951311) - सोर्स की कंपैटिबिलिटी से जुड़ी समस्या को ठीक किया गया है, ताकि प्रॉपर्टी गेटर में
@Queryको फिर से अनुमति दी जा सके. (I0a09b) - room-common को Java से Kotlin में बदला गया. (I69c48, b/206858235)
ध्यान दें: आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं, क्योंकि लाइब्रेरी को Kotlin में बदलते समय कुछ प्रॉपर्टी को कंपैनियन ऑब्जेक्ट में ले जाया गया है. अगर आपका कोड Kotlin में था और Room के पुराने वर्शन को कॉल कर रहा था, तो इन प्रॉपर्टी को ऐक्सेस करते समय नए वर्शन को ".Companion" सफ़िक्स की ज़रूरत होगी.
- room-migration को Java से Kotlin में बदला गया. (I2724b, b/206858622)
room-runtimeमें मौजूदpagingसे जुड़ी फ़ाइलों को Java से Kotlin में बदल दिया गया है. (I82fc8, b/206859668)- मल्टी-प्रोसेस लॉक और FrameworkSQLite* लेवल पर इस्तेमाल करने के लिए एपीआई जोड़ा गया है. इससे, मल्टी-प्रोसेस में पहली बार डेटाबेस बनाने और माइग्रेशन को सुरक्षित रखने में मदद मिलती है. (Ied267, b/193182592)
गड़बड़ियां ठीक की गईं
- Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई.
रूम में यह थोड़ा बदलाव किया गया है. अब यह फ़ंक्शन के सोर्स नेम का इस्तेमाल करेगा. ऐसा, फ़ंक्शन को गेटर/सेटर के तौर पर प्रॉपर्टी से मैच करते समय किया जाएगा. इससे पहले, यह फ़ंक्शन के JVM नेम का इस्तेमाल करता था. यह नाम, इंटरनल फ़ंक्शन/प्रॉपर्टी के लिए अलग होता है.
अगर आपने गेटर/सेटर को निजी प्रॉपर्टी से मैच करने के लिए, कस्टम
@JvmNameएनोटेशन का इस्तेमाल किया है, तो कृपया अपडेट के बाद जनरेट किए गए कोड की दोबारा जांच करें (If6531, b/205289020)
वर्शन 2.4.3
वर्शन 2.4.3
27 जुलाई, 2022
androidx.room:room-*:2.4.3 रिलीज़ हो गया है. वर्शन 2.4.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से Room, Kotlin 1.7 में सस्पेंड फ़ंक्शन को पहचान नहीं पाता था (b/236612358)
वर्शन 2.4.2
वर्शन 2.4.2
23 फ़रवरी, 2022
androidx.room:room-*:2.4.2 रिलीज़ हो गया है. वर्शन 2.4.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Dao
@Transactionसस्पेंड फ़ंक्शन के लिए कोड जनरेट करने से जुड़ी समस्या को ठीक किया गया है. इस फ़ंक्शन के मुख्य हिस्से में,-Xjvm-default=allया इसके बराबर के कंपाइलर के साथ कंपाइल करने की वजह से, डिफ़ॉल्ट इंटरफ़ेस मेथड जनरेट होती है. (Ia4ce5) - उस बग को ठीक किया गया है जिसमें Room,
Array<ByteArray>रिटर्न टाइप वाली क्वेरी के तरीके के लिए कोड जनरेट करता है. (If086e, b/213789489)
वर्शन 2.4.1
वर्शन 2.4.1
12 जनवरी, 2022
androidx.room:room-*:2.4.1 रिलीज़ हो गया है. वर्शन 2.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई.
रूम में यह थोड़ा बदलाव किया गया है. अब यह फ़ंक्शन के सोर्स नेम का इस्तेमाल करेगा. ऐसा, फ़ंक्शन को गेटर/सेटर के तौर पर प्रॉपर्टी से मैच करते समय किया जाएगा. इससे पहले, यह फ़ंक्शन के JVM नेम का इस्तेमाल करता था. यह नाम, इंटरनल फ़ंक्शन/प्रॉपर्टी के लिए अलग होता है.
अगर आपने गेटर/सेटर को निजी प्रॉपर्टी से मैच करने के लिए, कस्टम
@JvmNameएनोटेशन का इस्तेमाल किया है, तो कृपया अपडेट के बाद जनरेट किए गए कोड की दोबारा जांच करें (If6531, b/205289020)
वर्शन 2.4.0
वर्शन 2.4.0
15 दिसंबर, 2021
androidx.room:room-*:2.4.0 रिलीज़ हो गया है. वर्शन 2.4.0 में ये बदलाव शामिल हैं.
2.3.0 के बाद हुए अहम बदलाव
- अपने-आप माइग्रेट होने की सुविधा: Room अब अपने-आप माइग्रेट होने की सुविधा के लिए एक एपीआई उपलब्ध कराता है. हालांकि, इसके लिए स्कीमा एक्सपोर्ट करना ज़रूरी है. Room को यह बताने के लिए कि उसे नई प्रॉपर्टी के लिए अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए,
@Database#autoMigrationsका इस्तेमाल किया जा सकता है. इससे यह तय किया जा सकता है कि किस वर्शन से किस वर्शन में अपने-आप माइग्रेट होना है. जब Room को टेबल और कॉलम के नाम बदलने या उन्हें मिटाने के बारे में अतिरिक्त जानकारी की ज़रूरत होती है, तब@AutoMigrationएनोटेशन, ऐसी जानकारी देने वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए,@AutoMigrationदस्तावेज़ देखें. - अपने-आप माइग्रेट होने की सुविधा में डिपेंडेंसी इंजेक्शन:
@ProvidedAutoMigrationSpecएक नया एपीआई है. इसका इस्तेमाल यह एलान करने के लिए किया जाता है किAutoMigrationSpecको रनटाइम के दौरानRoomDatabase.Builder#addAutoMigrationSpec()के ज़रिए उपलब्ध कराया जाएगा. इससे, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को इस तरह के स्पेसिफ़िकेशन देने की अनुमति मिलती है, जब उन्हें जटिल डिपेंडेंसी की ज़रूरत होती है. - अपने-आप होने वाले माइग्रेशन के लिए, माइग्रेशन टेस्ट हेल्पर की सुविधा: Room के
MigrationTestHelperको अपडेट किया गया है, ताकि यह अपने-आप होने वाले माइग्रेशन के साथ काम कर सके. इसके लिए, एक नया कंस्ट्रक्टर एपीआई उपलब्ध कराया गया है, जो टेस्ट किए जा रहे डेटाबेस क्लास को स्वीकार करता है. इससे हेल्पर कोrunMigrationsAndValidateके दौरान, ऑटो माइग्रेशन को उसी तरह अपने-आप जोड़ने की अनुमति मिलती है. - Room-Paging की सुविधा:
androidx.room:room-pagingको रिलीज़ कर दिया गया है. इससे Room की क्वेरी के लिए, Paging 3.0 की सुविधा मिलती है. इससेandroidx.paging.PagingSourceमिलता है. - रिलेशनल क्वेरी के तरीके: Room अब multimap रिटर्न टाइप
@Daoतरीकों के साथ काम करता है. ये JOIN स्टेटमेंट के लिए फ़ायदेमंद होते हैं. मल्टीमैप के लिए,Map,SparseArray,LongSparseArrayके साथ-साथ Guava केImmutableMap,ImmutableSetMultimap, औरImmutableListMultimapजैसे टाइप इस्तेमाल किए जा सकते हैं.
वर्शन 2.4.0-rc01
1 दिसंबर, 2021
androidx.room:room-*:2.4.0-rc01 रिलीज़ हो गया है. वर्शन 2.4.0-rc01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Kotlin 1.6 के साथ काम करने के लिए, Room की KSP पर निर्भरता को
1.6.0-1.0.1पर अपडेट करें
वर्शन 2.4.0-beta02
17 नवंबर, 2021
androidx.room:room-*:2.4.0-beta02 रिलीज़ हो गया है. वर्शन 2.4.0-beta02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- हमने @MapInfo में SparseArray और LongSparseArray के लिए सहायता जोड़ी है. (Ic91a2b/138910317)
गड़बड़ियां ठीक की गईं
- हमने एक नया TypeConverter analyzer जोड़ा है. यह टाइप में मौजूद nullability की जानकारी को ध्यान में रखता है. यह जानकारी सिर्फ़ KSP में उपलब्ध है. इसलिए, यह सिर्फ़ KSP में डिफ़ॉल्ट रूप से चालू होती है. अगर इससे कोई समस्या होती है, तो एनोटेशन प्रोसेसर को room.useNullAwareTypeAnalysis=false पास करके, इसे बंद किया जा सकता है. अगर ऐसा होता है, तो कृपया गड़बड़ी की शिकायत करें, क्योंकि आने वाले समय में इस फ़्लैग को हटा दिया जाएगा. इस नए TypeConverter analyzer के साथ, सिर्फ़ गैर-शून्य TypeConverters उपलब्ध कराने का सुझाव दिया जाता है. ऐसा इसलिए, क्योंकि नए analyzer में उन्हें शून्य की जांच के साथ रैप करने की सुविधा होती है. ध्यान दें कि इसका असर उन उपयोगकर्ताओं पर नहीं पड़ेगा जो एनोटेशन प्रोसेसर के तौर पर KAPT या Java का इस्तेमाल कर रहे हैं. ऐसा इसलिए, क्योंकि KSP के उलट, इनके टाइप में नल वैल्यू की जानकारी नहीं होती है. (Ia88f9, b/193437407)
- उस बग को ठीक किया गया है जिसमें आईसीयू टोकनाइज़र का इस्तेमाल करने के लिए घोषित की गई किसी एफ़टीएस इकाई के साथ SQL गड़बड़ी होने पर, Room कंपाइल नहीं हो पाता था. (I00db9, b/201753224)
- वर्शन के बीच एंबेड की गई इकाई में जोड़े गए नए कॉलम से जुड़ी, अपने-आप माइग्रेट होने की समस्या को ठीक किया गया है. (I5fcb1b/193798291)
- हमने LEFT JOIN क्वेरी में, रिलेशनल क्वेरी के तरीके से मिलने वाले नतीजों से जुड़ी समस्या को ठीक कर दिया है. इन बदलावों के बाद, अगर एक से ज़्यादा मैपिंग मौजूद है, तो किसी कुंजी के लिए लौटाए गए कलेक्शन में अमान्य वैल्यू ऑब्जेक्ट शामिल नहीं होगा. ऐसा तब होगा, जब वह कर्सर में नहीं मिलता है. अगर कोई मान्य वैल्यू नहीं मिलती है, तो कुंजी को खाली कलेक्शन पर मैप किया जाएगा. (Id5552b/201946438)
- अपने-आप माइग्रेट होने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, कॉलम के नामों में SQLite कीवर्ड को एस्केप नहीं किया जा सका. (Idbed4b/197133152)
वर्शन 2.4.0-beta01
13 अक्टूबर, 2021
androidx.room:room-*:2.4.0-beta01 रिलीज़ हो गया है. वर्शन 2.4.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अपने-आप माइग्रेट होने की सुविधा से जुड़ी एक समस्या को ठीक किया गया है. इस समस्या में, अपने-आप माइग्रेट होने की सुविधा के तहत, नए कॉलम तब नहीं जुड़ते थे, जब उसी सुविधा के तहत माइग्रेट होने वाली किसी दूसरी टेबल में भी उसी नाम का नया कॉलम होता था. (Ia5db5, b/200818663)
- room-paging से जनरेट किया गया PagingSource अब
RoomDatabase.Builderसे पास किए गएqueryExecutorका इस्तेमाल करता है. इसलिए, इसे पहलेDispatchers.IOके बजाय बदला जा सकता है. (Iae259)
वर्शन 2.4.0-alpha05
29 सितंबर, 2021
androidx.room:room-*:2.4.0-alpha05 रिलीज़ हो गया है. वर्शन 2.4.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- UUID के लिए, पहले से बना हुआ टाइप कन्वर्टर जोड़ा गया. (I671e8, b/73132006)
एपीआई में हुए बदलाव
TypeConverters एनोटेशन में एक नई प्रॉपर्टी जोड़ी गई है. इससे डेवलपर, पहले से मौजूद Enum और UUID कन्वर्टर को बंद कर सकते हैं. डिफ़ॉल्ट रूप से, ये कन्वर्टर चालू होते हैं. हालांकि, आपके पास इन्हें किसी स्कोप या पूरे डेटाबेस के लिए बंद करने का विकल्प होता है. ज़्यादा जानकारी के लिए, TypeConverters का दस्तावेज़ देखें. (36ae9e, b/195413406)
@MapInfoएनोटेशन के ज़रिए, DAO में Multimap के लिए नॉन-POJO कुंजियों/वैल्यू का इस्तेमाल किया जा सकता है. (I4d704)
अगर मैप के लिए कुंजी या वैल्यू कॉलम, किसी एक ही कॉलम से लिए गए हैं, तो @MapInfo फ़ंक्शन का इस्तेमाल करना ज़रूरी होगा. उदाहरण देखें:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- Room के साथ Paging3 का इस्तेमाल करते समय,
room-pagingको ज़रूरी आर्टफ़ैक्ट के तौर पर सेट करें. (Ieaffe)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें मल्टीमैप क्वेरी के नतीजों को सही क्रम में नहीं लगाया जाता था. ऐसा तब होता था, जब क्वेरी में मैप की कुंजी के कॉलम का ORDER BY क्लॉज़ शामिल होता था. (I6b887)
बाहरी योगदान
- @Index में इंडेक्स का क्रम तय करने के लिए, नया एपीआई जोड़ा गया. निकिता ज़ेलोंकिन को धन्यवाद. (I033fc)
वर्शन 2.4.0-alpha04
21 जुलाई, 2021
androidx.room:room-*:2.4.0-alpha04 रिलीज़ हो गया है. वर्शन 2.4.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
Room अब मल्टीमैप रिटर्न टाइप
@Daoतरीकों के साथ काम करता है. ये JOIN स्टेटमेंट के लिए फ़ायदेमंद होते हैं. मल्टीमैप के लिए,Mapके साथ-साथ Guava केImmutableMap,ImmutableSetMultimap, औरImmutableListMultimapका इस्तेमाल किया जा सकता है.यहां मल्टीमैप क्वेरी के उदाहरण दिए गए हैं:
वन-टू-वन रिलेशन मैप
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>एक से कई संबंधों वाला मैप (स्टैंडर्ड मल्टीमैप)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>मल्टीमैप के नतीजे को, एसिंक रिटर्न टाइप के साथ भी रैप किया जा सकता है. जैसे,
LiveData, Rx’sObservableया कोरूटीनFlow.
रूम-पेजिंग
androidx.room:room-pagingको रिलीज़ किया गया है. इसमें Room की उन क्वेरी के लिए, Paging 3.0 की नेटिव सहायता उपलब्ध कराई गई है जोandroidx.paging.PagingSourceदिखाती हैं.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }यह आर्टफ़ैक्ट, Room से जनरेट किए गए
androidx.paging.PagingSourceको Paging 3.0 API पर बनाए गए आर्टफ़ैक्ट से बदल देता है. PagingSource को लागू करने का नया तरीका, कुंजियों को अलग-अलग तरीके से पार्स करता है. इसलिए, Room के PagingSource को मैन्युअल तरीके से दी गई किसी भी कुंजी को इस व्यवहार में हुए बदलाव के बारे में बताना होगा. इसमें Pager के कंस्ट्रक्टर के ज़रिए पास की गई initialKey भी शामिल है. पेज,Keyसे लोड होना शुरू हो जाएंगे. साथ ही,Keyसबसे पहले लोड होने वाला आइटम होगा. यह मौजूदा व्यवहार से अलग है. इसमेंLoadParams.Refresh.Keyको उपयोगकर्ता की स्क्रोल पोज़िशन माना जाता है और आइटम को कुंजी से पहले और बाद में, दोनों जगह लोड किया जाता है.आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. ऑप्ट-आउट करने पर, Paging 3.0 के लिए मौजूदा सहायता का इस्तेमाल किया जाएगा. यह सहायता Room 2.3 में शुरू की गई थी. हालांकि, आने वाले समय में रिलीज़ होने वाले नए वर्शन में, Room with Paging 3.0 का इस्तेमाल करने वाले लोगों के लिए, यह आर्टफ़ैक्ट इस्तेमाल करना ज़रूरी हो जाएगा. ऑप्ट-इन करने के लिए, अपने क्लासपाथ में नया room-paging आर्टफ़ैक्ट जोड़ें. अगर Gradle का इस्तेमाल किया जा रहा है, तो build.gradle में यह स्निपेट जोड़ा जा सकता है:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
गड़बड़ियां ठीक की गईं
- विदेशी कुंजी के उल्लंघन को मैनेज करने के बारे में, अपने-आप माइग्रेट होने की सुविधा से जुड़ी समस्या को ठीक किया गया है. (b/190113935)
वर्शन 2.4.0-alpha03
16 जून, 2021
androidx.room:room-*:2.4.0-alpha03 रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Room के
MigrationTestHelperको अपडेट करें, ताकि अपने-आप माइग्रेट होने की सुविधा काम कर सके. इसके लिए, एक नया कंस्ट्रक्टर एपीआई उपलब्ध कराएं, जो जांच के दायरे में आने वाली डेटाबेस क्लास को स्वीकार करता है. इससे हेल्पर कोrunMigrationsAndValidateके दौरान, ऑटो माइग्रेशन को उसी तरह अपने-आप जोड़ने की अनुमति मिलती है.
गड़बड़ियां ठीक की गईं
Apple के M1 चिप के साथ काम करने के लिए, Room की SQLite नेटिव लाइब्रेरी से जुड़ी समस्या ठीक की गई है. (b/174695268
उस समस्या को ठीक किया गया है जिसमें @Transaction फ़ंक्शन का रिटर्न टाइप Flow होने पर, Room से गड़बड़ी का मैसेज नहीं मिलता था (I56ddd, b/190075899)
इंडेक्स से जुड़ी ऑटो माइग्रेशन की समस्या ठीक की गई. b/177673291
डिपेंडेंसी से जुड़े अपडेट
- Room के लिए KSP का इस्तेमाल करने की सुविधा अब KSP
1.5.10-1.0.0-beta01पर निर्भर करती है. (1ecb11, b/160322705)
वर्शन 2.4.0-alpha02
5 मई, 2021
androidx.room:room-*:2.4.0-alpha02 रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
@ProvidedAutoMigrationSpecएक नया एपीआई है. इसका इस्तेमाल यह एलान करने के लिए किया जाता है किAutoMigrationSpecको रनटाइम के दौरानRoomDatabase.Builder#addAutoMigrationSpec()के ज़रिए उपलब्ध कराया जाएगा. इससे, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को इस तरह के स्पेसिफ़िकेशन देने की अनुमति मिलती है, जब उन्हें जटिल डिपेंडेंसी की ज़रूरत होती है.
गड़बड़ियां ठीक की गईं
- अपने-आप होने वाले माइग्रेशन से जुड़ी समस्या ठीक की गई है. इस समस्या में,
@DatabaseViewको ठीक से फिर से नहीं बनाया जा रहा था.
बाहरी योगदान
- Room के
JournalMode.TRUNCATEमें मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से,InvalidationTrackerकॉलबैक को कभी-कभी अमान्य तरीके से, बहुत देर से या बिलकुल भी लागू नहीं किया जा रहा था.Uli Bubenheimer | bubenheimer@users.noreply.github.comका धन्यवाद (b/154040286)
वर्शन 2.4.0-alpha01
21 अप्रैल, 2021
androidx.room:room-*:2.4.0-alpha01 रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अपने-आप माइग्रेट होने की सुविधा: Room अब अपने-आप माइग्रेट होने की सुविधा के लिए एक एपीआई उपलब्ध कराता है. हालांकि, इसके लिए स्कीमा एक्सपोर्ट करना ज़रूरी है. Room को यह बताने के लिए कि उसे नई प्रॉपर्टी के लिए अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए,
@Database#autoMigrationsका इस्तेमाल किया जा सकता है. इससे यह तय किया जा सकता है कि किस वर्शन से किस वर्शन में अपने-आप माइग्रेट होना है. जब Room को टेबल और कॉलम के नाम बदलने या उन्हें मिटाने के बारे में अतिरिक्त जानकारी की ज़रूरत होती है, तब@AutoMigrationएनोटेशन, ऐसी जानकारी देने वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए,@AutoMigrationदस्तावेज़ देखें.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें Room के स्कीमा की पुष्टि करने की सुविधा, अतिरिक्त ब्रैकेट वाले
defaultValueकी गलत तरीके से पुष्टि कर रही थी. b/182284899
वर्शन 2.3.0
वर्शन 2.3.0
21 अप्रैल, 2021
androidx.room:room-*:2.3.0 रिलीज़ हो गया है. वर्शन 2.3.0 में ये बदलाव शामिल हैं.
2.2.0 के बाद हुए मुख्य बदलाव
- इनम के लिए पहले से मौजूद सपोर्ट: अगर कोई टाइप कन्वर्टर नहीं दिया गया है, तो Room अब डिफ़ॉल्ट रूप से, Enum को String और इसके उलट टाइप कन्वर्टर का इस्तेमाल करेगा. अगर किसी enum के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट टाइप कन्वर्टर के बजाय इसका इस्तेमाल करेगा.
- क्वेरी कॉलबैक: Room अब एक सामान्य कॉलबैक एपीआई RoomDatabase.QueryCallback उपलब्ध कराता है. इसका इस्तेमाल तब किया जाता है, जब क्वेरी को एक्ज़ीक्यूट किया जाना हो. यह डीबग बिल्ड में लॉग इन करने के लिए काम आ सकता है.
RoomDatabase.Builder#setQueryCallback()के ज़रिए कॉलबैक सेट किया जा सकता है. - पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाने के लिए एपीआई: Room में अब एपीआई उपलब्ध हैं. इनकी मदद से, पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाया जा सकता है. यह डेटाबेस, इनपुट स्ट्रीम से पढ़ा जाता है. इससे ऐसे मामलों में मदद मिलती है, जब प्री-पैकेज किए गए डेटाबेस को gzip किया गया हो.
- टाइप कन्वर्टर उपलब्ध कराए गए: Room में अब टाइप कन्वर्टर के इंस्टेंस उपलब्ध कराने के लिए एपीआई हैं, ताकि ऐप्लिकेशन उनके इनिशियलाइज़ेशन को कंट्रोल कर सके. Room को उपलब्ध कराए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन @ProvidedTypeConverter का इस्तेमाल करें.
- RxJava3 के साथ काम करता है: Room अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह ही, ऐसे डीएओ तरीकों का एलान किया जा सकता है जिनका रिटर्न टाइप Flowable, Single, Maybe, और Completable होता है. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट
androidx.room:room-rxjava3उपलब्ध है. - Paging 3.0 के साथ काम करता है: Room अब
@Queryएनोटेट किए गए उन तरीकों के लिए कोड जनरेट करेगा जिनका रिटर्न टाइपandroidx.paging.PagingSourceहै.
वर्शन 2.3.0-rc01
24 मार्च, 2021
androidx.room:room-*:2.3.0-rc01 रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, Room से बनाई गई Coroutine Flow क्वेरी को निलंबित किए गए
withTransactionब्लॉक में इस्तेमाल नहीं किया जा सकता था. (I797bf)
वर्शन 2.3.0-beta03
10 मार्च, 2021
androidx.room:room-*:2.3.0-beta03 रिलीज़ हो गया है. वर्शन 2.3.0-beta03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- KSP के लिए, इंक्रीमेंटल कंपाइलेशन की सुविधा जोड़ी गई. (I031c1, b/176453350)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें मुख्य थ्रेड पर PagingSource बनाने से, एएनआर ट्रिगर हो सकता था. (I42b74, b/181221318)
@ExperimentalRoomApiकी दिखने की सेटिंग को पैकेज के लिए निजी के बजाय सार्वजनिक पर सेट किया गया. (b/181356119)
बाहरी योगदान
- इस विकल्प को चालू करने पर, Room को
@Queryएनोटेट किए गए डीएओ मैथड में POJO रिटर्न टाइप स्वीकार करने की अनुमति मिलती है. ऐसा तब होता है, जब इसे@SkipQueryVerificationके साथ भी एनोटेट किया गया हो. रूम, क्वेरी के नतीजे को POJO रिटर्न टाइप के तौर पर दिखाने की पूरी कोशिश करेगा. यह ठीक उसी तरह से काम करेगा जिस तरह@RawQueryएनोटेट किए गए डीएओ के तरीके के लिए किया जाता है. ‘Markus Riegel | hey@marcorei.com’ को धन्यवाद. (I45acb)
वर्शन 2.3.0-beta02
18 फ़रवरी, 2021
androidx.room:room-*:2.3.0-beta02 रिलीज़ हो गया है. वर्शन 2.3.0-beta02 में ये बदलाव शामिल हैं.
नई सुविधाएं
Room अब Kotlin Symbol Processing KSP के साथ काम करता है. हालांकि, यह सुविधा अभी एक्सपेरिमेंट के तौर पर उपलब्ध है.
KSP, KAPT की जगह इस्तेमाल किया जाता है. इससे एनोटेशन प्रोसेसर को Kotlin कंपाइलर पर नेटिव तौर पर चलाया जा सकता है. इससे बिल्ड करने में लगने वाला समय काफ़ी कम हो जाता है.
KSP के साथ Room का इस्तेमाल करने के लिए, KSP Gradle प्लगिन लागू किया जा सकता है. साथ ही, अपनी बिल्ड फ़ाइल में
kaptकॉन्फ़िगरेशन कोkspसे बदला जा सकता है. उदाहरण के लिए,kapt 'androidx.room:room-compiler:2.3.0-beta02'के बजायksp 'androidx.room:room-compiler:2.3.0-beta02'का इस्तेमाल करें. ज़्यादा जानकारी के लिए, KSP का दस्तावेज़ देखें.ध्यान दें कि KSP पर अब भी एक्सपेरिमेंट किया जा रहा है. इसलिए, प्रोडक्शन कोड के लिए KAPT का इस्तेमाल करने का सुझाव दिया जाता है. बिल्ड टाइम में कमी सिर्फ़ तब लागू होती है, जब KAPT का इस्तेमाल करने वाले कोई अन्य प्रोसेसर न हों. ऐसी समस्याएं जिनके बारे में पहले से जानकारी है उन्हें देखने के लिए, b/160322705 पर जाएं.
वर्शन 2.3.0-beta01
27 जनवरी, 2021
androidx.room:room-*:2.3.0-beta01 रिलीज़ हो गया है. वर्शन 2.3.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अपने-आप बंद होने वाले डेटाबेस: Room में अब ऐसे डेटाबेस को बंद करने की सुविधा है जिन्हें तय समय के बाद ऐक्सेस नहीं किया जाता. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसे
RoomDatabase.Builder#setAutoCloseTimeout()को कॉल करके चालू किया जा सकता है. यह सुविधा, एक से ज़्यादा डेटाबेस वाले ऐप्लिकेशन के लिए काम की है.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें अलग-अलग टकराव की रणनीतियों वाले कई
@Updateया@Deleteतरीकों के साथ Dao तरीके, सिर्फ़ एक रणनीति वाला कोड जनरेट करते थे. इससे, तय की गई रणनीति को अनदेखा कर दिया जाता था. (/I0b90d, b/176138543)
वर्शन 2.3.0-alpha04
16 दिसंबर, 2020
androidx.room:room-*:2.3.0-alpha04 रिलीज़ हो गया है. वर्शन 2.3.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Room अब एक सामान्य कॉलबैक एपीआई
RoomDatabase.QueryCallbackउपलब्ध कराता है. इसका इस्तेमाल तब किया जाता है, जब क्वेरी को एक्ज़ीक्यूट किया जाता है. यह डीबग बिल्ड में लॉग इन करने के लिए काम आ सकता है.RoomDatabase.Builder#setQueryCallback()के ज़रिए कॉलबैक सेट किया जा सकता है. (Iaa513, b/174478034, b/74877608) - अगर कोई टाइप कन्वर्टर नहीं दिया जाता है, तो रूम अब डिफ़ॉल्ट रूप से Enum से String और इसके उलट टाइप कन्वर्टर का इस्तेमाल करेगा. अगर किसी enum के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट टाइप कन्वर्टर के बजाय इसका इस्तेमाल करेगा. (b/73132006)
आम समस्या
- अगर Enum के लिए, सिर्फ़ पढ़ने के लिए इस्तेमाल होने वाला टाइप कन्वर्टर पहले से मौजूद है, तो Room गलती से String से Enum में बदलने वाले बिल्ट-इन कन्वर्टर का इस्तेमाल कर सकता है. ऐसा हो सकता है कि आपको ऐसा न करना हो. यह एक आम समस्या है. इसे ठीक करने के लिए, इसे दोनों भाषाओं में बदलने वाला टूल बनाया जा सकता है. देखें: b/175707691
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी समस्या को ठीक किया है जिसमें Room, JDK के नए वर्शन में इंक्रीमेंटल एनोटेशन प्रोसेसिंग को गलत तरीके से बंद कर देता था. (b/171387388)
- जब कई क्लास लोडर का इस्तेमाल किया जाता है, तब Room को जनरेट की गई क्लास ढूंढने में आने वाली समस्या को ठीक किया गया है. ‘Serendipity | 892449346@qq.com’ खाते से जुड़ी समस्या को ठीक करने के लिए धन्यवाद! (b/170141113)
- हमने उस समस्या को ठीक कर दिया है जिसमें Room, Kotlin
@Daoके लिए गलत कोड जनरेट करता था. ऐसा तब होता था, जब में एक ऐसी बेस क्लास होती थी जिसके जेनेरिक, JVM में प्रिमिटिव होते हैं. (b/160258066)
बाहरी योगदान
- अगर WAL मोड चालू है और एपीआई 16 या इससे ज़्यादा है, तो Room अब डिफ़ॉल्ट रूप से
beginTransactionNonExclusiveका इस्तेमाल करेगा. ‘अहमद आई. Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)
वर्शन 2.3.0-alpha03
14 अक्टूबर, 2020
androidx.room:room-*:2.3.0-alpha03 रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
Room में अब टाइप कन्वर्टर के इंस्टेंस उपलब्ध कराने के लिए एपीआई हैं, ताकि ऐप्लिकेशन उनके इनिशियलाइज़ेशन को कंट्रोल कर सके. Room को उपलब्ध कराए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन
@ProvidedTypeConverterका इस्तेमाल करें. ‘mzgreen yairobbe@gmail.com’ को धन्यवाद. (Ie4fa5, b/121067210)Room में अब ऐसे एपीआई हैं जिनकी मदद से, पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाया जा सकता है. इस डेटाबेस को इनपुट स्ट्रीम से पढ़ा जाता है. इससे ऐसे मामलों में मदद मिलती है, जब प्री-पैकेज किए गए डेटाबेस को gzip किया गया हो. ‘अहमद एल-हेल्व ahmedre@gmail.com’ (3e6792, b/146911060) को धन्यवाद
एपीआई में हुए बदलाव
@ForeignKeyएनोटेशन में टारगेट एट्रिब्यूट की वैल्यू जोड़ी गई है. इससे@Entityएनोटेशन के बाहर इसका इस्तेमाल नहीं किया जा सकेगा. (Iced1e)RoomDatabase.javaमें मौजूदmCallbacksफ़ील्ड को अब छिपा दिया गया है. (d576cb, b/76109329)
गड़बड़ियां ठीक की गईं
TypeConverters के दस्तावेज़ में अपडेट किया गया है. इसमें यह साफ़ तौर पर बताया गया है कि TypeConverters का इस्तेमाल सिर्फ़ कॉलम / फ़ील्ड को बदलने के लिए किया जा सकता है, न कि लाइनों को बदलने के लिए. (I07c56, b/77307836)
DaoProcessor को अपडेट किया गया है, ताकि Kotlin "प्रिमिटिव" के साथ जेनेरिक सुपर टाइप वाले Dao पर कंपाइलर की गड़बड़ी को ठीक किया जा सके. (Ice6bb, b/160258066)
ऑब्ज़र्वर को जोड़ने/हटाने के तरीकों से जुड़े दस्तावेज़ को अपडेट किया गया है, ताकि थ्रेडिंग के बारे में ज़्यादा जानकारी दी जा सके (Ifd1d9, b/153948821)
Room में, rowid कॉलम का एलान करने वाली FTS टेबल की गलत तरीके से पुष्टि करने से जुड़ी समस्या को ठीक किया गया है. (d62ebc, b/145858914)
बाहरी योगदान
टर्किश (5746e3) से जुड़ी, अपरकेस/लोअरकेस वाली स्थानीय भाषा की समस्याएं ठीक की गईं, b/68159494
Android Lollipop (d1cfc7, b/162431855) पर आने वाली समस्याओं से बचने के लिए,
RoomDatabaseमें मौजूदConcurrentHashMapकोCollections.synchronizedMap()से बदलेंप्रीपैकेज किए गए डेटाबेस को कॉपी किए जाने पर, onOpenPrepackagedDatabase कॉलबैक जोड़ें. (I1ba74, b/148934423)
वर्शन 2.3.0-alpha02
22 जुलाई, 2020
androidx.room:room-*:2.3.0-alpha02 रिलीज़ हो गया है. वर्शन 2.3.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- RxJava3 के साथ काम करता है: Room अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह, ऐसे डीएओ तरीकों का एलान किया जा सकता है जिनका रिटर्न टाइप Flowable, Single, Maybe, और Completable है. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट
androidx.room:room-rxjava3उपलब्ध है. (b/152427884)
एपीआई में हुए बदलाव
- अब Kotlin ऑब्जेक्ट क्लास में
@TypeConverterको एलान किया जा सकता है. (b/151110764) Roomइंक्रीमेंटल एनोटेशन प्रोसेसिंग का विकल्प अब डिफ़ॉल्ट रूप से चालू है. (b/112110217)
वर्शन 2.3.0-alpha01
10 जून, 2020
androidx.room:room-*:2.3.0-alpha01 रिलीज़ हो गया है. वर्शन 2.3.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
Paging 3.0 के साथ काम करता है: Room अब
@Queryएनोटेट किए गए उन तरीकों के लिए कोड जनरेट करेगा जिनका रिटर्न टाइपandroidx.paging.PagingSourceहै.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
एपीआई में हुए बदलाव
@RewriteQueriesToDropUnusedColumnsएक नया एनोटेशन है. इसकी मदद से Room, क्वेरी में ‘*’ प्रोजेक्शन को फिर से लिखता है, ताकि नतीजे में इस्तेमाल न किए गए कॉलम हटा दिए जाएं.- प्रोसेसर के विकल्प
room.expandProjectionको अब बंद कर दिया गया है. स्टार प्रोजेक्शन के साथ रूम ऑप्टिमाइज़ करने वाली क्वेरी की जगह,@RewriteQueriesToDropUnusedColumnsका इस्तेमाल करें. ध्यान दें कि@RewriteQueriesToDropUnusedColumns, कॉलम के टकराव को हल करने के लिएroom.expandProjectionकी जगह नहीं लेता है. यह सुविधा, उन रिटर्न टाइप के लिए उपलब्ध कराई जाती है जिनमें@Embeddedफ़ील्ड शामिल होते हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें Room, इंक्रीमेंटल एनोटेशन प्रोसेसर को चालू करने के लिए इस्तेमाल किए गए JDK वर्शन का सही तरीके से पता नहीं लगा पाता था. Blaz Solar (me@blaz.solar) को धन्यवाद (b/155215201)
- Room अब एनोटेशन प्रोसेसर के साथ ANTLR डिपेंडेंसी को एम्बेड करता है, ताकि ANTLR का इस्तेमाल करने वाले अन्य प्रोसेसर के साथ वर्शन के टकराव से बचा जा सके. (b/150106190)
वर्शन 2.2.6
वर्शन 2.2.6
16 दिसंबर, 2020
androidx.room:room-*:2.2.6 रिलीज़ हो गया है. वर्शन 2.2.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी समस्या को ठीक किया है जिसमें Room, JDK के नए वर्शन में इंक्रीमेंटल एनोटेशन प्रोसेसिंग को गलत तरीके से बंद कर देता था. (b/171387388)
वर्शन 2.2.5
वर्शन 2.2.5
18 मार्च, 2020
androidx.room:room-*:2.2.5 रिलीज़ हो गया है. वर्शन 2.2.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
MultiInstanceInvalidationServiceको directBootAware के तौर पर सेट करें. ‘Mygod contact-git@mygod.be’ (b/148240967) को धन्यवाद- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, एक से ज़्यादा इंस्टेंस के अमान्य होने की सुविधा चालू होने पर ऐप्लिकेशन क्रैश हो जाता था. ऐसा तब होता था, जब डेटाबेस में FTS इकाई मौजूद होती थी. (b/148969394)
- Room annotation processor में SQLite नेटिव लाइब्रेरी लोड करते समय आने वाली समस्या को ठीक किया गया है. इस समस्या की वजह से, पैरलल कंपाइलेशन की वजह से कंपाइलर क्रैश हो जाता था. (b/146217083)
वर्शन 2.2.4
वर्शन 2.2.4
19 फ़रवरी, 2020
androidx.room:room-common:2.2.4, androidx.room:room-compiler:2.2.4, androidx.room:room-guava:2.2.4, androidx.room:room-ktx:2.2.4, androidx.room:room-migration:2.2.4, androidx.room:room-runtime:2.2.4, androidx.room:room-rxjava2:2.2.4, और androidx.room:room-testing:2.2.4 रिलीज़ किए जाते हैं. वर्शन 2.2.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- लेन-देन को निलंबित करने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, लेन-देन शुरू होने से पहले ही कोराउटीन को तुरंत रद्द कर दिया जाता था. (b/148181325)
- JDK 9 का इस्तेमाल करके बिल्ड करते समय, @Generated का गलत तरीके से इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया है. (b/146538330)
- हमने उस समस्या को ठीक कर दिया है जिसमें Kotlin में मौजूद DAO इंटरफ़ेस में कोई कॉन्क्रीट फ़ंक्शन होने पर, Room गलत कोड जनरेट करता था. (b/146825845)
वर्शन 2.2.3
वर्शन 2.2.3
18 दिसंबर, 2019
androidx.room:room-*:2.2.3 रिलीज़ हो गया है. वर्शन 2.2.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें Room, ऐसे डेटाबेस की पुष्टि नहीं कर पाता था जिसे माइग्रेट नहीं किया गया था. साथ ही, जिसमें स्कीमा में इंडेक्स के साथ लेगसी हैश शामिल था. (b/139306173)
वर्शन 2.2.2
वर्शन 2.2.2
20 नवंबर, 2019
androidx.room:room-*:2.2.2 रिलीज़ हो गया है. वर्शन 2.2.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक बग ठीक किया गया है. इस बग की वजह से, 999 से ज़्यादा लाइनों वाले एक-से-एक संबंध को इकट्ठा करने पर, Room से संबंधित आइटम के लिए null वैल्यू मिलती थी. (b/143105450)
वर्शन 2.2.1
वर्शन 2.2.1
23 अक्टूबर, 2019
androidx.room:room-*:2.2.1 रिलीज़ हो गया है. वर्शन 2.2.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक गड़बड़ी को ठीक किया है. इस गड़बड़ी की वजह से, कंपाइलर के विकल्प
expandProjectionके चालू होने पर Room,CURSOR_MISMATCHके बारे में गलत तरीके से चेतावनी देता था. (b/140759491) - कंपाइल टाइम के दौरान क्वेरी की पुष्टि करने के लिए इस्तेमाल की गई नेटिव लाइब्रेरी के न मिलने की समस्या को ठीक करने के लिए, फिर से कोशिश करने की सुविधा जोड़ी गई है.
वर्शन 2.2.0
वर्शन 2.2.0
9 अक्टूबर, 2019
androidx.room:room-*:2.2.0 रिलीज़ हो गया है. वर्शन 2.2.0 में ये बदलाव शामिल हैं.
वर्शन 2.1.0 के बाद के मुख्य बदलाव
- पहले से पैकेज किया गया डेटाबेस:
RoomDatabase.Builderमें दो नए एपीआई अब उपलब्ध हैं. इनकी मदद से, पहले से मौजूद डेटाबेस फ़ाइल का इस्तेमाल करकेRoomDatabaseबनाया जा सकता है.createFromAsset()का इस्तेमाल तब किया जाता है, जब पहले से भरी गई डेटाबेस फ़ाइल, APK के ऐसेट फ़ोल्डर में होती है. वहीं,createFromFile()का इस्तेमाल तब किया जाता है, जब फ़ाइल किसी भी जगह पर होती है. इन एपीआई के इस्तेमाल से, डेटा मिटाने वाली माइग्रेशन प्रोसेस का तरीका बदल जाता है. इससे फ़ॉलबैक माइग्रेशन के दौरान, Room पहले से भरे गए डेटाबेस को फिर से कॉपी करने की कोशिश करेगा. अगर ऐसा नहीं होता है, तो वह सभी टेबल को सिर्फ़ हटाने और फिर से बनाने की प्रोसेस पर फ़ॉलबैक करेगा. b/62185732 - स्कीमा की डिफ़ॉल्ट वैल्यू:
@ColumnInfoमें अब एक नई प्रॉपर्टीdefaultValueहै. इसका इस्तेमाल किसी कॉलम की डिफ़ॉल्ट वैल्यू तय करने के लिए किया जा सकता है. डिफ़ॉल्ट वैल्यू, डेटाबेस स्कीमा का हिस्सा होती हैं. अगर इन्हें तय किया जाता है, तो माइग्रेशन के दौरान इनकी पुष्टि की जाएगी. b/64088772 - कई-से-कई संबंध:
@Relationमें अब एक नई प्रॉपर्टीassociateByहै. यह एक नया एनोटेशन@Junctionलेता है. इसका इस्तेमाल ऐसे संबंध का एलान करने के लिए किया जाता है जिसे जंक्शन टेबल (इसे जॉइन टेबल भी कहा जाता है) के ज़रिए पूरा किया जाना चाहिए. b/69201917 - एक से एक संबंध: POJO फ़ील्ड में
@Relationएनोटेशन के साथListयाSetटाइप होने की पाबंदी हटा दी गई है. इससे एक वैल्यू वाले संबंधों को दिखाया जा सकेगा. b/62905145 - टारगेट इकाई: DAO एनोटेशन
@Insert,@Update, और@Deleteमें अब एक नई प्रॉपर्टीtargetEntityहै. इसकी मदद से, उस टारगेट टेबल के बारे में बताया जा सकता है जिस पर DAO के तरीके को काम करना है. इससे उन DAO तरीकों के पैरामीटर, मनमाने POJO हो सकते हैं जिन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. असल में, इससे कुछ डेटा को इंसर्ट, मिटाने, और अपडेट करने की अनुमति मिलती है. b/127549506 - कोरूटीन फ़्लो:
@Queryडीएओ के तरीके अबFlow<T>के रिटर्न टाइप के हो सकते हैं. अगर क्वेरी में शामिल टेबल अमान्य हो जाती हैं, तो लौटाया गया फ़्लो, वैल्यू का नया सेट फिर से जारी करेगा.Channel<T>रिटर्न टाइप के साथ DAO फ़ंक्शन को एलान करना एक गड़बड़ी है. इसके बजाय, Room आपकोFlowका इस्तेमाल करने का सुझाव देता है. इसके बाद,FlowकोChannelमें बदलने के लिए, आस-पास के फ़ंक्शन का इस्तेमाल करें. b/130428884 - Gradle Incremental Annotation Processor: Room अब Gradle का आइसोलेटिंग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प
room.incrementalकी मदद से, इंक्रीमेंटेबिलिटी को चालू किया जा सकता है. ज़्यादा जानकारी के लिए, Room Compiler Options देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां जाकर बग की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में इंक्रीमेंटेबिलिटी को डिफ़ॉल्ट रूप से चालू करने का प्लान बना रहे हैं. b/112110217 - प्रोजेक्शन को बड़ा करना: कंपाइलर का एक नया एक्सपेरिमेंटल विकल्प
room.expandProjectionजोड़ा गया है. इससे Room, स्टार प्रोजेक्शन वाली क्वेरी को फिर से लिखता है, ताकि उसमें सिर्फ़ POJO टाइप को वापस लाने वाले कॉलम शामिल हों. उदाहरण के लिए,@Query("SELECT * FROM Song")के साथ डीएओ के किसी ऐसे तरीके के लिए जो सिर्फ़ दो फ़ील्ड वालेSongIdAndTitleनाम के POJO को दिखाता है. इसके बाद, Room क्वेरी कोSELECT id, title FROM Songमें फिर से लिखेगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससेCURSOR_MISMATCHचेतावनी नहीं मिलती. यह चेतावनी तब दिखती है, जब क्वेरी ऐसी अतिरिक्त कॉलम दिखाती है जो POJO टाइप के किसी भी फ़ील्ड से मेल नहीं खाते.
वर्शन 2.2.0-rc01
5 सितंबर, 2019
androidx.room:room:2.2.0-rc01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
Room 2.2.0-beta01 के बाद से, सार्वजनिक तौर पर कोई बदलाव नहीं किया गया है.
वर्शन 2.2.0-beta01
22 अगस्त, 2019
androidx.room:room-*:2.2.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- उस बग को ठीक किया गया है जिसकी वजह से, कोरूटीन फ़्लो क्वेरी कुछ समय बाद नई वैल्यू फिर से जनरेट करना बंद कर देती थी. (b/139175786)
- Room में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room 1.0 के बाद से माइग्रेट नहीं किए गए डेटाबेस को खोलते समय, Room लेगसी स्कीमा हैश कोड को स्वीकार नहीं करता था. इस वजह से, अमान्य स्कीमा की वजह से रनटाइम क्रैश हो जाता था. (b/139306173)
वर्शन 2.2.0-alpha02
7 अगस्त, 2019
androidx.room:room-*:2.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- कोरूटीन फ़्लो:
@Queryडीएओ के तरीके अबFlow<T>के रिटर्न टाइप के हो सकते हैं. अगर क्वेरी में शामिल टेबल अमान्य हो जाती हैं, तो लौटाया गया फ़्लो, वैल्यू का नया सेट फिर से जारी करेगा.Channel<T>रिटर्न टाइप के साथ DAO फ़ंक्शन को एलान करना एक गड़बड़ी है. इसके बजाय, Room आपकोFlowका इस्तेमाल करने का सुझाव देता है. इसके बाद,FlowकोChannelमें बदलने के लिए, आस-पास के फ़ंक्शन का इस्तेमाल करें. b/130428884 - प्रोजेक्शन को बड़ा करना: कंपाइलर का एक नया एक्सपेरिमेंटल विकल्प
room.expandProjectionजोड़ा गया है. इससे Room, स्टार प्रोजेक्शन वाली क्वेरी को फिर से लिखता है, ताकि उसमें सिर्फ़ POJO टाइप को वापस लाने वाले कॉलम शामिल हों. उदाहरण के लिए,@Query("SELECT * FROM Song")वाला डीएओ मैथड, सिर्फ़ दो फ़ील्ड वालाSongIdAndTitleनाम का POJO दिखाता है. इसके बाद, Room क्वेरी कोSELECT id, title FROM Songमें फिर से लिखेगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससेCURSOR_MISMATCHचेतावनी नहीं मिलती. यह चेतावनी तब दिखती है, जब क्वेरी ऐसी अतिरिक्त कॉलम दिखाती है जो POJO टाइप के किसी भी फ़ील्ड से मेल नहीं खाते. onDestructiveMigrateएक नया कॉलबैक एपीआई है, जिसेRoomDatabase.Callbackमें जोड़ा गया है. इसका इस्तेमाल तब किया जाता है, जब Room किसी डेटाबेस को डिस्ट्रक्टिव तरीके से माइग्रेट करता है. b/79962330
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें Room, फ़ील्ड के सुरक्षित होने पर फ़ील्ड सेटर के तौर पर किसी तरीके का इस्तेमाल करके गलत कोड जनरेट करता था. b/136194628
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, कई इंस्टेंस के अमान्य होने की सुविधा चालू होने पर, दूसरी प्रोसेस में InvalidationTracker, NPE दिखाता था. ऐसा तब होता था, जब invalidationService बंद हो जाता था. b/137454915
- ऐसी गड़बड़ी को ठीक किया गया है जिसमें Room,
@RawQueryएनोटेशन वाले इनहेरिट किए गए सस्पेंड फ़ंक्शन के रिटर्न टाइप की सही पहचान नहीं कर पाता था. b/137878827 @Relationके लिए जनरेट किए गए कोड को अपडेट किया गया है. ऐसा तब किया जाता है, जब संबंधित कुंजी BLOB टाइप की हो, ताकि तुलना की जा सकने वालीByteBufferका इस्तेमाल किया जा सके. b/137881998- हमने एक बग को ठीक किया है. इस बग में, Room
@Insert,@Update, और@Deleteके आंशिक इकाई पैरामीटर के तौर पर इस्तेमाल किए गए POJO पर सेटर मौजूद न होने की शिकायत करता था. b/138664463 - एक बग ठीक किया गया है. इसमें Room,
@Entityके ज़रिए अनदेखा किए गए कॉलम के लिए, गेटर और सेटर के मौजूद न होने की शिकायत करता था. ऐसा तब होता था, जब इकाई क्लास का इस्तेमाल कुछ DAO तरीकों में किया जाता था. b/138238182 - एक गड़बड़ी को ठीक किया गया है. इसमें Room, नाम वाले बाइंडिंग आर्ग्युमेंट को पोज़िशनल आर्ग्युमेंट में सही तरीके से बदल नहीं पाता था. इसकी वजह से, रीयूज़ किए गए पैरामीटर के साथ क्वेरी को एक्ज़ीक्यूट करते समय रनटाइम अपवाद होता था. b/137254857
वर्शन 2.2.0-alpha01
10 जुलाई, 2019
नई सुविधाएं
- पहले से पैकेज किया गया डेटाबेस:
RoomDatabase.Builderमें दो नए एपीआई अब उपलब्ध हैं. इनकी मदद से, पहले से मौजूद डेटाबेस फ़ाइल का इस्तेमाल करकेRoomDatabaseबनाया जा सकता है.createFromAsset()का इस्तेमाल तब किया जाता है, जब पहले से भरी गई डेटाबेस फ़ाइल, APK के ऐसेट फ़ोल्डर में होती है. वहीं,createFromFile()का इस्तेमाल तब किया जाता है, जब फ़ाइल किसी भी जगह पर होती है. इन एपीआई के इस्तेमाल से, डेटा मिटाने वाली माइग्रेशन प्रोसेस का तरीका बदल जाता है. इससे फ़ॉलबैक माइग्रेशन के दौरान, Room पहले से भरे गए डेटाबेस को फिर से कॉपी करने की कोशिश करेगा. अगर ऐसा नहीं होता है, तो वह सभी टेबल को सिर्फ़ हटाने और फिर से बनाने की प्रोसेस पर फ़ॉलबैक करेगा. b/62185732 - स्कीमा की डिफ़ॉल्ट वैल्यू:
@ColumnInfoमें अब एक नई प्रॉपर्टीdefaultValueहै. इसका इस्तेमाल किसी कॉलम की डिफ़ॉल्ट वैल्यू तय करने के लिए किया जा सकता है. डिफ़ॉल्ट वैल्यू, डेटाबेस स्कीमा का हिस्सा होती हैं. अगर इन्हें तय किया जाता है, तो माइग्रेशन के दौरान इनकी पुष्टि की जाएगी. b/64088772ध्यान दें: अगर आपके डेटाबेस स्कीमा में पहले से ही डिफ़ॉल्ट वैल्यू मौजूद हैं, जैसे कि
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT zके ज़रिए जोड़ी गई वैल्यू, और आपको उन्हीं कॉलम के लिए@ColumnInfoके ज़रिए डिफ़ॉल्ट वैल्यू तय करनी हैं, तो आपको माइग्रेशन की सुविधा देनी पड़ सकती है. इससे, उन डिफ़ॉल्ट वैल्यू की पुष्टि की जा सकेगी जिनका हिसाब नहीं रखा गया है. ज़्यादा जानकारी के लिए, Room माइग्रेशन देखें. - मेनी-टू-मेनी संबंध:
@Relationमें अब एक नई प्रॉपर्टीassociateByहै. यह एक नया एनोटेशन@Junctionलेता है. इसका इस्तेमाल ऐसे संबंध का एलान करने के लिए किया जाता है जिसे जंक्शन टेबल (इसे जॉइन टेबल भी कहा जाता है) के ज़रिए पूरा किया जाना चाहिए. b/69201917 - एक से एक संबंध: POJO फ़ील्ड में
@Relationएनोटेशन के साथListयाSetटाइप होने की पाबंदी हटा दी गई है. इससे एक वैल्यू वाले संबंधों को दिखाया जा सकेगा. b/62905145 - टारगेट इकाई: DAO एनोटेशन
@Insert,@Update, और@Deleteमें अब एक नई प्रॉपर्टीtargetEntityहै. इसकी मदद से, उस टारगेट टेबल के बारे में बताया जा सकता है जिस पर DAO के तरीके को काम करना है. इससे उन DAO तरीकों के पैरामीटर, मनमाने POJO हो सकते हैं जिन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. असल में, इससे कुछ डेटा को इंसर्ट, मिटाने, और अपडेट करने की अनुमति मिलती है. b/127549506 - Gradle Incremental Annotation Processor: Room अब Gradle का आइसोलेटिंग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प
room.incrementalकी मदद से, इंक्रीमेंटेबिलिटी को चालू किया जा सकता है. ज़्यादा जानकारी के लिए, Room Compiler Options देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां जाकर बग की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से इंक्रीमेंटेबिलिटी की सुविधा चालू करने का प्लान बना रहे हैं. b/112110217
गड़बड़ियां ठीक की गईं
- क्वेरी पूरी होने से पहले, क्वेरी की Rx स्ट्रीम को बंद कर दिया गया है. ऐसे में, Room अब
EmptySetResultExceptionको ग्लोबल गड़बड़ी हैंडलर तक नहीं पहुंचाएगा. b/130257475 - उस गड़बड़ी को ठीक किया गया है जिसमें Room, निलंबित किए गए DAO फ़ंक्शन के लिए गलत गड़बड़ी का मैसेज दिखाता था. इस फ़ंक्शन को
@RawQueryके साथ एनोटेट किया गया था और इसका कोई रिटर्न टाइप नहीं था. b/134303897 - रूम अब रॉ टाइप के साथ डीएओ अडैप्टर जनरेट नहीं करेगा. b/135747255
वर्शन 2.1.0
वर्शन 2.1.0
13 जून, 2019
Room 2.1.0 को 2.1.0-rc01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
2.0.0 के बाद हुए अहम बदलाव
- FTS: Room अब मैपिंग वाली इकाइयों के साथ काम करता है. इसके लिए, FTS3 या FTS4 टेबल का इस्तेमाल किया जाता है.
@Entityके साथ एनोटेट की गई क्लास को अब@Fts3या@Fts4के साथ भी एनोटेट किया जा सकता है, ताकि मैपिंग की पूरी जानकारी वाली टेक्स्ट सर्च टेबल के साथ क्लास का एलान किया जा सके. एनोटेशन के तरीकों के ज़रिए, FTS के विकल्पों को और ज़्यादा पसंद के मुताबिक बनाया जा सकता है. - व्यू: Room अब
@DatabaseViewएनोटेशन का इस्तेमाल करके, किसी क्लास को सेव की गई क्वेरी के तौर पर एलान करने की सुविधा देता है. इसे व्यू भी कहा जाता है. - कोरूटीन: डीएओ के तरीके अब सस्पेंड फ़ंक्शन हो सकते हैं. इस सुविधा का फ़ायदा पाने के लिए, अपनी डिपेंडेंसी में
room-ktxशामिल करें. ktx आर्टफ़ैक्ट, कोरूटीन में डेटाबेस ट्रांज़ैक्शन करने के लिए, एक्सटेंशन फ़ंक्शनRoomDatabase.withTransactionभी उपलब्ध कराता है. - Auto Value: Room अब AutoValue एनोटेट की गई क्लास को इकाइयों और POJO के तौर पर एलान करने की सुविधा देता है. Room के एनोटेशन
@PrimaryKey,@ColumnInfo,@Embedded, और@Relationको अब ऑटो वैल्यू एनोटेट की गई क्लास के ऐब्स्ट्रैक्ट मेथड में एलान किया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ@CopyAnnotationsभी होना चाहिए, ताकि Room इन्हें सही तरीके से समझ सके. - असिंक की अतिरिक्त सुविधा:
@Insert,@Deleteया@Updateके साथ एनोटेट किए गए DAO के तरीके, अब Rx के रिटर्न टाइपCompletable,Single,Maybe, और Guava के रिटर्न टाइपListenableFutureके साथ काम करते हैं. साथ ही, इनमें@Queryमें शामिलINSERT,DELETEयाUPDATEस्टेटमेंट भी शामिल हैं. ये फ़ंक्शन को निलंबित भी कर सकते हैं. enableMultiInstanceInvalidation,RoomDatabase.Builderमें एक नया एपीआई है. इसका इस्तेमाल, एक ही डेटाबेस फ़ाइल का इस्तेमाल करके RoomDatabase के कई इंस्टेंस में अमान्य करने की सुविधा चालू करने के लिए किया जाता है.fallbackToDestructiveMigrationOnDowngrade,RoomDatabase.Builderमें मौजूद एक नया एपीआई है. इसका इस्तेमाल, डेटाबेस को डाउनग्रेड होने पर अपने-आप फिर से बनाने के लिए किया जाता है.ignoredColumns,@Entityएनोटेशन में एक नया एपीआई है. इसका इस्तेमाल, नाम के हिसाब से अनदेखा किए गए फ़ील्ड की सूची बनाने के लिए किया जा सकता है.- अब Room, डेटा क्लास में Kotlin के प्राइमरी कंस्ट्रक्टर का सही तरीके से इस्तेमाल करेगा. इससे प्रॉपर्टी को
varsके तौर पर एलान करने की ज़रूरत नहीं होगी.
वर्शन 2.1.0-rc01
29 मई, 2019
गड़बड़ियां ठीक की गईं
- रूम को शुरू करने से जुड़ी गड़बड़ी को ठीक किया गया है. यह गड़बड़ी, पहले से सेट अप किए गए temp_store कॉन्फ़िगरेशन की वजह से हो सकती है. b/132602198
- SQLite 3.27.0 और इसके बाद के वर्शन का इस्तेमाल करने वाले लोगों के लिए, डबल कोट का इस्तेमाल करने से जुड़ी चेतावनी को ठीक किया गया है. b/131712640
- उस बग को ठीक किया गया है जिसकी वजह से, एक साथ कई बार अमान्य होने की जांच करने पर InvalidationTracker क्रैश हो जाता था. b/133457594
वर्शन 2.1.0-beta01
7 मई, 2019
androidx.room 2.1.0-beta01 को 2.1.0-alpha07 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
वर्शन 2.1.0-alpha07
25 अप्रैल, 2019
एपीआई / व्यवहार में बदलाव
- एक्सटेंशन फ़ंक्शन
RoomDatabase.withTransactionको बदल दिया गया है. अब यहCoroutineScopeको रिसीवर के तौर पर इस्तेमाल करने वाले फ़ंक्शन ब्लॉक को नहीं लेगा. इससे लेन-देन वाले ब्लॉक में एक साथ कई चीज़ें चलाने के लिए ज़रूरीcoroutineScope { }रैपर को स्किप नहीं किया जा सकता.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी गड़बड़ी को ठीक किया है जिसमें Room, Collection टाइप का पैरामीटर रखने वाले Kotlin DAO फ़ंक्शन के लिए TypeConverter से मेल नहीं खाता था. b/122066791
वर्शन 2.1.0-alpha06
22 मार्च, 2019
एपीआई / व्यवहार में बदलाव
- अब एसिंक लेन-देन की क्वेरी को क्रम से लगाया जाता है, ताकि Room, डेटाबेस के लेन-देन को पूरा करने के लिए एक से ज़्यादा थ्रेड का इस्तेमाल न करे.
RoomDatabase.Builder.setTransactionExecutor(Executor)को जोड़ा गया है, ताकि लेन-देन के लिए इस्तेमाल किए जाने वाले एक्ज़ीक्यूटर को कॉन्फ़िगर किया जा सके. RoomDatabase.runInTransaction(Callable)अब जांच की गई अपवादों को RuntimeExceptions में रैप नहीं करेगा. b/128623748
गड़बड़ियां ठीक की गईं
- हमने उस बग को ठीक कर दिया है जिसकी वजह से, कॉन्टेंट टेबल और बाहरी कॉन्टेंट की एफ़टीएस टेबल, दोनों के लिए ऑब्ज़र्वर जोड़ने पर, अमान्य ट्रैकर कॉन्टेंट टेबल को मॉनिटर करना बंद कर देता था. b/128508917
- SQLite 3.24.0 से मेल खाने के लिए,
RoomSQLite व्याकरण को अपडेट किया गया. b/110883668
वर्शन 2.1.0-alpha05
13 मार्च, 2019
नई सुविधाएं
- एक्सटेंशन फ़ंक्शन
RoomDatabase.withTransactionकी मदद से, कोरूटीन में डेटाबेस के लेन-देन सुरक्षित तरीके से किए जा सकते हैं. रूम एक्सटेंशन फ़ंक्शन और कोरूटीन की सुविधा,room-ktxआर्टफ़ैक्ट में उपलब्ध है. @Transactionके साथ एनोटेट किए गए नॉन-ऐब्स्ट्रैक्ट डीएओ मैथड अब सस्पेंड फ़ंक्शन हो सकते हैं. b/120241587
एपीआई / व्यवहार में बदलाव
- आर्टफ़ैक्ट
room-coroutinesका नाम बदलकरroom-ktxकर दिया गया है. इसका नामकरण, अन्य androidx आर्टफ़ैक्ट के नामकरण के जैसा ही है. RoomDatabaseमें मौजूदbeginTransaction,setTransactionSuccessful, औरendTransactionको बंद कर दिया गया है. अब इनकी जगहrunInTransactionऔरroom-ktxएक्सटेंशन फ़ंक्शनwithTransactionका इस्तेमाल किया जा सकता है.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें SIMPLE टोकनाइज़र का इस्तेमाल करने पर, टोकनाइज़र के आर्ग्युमेंट हटा दिए जाते थे. b/125427014
- हमने एक गड़बड़ी ठीक की है. इस गड़बड़ी की वजह से, Room उन सस्पेंडिंग फ़ंक्शन की सही तरीके से पहचान नहीं कर पाता था जिनके पैरामीटर का टाइप, इनर क्लास था. b/123767877
- उस गड़बड़ी को ठीक किया गया है जिसमें
INSERT,UPDATEयाDELETEस्टेटमेंट के साथ, स्थगित किए गए@QueryDAO तरीके से मुख्य थ्रेड में क्वेरी को तुरंत तैयार किया जा रहा था. b/123695593 - कई गड़बड़ियों को ठीक किया गया है. इनमें से कुछ गड़बड़ियों में, Room, निलंबित किए गए कुछ फ़ंक्शन के लिए गलत कोड जनरेट करता था. b/123466702 और b/123457323
- हमने एक गड़बड़ी को ठीक किया है. इसमें जनरेट किए गए कोड में, इस्तेमाल न किए जा रहे तरीकों को सही तरीके से नहीं हटाया जा रहा था. b/117602586
- androidx.sqlite की Room डिपेंडेंसी को 1.0.2 पर अपडेट किया गया है. इसमें खराब हो चुके डेटाबेस को सही तरीके से हैंडल करने से जुड़ी समस्याएं ठीक की गई हैं. b/124476912
मौजूदा समस्याएं
- Room 2.1.0-alpha05,
kotlinx-metadata-jvmआर्टफ़ैक्ट पर निर्भर करता है. यह फ़िलहाल Maven Central में उपलब्ध नहीं है (KT-27991). अपने प्रोजेक्ट के डेटाबेस मेंmaven { url "https://kotlin.bintray.com/kotlinx/" }जोड़कर, इस डिपेंडेंसी को हल किया जा सकता है.
वर्शन 2.1.0-alpha04
25 जनवरी, 2019
नई सुविधाएं
@Queryएनोटेशन वाले डीएओ मैथड, अबSingle,Mayble,Completable, औरListenableFutureजैसे एसिंक टाइप दिखा सकते हैं. इन मैथड मेंINSERT,UPDATEयाDELETEस्टेटमेंट शामिल होते हैं. इसके अलावा, ये सस्पेंड फ़ंक्शन भी हो सकते हैं. b/120227284
एपीआई / व्यवहार में बदलाव
- अगर
@Transactionके साथ एनोटेट किया गया कोई नॉन-ऐब्स्ट्रैक्ट डीएओ मैथड,Single,Mayble,Completable,LiveDataयाListenableFutureजैसे एसिंक टाइप को दिखाता है, तो Room अब गड़बड़ी दिखाएगा. लेन-देन थ्रेड तक सीमित होते हैं. इसलिए, फ़िलहाल Room के लिए किसी ऐसे फ़ंक्शन के आस-पास लेन-देन शुरू और खत्म करना मुमकिन नहीं है जो अलग-अलग थ्रेड में क्वेरी कर सकता है. b/120109336 OnConflictStrategy.FAILऔरOnConflictStrategy.ROLLBACKको@Deprecatedकर दिया गया है, क्योंकि ये Android के मौजूदा SQLite बाइंडिंग के साथ ठीक से काम नहीं करते. b/117266738
गड़बड़ियां ठीक की गईं
- हमने एक गड़बड़ी ठीक की है. इसमें DAO का तरीका, निलंबन फ़ंक्शन होने पर, Room, रिटर्न टाइप के TypeConverter का सही तरीके से इस्तेमाल नहीं करता था. b/122988159
- उस गड़बड़ी को ठीक किया गया है जिसमें Room, इनहेरिट किए गए निलंबन फ़ंक्शन को ग़लती से गैर-निलंबन फ़ंक्शन के तौर पर पहचानता था. b/122902595
- उस बग को ठीक किया गया है जिसमें Room,
@Embeddedफ़ील्ड के पैरंट क्लास में होने और कई चाइल्ड क्लास में इस्तेमाल किए जाने पर गलत कोड जनरेट करता था. b/121099048 - उस समस्या को ठीक कर दिया गया है जिसकी वजह से,
beginTransaction()औरendTransaction()के बीच डीएओ के सस्पेंड फ़ंक्शन को लागू करने पर डेटाबेस लॉक हो जाता था. b/120854786
वर्शन 2.1.0-alpha03
4 दिसंबर, 2018
एपीआई में हुए बदलाव
@Fts3/@Fts4में मौजूद 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,
INएक्सप्रेशन के आर्ग्युमेंट के तौर पर,Collectionके अन्य कई तरीकों को अस्वीकार कर देता था. b/119884035 - उस गड़बड़ी को ठीक किया गया है जिसमें Room से मिला LiveData, हमेशा के लिए ऑब्ज़र्व किए जाने पर गार्बेज इकट्ठा कर लेता था. इस वजह से, वह नया डेटा नहीं भेज पाता था. b/74477406
- लॉक के विवाद को कम करने के लिए,
RoomDatabaseके क्लोज़ लॉक को अपडेट किया गया है. b/117900450
वर्शन 2.1.0-alpha02
30 अक्टूबर, 2018
नई सुविधाएं
@Relationमें@DatabaseViewको रेफ़रंस करने की सुविधा जोड़ी गई. b/117680932
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें Room, Rx रिटर्न टाइप से सदस्यता लेते और उसे बंद करते समय, मुख्य थ्रेड में डिस्क I/O करता था. b/117201279
- एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room को Kotlin की इकाई क्लास में मौजूद किसी फ़ील्ड के लिए सही टाइप कन्वर्टर नहीं मिल पाता था. b/111404868
- उस गड़बड़ी को ठीक किया गया है जिसमें Room,
DAOइंटरफ़ेस लागू करने के लिए गलत कोड जनरेट करता था. इस इंटरफ़ेस में, Kotlin का डिफ़ॉल्ट तरीका शामिल होता है, जिसमें कोई तर्क नहीं होता. b/117527454 RoomSQLite व्याकरण पार्सर को अपडेट किया गया है. इससे परफ़ॉर्मेंस से जुड़ी उस समस्या को ठीक किया गया है जिसकी वजह से, ऐप्लिकेशन को बनाने में ज़्यादा समय लगता था. b/117401230
वर्शन 2.1.0-alpha01
8 अक्टूबर, 2018
नई सुविधाएं
- FTS: Room अब FTS3 या FTS4 टेबल की मैपिंग वाली इकाइयों के साथ काम करता है.
@Entityके साथ एनोटेट की गई क्लास को अब@Fts3या@Fts4के साथ भी एनोटेट किया जा सकता है. इससे मैपिंग की पूरी जानकारी वाली टेक्स्ट सर्च टेबल के साथ क्लास का एलान किया जा सकेगा. एनोटेशन के तरीकों के ज़रिए, फ़ुल टेक्स्ट सर्च (एफ़टीएस) के विकल्प उपलब्ध हैं. इनका इस्तेमाल करके, खोज को अपनी पसंद के मुताबिक बनाया जा सकता है. b/62356416 - व्यू: Room अब किसी क्लास को सेव की गई क्वेरी के तौर पर सेट करने की सुविधा देता है. इसे @DatabaseView एनोटेशन का इस्तेमाल करके व्यू भी कहा जाता है. b/67033276
- Auto Value: Room अब AutoValue एनोटेट की गई क्लास को इकाइयों और POJO के तौर पर इस्तेमाल करने की सुविधा देता है. Room के एनोटेशन
@PrimaryKey,@ColumnInfo,@Embedded, और@Relationको अब ऑटो वैल्यू एनोटेट की गई क्लास के ऐब्स्ट्रैक्ट तरीकों में एलान किया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ@CopyAnnotationsभी होना चाहिए, ताकि Room इन्हें ठीक से समझ सके. b/62408420 - Rx के अन्य रिटर्न टाइप के लिए सहायता:
@Insert,@Deleteया@Updateके साथ एनोटेट किए गए डीएओ के तरीके, अब Rx के रिटर्न टाइपCompletable,Single<T>, औरMaybe<T>के साथ काम करते हैं. b/63317956 @Relationके साथ इम्यूटेबल टाइप: पहले रूम के लिए,@Relationएनोटेट किए गए फ़ील्ड को सेट करना ज़रूरी था. हालांकि, अब इन्हें कंस्ट्रक्टर पैरामीटर के तौर पर इस्तेमाल किया जा सकता है.enableMultiInstanceInvalidation:RoomDatabase.Builderमें एक नया एपीआई है. इसका इस्तेमाल, एक ही डेटाबेस फ़ाइल का इस्तेमाल करके RoomDatabase के कई इंस्टेंस में अमान्य करने की सुविधा चालू करने के लिए किया जाता है. कई इंस्टेंस के अमान्य होने की यह प्रोसेस, कई प्रोसेस में भी काम करती है. b/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
गड़बड़ियां ठीक की गईं
RoomRxSingleऔरMaybeके लागू करने से जुड़ी एक गंभीर गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, क्वेरी को समय से पहले रीसाइकल कर दिया जाता था. इससे, अगर आपनेSingleयाMaybeके दिखाए गए इंस्टेंस में एक से ज़्यादा ऑब्ज़र्वर जोड़े हैं, तो समस्याएं हो सकती हैं. b/76031240अगर [RoomDatabase.clearAllTables][ref-clearAllTables] को किसी लेन-देन के अंदर कॉल किया जाता है, तो यह डेटाबेस को
VACUUMनहीं करेगा. b/77235565
वर्शन 1.1.0-beta1
21 मार्च, 2018
एपीआई में हुए बदलाव
- एपीआई की समीक्षा के दौरान मिले सुझाव/राय या शिकायत के आधार पर,
@RawQueryअब क्वेरी पैरामीटर के तौर परStringको पास करने की अनुमति नहीं देता. आपको [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इस्तेमाल करना होगा. (आर्गुमेंट के साथ [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इंस्टेंस आसानी से बनाने के लिए, [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] देखें). - RoomDatabase.Builder के [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] तरीके में अब
vararg Integerके बजायvararg intस्वीकार किया जाता है.
गड़बड़ियां ठीक की गईं
- [RoomDatabase.clearAllTables][ref-clearAllTables] अब WAL चेकपॉइंट सेट करके और डेटाबेस को
VACUUMकरके, ऑपरेटिंग सिस्टम को स्पेस वापस देने की कोशिश करता है. - [
@RawQuery][ref-RawQuery] अबobservedEntitiesप्रॉपर्टी के लिए किसी भी Pojo को स्वीकार करता है. हालांकि, Pojo को अपनेEmbeddedफ़ील्ड याRelationके ज़रिए एक या उससे ज़्यादा इकाइयों को रेफ़र करना होगा. b/74041772 - पेजिंग: रूम के DataSource को लागू करने की सुविधा अब एक से ज़्यादा टेबल की डिपेंडेंसी (जैसे कि संबंध और जॉइन) को सही तरीके से मैनेज करती है. पहले, ये क्वेरी नए नतीजे ट्रिगर नहीं कर पाती थीं या कंपाइल नहीं हो पाती थीं. b/74128314
वर्शन 1.1.0-alpha1
22 जनवरी, 2018
नई सुविधाएं
RawQuery: इस नए एपीआई की मदद से,@Daoतरीकों को क्वेरी पैरामीटर के तौर पर एसक्यूएल मिल सकता है b/62103290, b/71458963fallBackToDestructiveMigrationsFrom:RoomDatabase.Builderमें मौजूद इस नए एपीआई की मदद से, यह बेहतर तरीके से कंट्रोल किया जा सकता है कि किन शुरुआती स्कीमा वर्शन से डेटा मिटाने वाली माइग्रेशन की प्रोसेस को अनुमति दी जाए. यह सुविधा, fallbackToDestructiveMigration की तुलना में बेहतर है b/64989640- Room अब सिर्फ़ नए पेजिंग एपीआई (ऐल्फ़ा-4+) के साथ काम करता है. साथ ही, अब यह
LivePagedListProviderके साथ काम नहीं करता. Room के नए ऐल्फ़ा वर्शन का इस्तेमाल करने के लिए, आपको पेजिंगalpha-4या उसके बाद वाले वर्शन का इस्तेमाल करना होगा. साथ ही, अगर आपने पहले से हीLivePagedListProviderसेLivePagedListBuilderपर स्विच नहीं किया है, तो आपको ऐसा करना होगा.
गड़बड़ियां ठीक की गईं
- Kotlin Kapt टाइप के लिए बेहतर सहायता. b/69164099
- फ़ील्ड के क्रम से अब स्कीमा अमान्य नहीं होती. b/64290754