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