रूम
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
30 अक्टूबर, 2024 | 2.6.1 | - | - | 2.7.0-alpha11 |
डिपेंडेंसी का एलान करना
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 मॉड्यूल) के लिए,
रूम एनोटेशन का इस्तेमाल करने के लिए 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 प्लग-इन का इस्तेमाल करना
रूम के वर्शन 2.6.0 और उसके बाद वाले वर्शन के साथ, रूम कंपाइलर के विकल्प कॉन्फ़िगर करने के लिए, रूम ग्रेडल प्लगिन का इस्तेमाल किया जा सकता है. प्लग इन, प्रोजेक्ट को इस तरह कॉन्फ़िगर करता है कि जनरेट किए गए स्कीमा (जो कंपाइल करने के टास्क का आउटपुट होते हैं और ऑटो-माइग्रेशन के लिए इस्तेमाल किए जाते हैं) को सही तरीके से कॉन्फ़िगर किया जाता है, ताकि उन्हें फिर से बनाया जा सके और कैश मेमोरी में सेव किया जा सके.
प्लग इन जोड़ने के लिए, अपनी टॉप-लेवल 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") } }
रूम 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 में से किसका इस्तेमाल किया है.
ग्रूवी
// 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-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()
के तौर पर एक जैसा कर दिया गया है. साथ ही, केएमपी प्रोजेक्ट में Android के अलावा, दूसरे सोर्स सेट के लिए भी यह उपलब्ध है. (I1fbfa, (I8fb29), b/329291639, b/329315924)
एपीआई में हुए बदलाव
- रूम में
Cursor
शब्द का इस्तेमाल करने वाली सभी चेतावनियों और गड़बड़ी के मैसेज को हटा दिया गया है या उन्हें बदल दिया गया है, क्योंकि रूम के केएमपी वर्शन मेंCursor
का इस्तेमाल करने के लिए, अब सटीक सामान्य शब्द नहीं है. (Id8cd9, b/334087492)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से रूम केएमपी, गैर-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 में ये कमिट शामिल हैं.
नई सुविधाएं
- रूम Gradle प्लग इन अब एक्सपोर्ट किए गए स्कीमा को Android इंस्ट्रुमेंटेशन टेस्ट के संसाधन स्रोतों में अपने-आप जोड़ देगा, ताकि
MigrationTestHelper
उनका इस्तेमाल कर सके.
गड़बड़ियां ठीक की गईं
initialize
फ़ंक्शन मेंRoomDatabaseConstructor
के जनरेट किए गए 'असल' में 'असल' मॉडिफ़ायर मौजूद न होने की समस्या ठीक की गई है. ऐसा तब किया गया है, जब इस तरह के फ़ंक्शन को 'उम्मीद है' एलान में भी बदला गया हो. (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 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 को ठीक करता है
- रूम केएमपी में
@RawQuery
के लिएRoomRawQuery
नाम का एक नया एपीआई जोड़कर काम करना. यह रॉ एसक्यूएल स्ट्रिंग को होल्ड करने और स्टेटमेंट में आर्ग्युमेंट को बाइंड करने के लिए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 में ये कमिट मौजूद हैं.
गड़बड़ियां ठीक की गईं
- रूम के एनोटेशन प्रोसेसर में आई समस्या को ठीक करने से, डीएओ में मल्टी-मैप रिटर्न टाइप तय करने पर, काम न करने वाला केएमपी कोड जनरेट होगा. (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 प्लैटफ़ॉर्म ही इस्तेमाल किए जा सकते हैं. जिन प्लैटफ़ॉर्म पर ये सुविधाएं काम नहीं करतीं उन्हें सभी सुविधाओं के साथ उपलब्ध करा दिया जाएगा. ऐसा, आने वाले रूम की रिलीज़ में किया जाएगा.
रूम केएमपी का इस्तेमाल शुरू करने के बारे में ज़्यादा जानकारी के लिए, कृपया रूम केएमपी का आधिकारिक दस्तावेज़ देखें.
- अगर केएसपी के ज़रिए प्रोसेस की जाती है, तो KSP पर Kotlin कोड जनरेट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. KAPT या सिर्फ़ Java प्रोजेक्ट के लिए, रूम अब भी Java सोर्स जनरेट करेगा.
एपीआई में हुए बदलाव
Room.databaseBuilder()
का एक ओवरलोड जोड़ा गया है, जो लैम्डा पैरामीटर लेता है. इसे रूम जनरेट किए गए फ़ंक्शन के साथ इस्तेमाल किया जाता है, ताकि जनरेट किए गए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 ऐप्लिकेशन में कमरे के इस्तेमाल को सामान्य केएमपी मॉड्यूल में माइग्रेट करने के बारे में ज़्यादा जानकारी के लिए, डेटा को दूसरी जगह भेजने से जुड़ी गाइड देखें. कॉलबैक: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)
से देखी जा सकती है. ध्यान दें कि यह व्यवहार में होने वाले एक बदलाव को दिखाता है, जहां पहले की लोड की गड़बड़ियां, लोड को ट्रिगर करने वाले dao तरीके से दिए गए अपवाद के रूप में बबल अप होती हैं. (I93887, b/302708983)
वर्शन 2.6.0
18 अक्टूबर, 2023
androidx.room:room-*:2.6.0
रिलीज़ हो गया है. 2.6.0 वर्शन में ये बदलाव शामिल हैं.
2.5.0 के बाद किए गए ज़रूरी बदलाव
- 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\>
- रूम Gradle प्लग इन के लिए नया आर्टफ़ैक्ट
androidx.room
आईडी वाले रूम में जोड़ दिया गया है. यह Gradle एनोटेशन प्रोसेसर विकल्पों के ज़रिए, स्कीमा के इनपुट और आउटपुट होने से जुड़ी कई मौजूदा समस्याओं को हल करता है. ज़्यादा जानकारी के लिए, Room के 2.6.0-alpha02 वर्शन के रिलीज़ नोट देखें. - रूम इकाइयों में वैल्यू क्लास, अब KSP के साथ काम करती हैं. (4194095)
- डीएओ फ़ंक्शन में, नेस्ट किए गए मैप के रिटर्न टाइप अब रूम में काम करते हैं. (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 की कई मौजूदा समस्याएं हल हो जाती हैं. रूम 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 में अब इकाइयों में वैल्यू क्लास का इस्तेमाल किया जा सकता है. (4194095)
- Kotlin कोड जनरेशन(या “Kotlin CodeGen”) को अब Room (4297ec0) में चालू किया जा सकता है. Room में Kotlin CodeGen की सुविधा चालू करने के लिए, KSP के लिए प्रोसेसर के विकल्पों में
room.generateKotlin
विकल्प का नाम जोड़ें. KSP के लिए प्रोसेसर के विकल्प पास करने के तरीके के बारे में ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें.
ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, यह ध्यान रखना ज़रूरी है कि इसमें कुछ और पाबंदियां जोड़ी गई हैं. Kotlin CodeGen में, एब्स्ट्रैक्ट प्रॉपर्टी को DAO गेट्टर या DAO क्वेरी के तौर पर इस्तेमाल करने की अनुमति नहीं है. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलतफ़हमी न हो कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और उसका स्टोर किया गया नतीजा एक जैसा ही होता है. एक और पाबंदी यह भी जोड़ी गई है कि Kotlin CodeGen के लिए रूम में अब बिना वैल्यू वाले कलेक्शन रिटर्न टाइप की अनुमति नहीं है.
चेतावनी: आपको पता चल सकता है कि Kotlin CodeGen का इस्तेमाल करते समय, आपके प्रोजेक्ट में वैल्यू न होने की शर्त ज़्यादा सख्त है. Kotlin CodeGen में, टाइप आर्ग्युमेंट के लिए शून्य वैल्यू की अनुमति है या नहीं, यह अहम है. वहीं, Java में इस बात को ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` का रिटर्न टाइप है और टेबल खाली है. Java CodeGen में इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको एक गड़बड़ी मिलेगी. इससे बचने के लिए, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. ऐसा मानते हुए कि कोई शून्य वैल्यू उत्सर्जित की गई है. </foo?\></foo\>
एपीआई में हुए बदलाव
- डीएओ तरीके के रिटर्न टाइप में, शून्य हो सकने वाले कलेक्शन के इस्तेमाल से बचना. (I777dc, b/253271782, b/259426907)
- अमान्य ट्रैकर में हुए बदलावों को एमिट करने वाला फ़्लो बनाने के लिए, एपीआई जोड़ें. यह एपीआई, ऐसी स्ट्रीम बनाने के लिए काम का है जिनमें डेटाबेस में होने वाले बदलावों पर कार्रवाई की ज़रूरत होती है. (I8c790, b/252899305)
गड़बड़ियां ठीक की गईं
- Kotlin कोडजन में, ऐब्स्ट्रैक्ट प्रॉपर्टी को डीएओ गेटर या डीएओ क्वेरी के तौर पर अनुमति न दें. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि प्रॉपर्टी की वैल्यू में बदलाव न किए जा सकने वाले न होने और उसका स्टोर किया गया नतीजा तय न हो. (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) {185bध्यान दें: लाइब्रेरी को Kotlin में बदलने की वजह से, आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं. अगर आपका कोड Kotlin में था और रूम के पुराने वर्शन को कॉल कर रहा था, तो नए वर्शन को इन मामलों को हैंडल करना होगा. उदाहरण के लिए, सोर्स के साथ काम न करने वाला एक बदलाव यह है कि
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) - रूम-सामान्य को Java से Kotlin में बदला गया. (I69c48, b/206858235)
ध्यान दें: लाइब्रेरी को Kotlin में बदलने के दौरान, कुछ प्रॉपर्टी को साथी ऑब्जेक्ट में ले जाया गया है. इस वजह से, आपको सोर्स के साथ काम न कर पाने से जुड़ी समस्याएं आ सकती हैं. अगर आपका कोड Kotlin में है और Room के पुराने वर्शन को कॉल किया जा रहा है, तो इन प्रॉपर्टी को ऐक्सेस करने के लिए, नए वर्शन में ".Companion" सफ़िक्स की ज़रूरत होगी.
- रूम से जुड़े माइग्रेशन को Java से Kotlin में बदला गया. (I2724b, b/206858622)
room-runtime
में मौजूदpaging
मिलती-जुलती फ़ाइलों को Java से Kotlin में बदला. (I82fc8, b/206859668)- एक से ज़्यादा प्रोसेस को पहली बार बनाने वाले डेटाबेस बनाने और माइग्रेट करने की सुविधा को सुरक्षित रखने के लिए, FrameworkSQLite* लेवल पर मल्टी-प्रोसेस लॉक और इसके इस्तेमाल के लिए एपीआई जोड़ा गया. (Ied267, b/193182592)
गड़बड़ियां ठीक की गईं
- Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई.
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 (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 सोर्स में इंटरनल प्रॉपर्टी के लिए सपोर्ट जोड़ा गया.
रूम में यह थोड़ा सा बदलाव है. इसमें यह फ़ंक्शन के सोर्स नाम का इस्तेमाल करता है और प्रॉपर्टी से गेटर/सेटर के तौर पर उन्हें मैच करता है. पहले, यह फ़ंक्शन के 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 में, एपीआई की मदद से अपने-आप माइग्रेशन जनरेट करने की सुविधा उपलब्ध है. हालांकि, इसके लिए ज़रूरी है कि स्कीमा एक्सपोर्ट किए गए हों. रूम को यह बताने के लिए कि उसे अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, एक नई प्रॉपर्टी
@Database#autoMigrations
का इस्तेमाल करके, अलग-अलग वर्शन से अपने-आप माइग्रेट होने का एलान किया जा सकता है. जब Room को टेबल और कॉलम के नाम बदलने या मिटाने के बारे में ज़्यादा जानकारी चाहिए, तो@AutoMigration
एनोटेशन, ऐसी खास जानकारी वाली क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए,@AutoMigration
दस्तावेज़ देखें. - अपने-आप होने वाले माइग्रेशन में डिपेंडेंसी इंजेक्शन:
@ProvidedAutoMigrationSpec
एक नया एपीआई है. इसका इस्तेमाल करके यह बताया जाता है किRoomDatabase.Builder#addAutoMigrationSpec()
के ज़रिए रनटाइम के दौरानAutoMigrationSpec
दिया जाएगा. इससे, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को ऐसी खास जानकारी देने में मदद मिलती है, जब उन्हें जटिल डिपेंडेंसी की ज़रूरत होती है. - अपने-आप माइग्रेट होने की सुविधा के लिए, माइग्रेशन टेस्ट हेल्पर की सहायता: 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)
- रूम-पेजिंग से जनरेट किया गया पेजिंगसोर्स लागू करने के लिए, अब
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
एनोटेशन की मदद से, डीएओ में मल्टीमैप रिटर्न टाइप के लिए, बिना पीओजेओ वाली कुंजियों/वैल्यू के साथ काम करना. (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 लागू करने की प्रक्रिया कुंजियों को अलग तरीके से पार्स करता है, इसलिए रूम के PagingSource को मैन्युअल रूप से दी गई किसी भी कुंजी को व्यवहार में होने वाले बदलाव के लिए ध्यान में रखना होगा. इसमें पेजर के कंस्ट्रक्टर से पास की गई beforeKey शामिल है. पेजKey
से लोड होने लगेंगे. इसमेंKey
, सबसे पहले लोड होने वाला आइटम होगा. यह मौजूदा व्यवहार से अलग है, जहांLoadParams.Refresh.Key
को उपयोगकर्ता की स्क्रोल पोज़िशन माना जाता है और आइटम, बटन से पहले और बाद, दोनों में लोड किए जाते हैं.आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. ऑप्ट आउट करने पर, पेजिंग 3.0 के लिए मौजूदा सहायता का इस्तेमाल किया जाएगा. इसे Room 2.3 में लॉन्च किया गया था. हालांकि, पेजिंग 3.0 के साथ रूम का इस्तेमाल करने वाले लोगों के लिए, आने वाले समय में रिलीज़ होने वाली रिलीज़ में, इस आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. ऑप्ट-इन करने के लिए, अपने क्लासपाथ में नया रूम-पेजिंग आर्टफ़ैक्ट जोड़ें. अगर 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 में ये कमियां हैं.
एपीआई में हुए बदलाव
- रूम के
MigrationTestHelper
को अपडेट करें, ताकि एक नया कंस्ट्रक्टर एपीआई देकर, अपने-आप माइग्रेशन हो सके. यह एपीआई, डेटाबेस क्लास को टेस्ट करता है. इससे,runMigrationsAndValidate
के दौरान, हेल्पर अपने-आप माइग्रेशन की सुविधा को उसी तरह जोड़ सकता है.
गड़बड़ियां ठीक की गईं
Apple के M1 चिप के साथ काम करने के लिए, Room की SQLite नेटिव लाइब्रेरी से जुड़ी समस्या को ठीक किया गया. (b/174695268
समस्या को ठीक किया गया है, जब @Transaction फ़ंक्शन के रिटर्न टाइप में कोई फ़्लो (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 में, एपीआई की मदद से अपने-आप माइग्रेशन जनरेट करने की सुविधा उपलब्ध है. हालांकि, इसके लिए ज़रूरी है कि स्कीमा एक्सपोर्ट किए गए हों. रूम को यह बताने के लिए कि उसे अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, एक नई प्रॉपर्टी
@Database#autoMigrations
का इस्तेमाल करके, अलग-अलग वर्शन से अपने-आप माइग्रेट होने का एलान किया जा सकता है. जब Room को टेबल और कॉलम के नाम बदलने या मिटाने के बारे में ज़्यादा जानकारी चाहिए, तो@AutoMigration
एनोटेशन, ऐसे इनपुट वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए,@AutoMigration
दस्तावेज़ देखें.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक करें जिसमें रूम के स्कीमा की पुष्टि करने वाले टूल की मदद से, अतिरिक्त ब्रैकेट वाले
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 में अब एपीआई हैं, जिनकी मदद से इनपुट स्ट्रीम से पहले से पैकेज किए गए डेटा का इस्तेमाल करके डेटाबेस बनाया जा सकता है. इसकी मदद से, ऐसे मामलों में मदद मिलती है जब प्री-पैकेज डेटाबेस को gzip किया जाता है.
- टाइप कन्वर्टर उपलब्ध कराना: 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
के साथ भी एनोटेट किया गया हो. रूम, क्वेरी के नतीजे को पीओजेओ रिटर्न टाइप में बदलने की पूरी कोशिश करेगा. यह ठीक उसी तरह करना होगा जैसे@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 में ये कमिट हैं.
नई सुविधाएं
- अपने-आप बंद होने वाले डेटाबेस: रूम में अब ऐसे डेटाबेस बंद किए जा सकते हैं जिन्हें तय समय के बाद ऐक्सेस नहीं किया जाता. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसे चालू करने के लिए,
RoomDatabase.Builder#setAutoCloseTimeout()
बोलें. यह सुविधा, एक से ज़्यादा डेटाबेस वाले ऐप्लिकेशन के लिए काम की है.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जहां
@Update
या@Delete
तरीकों से अलग-अलग कॉन्फ़्लिक्ट स्ट्रेटजी वाली 'डीएओ' तरीके से, सिर्फ़ एक रणनीति के साथ कोड जनरेट होगा. इस तरह, पहले से तय की गई रणनीति को अनदेखा किया जा सकता है. (/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)
- एक से ज़्यादा क्लास लोडर का इस्तेमाल करने पर, जनरेट की गई क्लास को ढूंढने में रूम से जुड़ी समस्या ठीक की गई. ‘Serendipity | 892449346@qq.com’ को ठीक करने के लिए धन्यवाद! (b/170141113)
- एक समस्या को ठीक किया गया है. इसकी वजह से, Kotlin
@Dao
में कोई ऐसी बेस क्लास होने पर, Room गलत कोड जनरेट करता था जिसका जेनरिक, JVM में प्राइमिटिव होते हैं. (b/160258066)
बाहरी योगदान
- अगर WAL मोड चालू है और एपीआई 16 या उससे ज़्यादा है, तो Room अब डिफ़ॉल्ट रूप से
beginTransactionNonExclusive
का इस्तेमाल करेगा. ‘अहमद आई. खलील | ahmedibaraim स्थानli@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 के लिए सहायता: रूम अब
@Query
व्याख्या किए गए उन तरीकों के लिए लागू करने की सुविधा को जनरेट करने में मदद करेगा जिनका रिटर्न टाइपandroidx.paging.PagingSource
है.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
एपीआई में हुए बदलाव
@RewriteQueriesToDropUnusedColumns
एक नई सुविधाजनक एनोटेशन है. इसकी मदद से रूम, किसी क्वेरी में ‘*’ प्रोजेक्शन को इस तरह फिर से लिखता है कि नतीजे में इस्तेमाल नहीं किए गए कॉलम हटा दिए जाएं.- प्रोसेसर के तौर पर
room.expandProjection
का इस्तेमाल अब नहीं किया जा सकता. स्टार प्रोजेक्शन के साथ रूम ऑप्टिमाइज़ करने वाली क्वेरी की जगह@RewriteQueriesToDropUnusedColumns
का इस्तेमाल करें. ध्यान दें कि@RewriteQueriesToDropUnusedColumns
, कॉलम के संघर्ष के समाधानroom.expandProjection
की जगह नहीं लेता. यह समाधान, रिटर्न टाइप के लिए दिया जाता है. इनमें@Embedded
फ़ील्ड होते हैं.
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room, इंक्रीमेंटल एनोटेशन प्रोसेसर को चालू करने के लिए इस्तेमाल किए गए JDK वर्शन का सही तरीके से पता नहीं लगा पाता था. ब्लेज़ सोलर (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)
- रूम एनोटेशन प्रोसेसर में, 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
जोड़ा गया, जिसकी वजह से रूम, स्टार प्रोजेक्शन के साथ क्वेरी को फिर से लिख पाता है. इसमें सिर्फ़ रिटर्न टाइप 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)
- उस गड़बड़ी को ठीक किया गया है जहां रूम, एक ऐसे डेटाबेस को खोलते समय लेगसी स्कीमा हैश कोड स्वीकार नहीं करता जिसमें रूम 1.0 के बाद से माइग्रेशन नहीं हुआ था. इस वजह से, अमान्य स्कीमा की वजह से रनटाइम क्रैश होता था. (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
में एक नया कॉलबैक एपीआई है. इसे तब इस्तेमाल किया जाता है, जब रूम किसी डेटाबेस को नुकसान पहुंचाए बिना माइग्रेट करता है. b/79962330
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फ़ील्ड को सुरक्षित करने पर, Room किसी तरीके को फ़ील्ड सेटर के तौर पर इस्तेमाल करके गलत कोड जनरेट करता था. b/136194628
- एक से ज़्यादा इंस्टेंस को अमान्य करने की सुविधा चालू होने और invalidationService बंद होने पर, InvalidationTracker की दूसरी प्रोसेस में एनपीई (नॉन-पर्सिस्टेंट एलिमेंट) मिलने की गड़बड़ी को ठीक किया गया. b/137454915
- गड़बड़ी को ठीक किया गया. इसकी वजह से रूम,
@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()
तब इस्तेमाल किया जाता है, जब फ़ाइल किसी भी जगह पर हो. इन एपीआई का इस्तेमाल करने से, नुकसान पहुंचाने वाले माइग्रेशन का व्यवहार भी बदल जाता है. जैसे, फ़ॉलबैक माइग्रेशन के दौरान, रूम, पहले से भरे गए डेटाबेस को उपलब्ध होने पर उसे दोबारा कॉपी करने की कोशिश करेगा. ऐसा न करने पर, यह सभी टेबल को छोड़कर, फिर से बनाने की कोशिश करेगा.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 के बाद किए गए अहम बदलाव
- एफ़टीएस: अब रूम, एफ़टीएस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 { }
रैपर को स्किप करने से रोका जा सकता है.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जहां रूम उस Kotlin DAO फ़ंक्शन के लिए, TypeConverter से मैच नहीं हो पाता है जिसमें कलेक्शन टाइप का पैरामीटर होता है. b/122066791
वर्शन 2.1.0-alpha06
22 मार्च, 2019
एपीआई / व्यवहार में बदलाव
- असाइन किए गए लेन-देन की क्वेरी अब इस तरह से क्रम में लगाई जाती हैं कि Room, डेटाबेस लेन-देन को पूरा करने के लिए एक से ज़्यादा थ्रेड का इस्तेमाल न करे.
RoomDatabase.Builder.setTransactionExecutor(Executor)
को जोड़ा गया था, ताकि लेन-देन के लिए इस्तेमाल किए जाने वाले एक्सेक्यूटर को कॉन्फ़िगर किया जा सके. RoomDatabase.runInTransaction(Callable)
अब जांचे गए अपवादों को रनटाइम अपवाद में रैप नहीं करेगा. b/128623748
गड़बड़ियां ठीक की गईं
- गड़बड़ी को ठीक किया गया है. अगर कॉन्टेंट टेबल और बाहरी कॉन्टेंट की एफ़टीएस टेबल, दोनों के लिए ऑब्ज़र्वर को ऑब्ज़र्वर के साथ जोड़ा जाता है, तो अमान्य ट्रैकर के लिए इस्तेमाल होने वाली टेबल को मॉनिटर करना बंद हो जाता है. b/128508917
- SQLite 3.24.0 से मैच करने के लिए, रूम के SQLite व्याकरण को अपडेट किया गया. b/110883668
वर्शन 2.1.0-alpha05
13 मार्च, 2019
नई सुविधाएं
RoomDatabase.withTransaction
एक्सटेंशन फ़ंक्शन, आपको कोरूटीन में डेटाबेस के लेन-देन सुरक्षित तरीके से करने की अनुमति देता है.room-ktx
आर्टफ़ैक्ट में, कोरूटीन के साथ-साथ रूम एक्सटेंशन फ़ंक्शन उपलब्ध हैं.@Transaction
के साथ एनोटेट किए गए नॉन-ऐब्स्ट्रैक्ट डीएओ मैथड, अब सस्पेंड फ़ंक्शन हो सकते हैं. b/120241587
एपीआई / व्यवहार में बदलाव
- अन्य androidx आर्टफ़ैक्ट के नाम जैसा ही नाम रखने के बाद, आर्टफ़ैक्ट
room-coroutines
का नाम बदलकरroom-ktx
कर दिया गया है. 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
आम समस्याएं
- कमरा 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 अब गड़बड़ी का मैसेज दिखाएगा. लेन-देन पर सिर्फ़ थ्रेड की सुविधा होती है. इस वजह से, रूम के लिए किसी ऐसे फ़ंक्शन से लेन-देन शुरू और खत्म करना मुमकिन नहीं है जो अलग-अलग थ्रेड में क्वेरी कर सकता है. b/120109336 OnConflictStrategy.FAIL
औरOnConflictStrategy.ROLLBACK
को@Deprecated
के तौर पर मार्क किया गया है, क्योंकि वे Android की मौजूदा SQLite बाइंडिंग के साथ ठीक से काम नहीं करते. b/117266738
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, अगर DAO का तरीका एक निलंबित फ़ंक्शन था, तो Room, रिटर्न टाइप के TypeConverter का सही तरीके से इस्तेमाल नहीं करता था. b/122988159
- वह गड़बड़ी ठीक की गई है जिसमें रूम, इनहेरिट किए गए सस्पेंड फ़ंक्शन को गलती से, सस्पेंड नहीं करने वाले फ़ंक्शन के तौर पर पहचान लेता था. b/122902595
- एक बग को ठीक किया गया है. इसकी वजह से, जब कोई
@Embedded
फ़ील्ड पैरंट क्लास में होता था और उसका इस्तेमाल एक से ज़्यादा चाइल्ड क्लास में किया जाता था, तो Room गलत कोड जनरेट करता था. b/121099048 beginTransaction()
औरendTransaction()
के बीच डीएओ के सस्पेंड फ़ंक्शन को लागू करने पर, डेटाबेस में डेडलॉक होने की समस्या को ठीक किया गया. b/120854786
वर्शन 2.1.0-alpha03
4 दिसंबर, 2018
एपीआई में हुए बदलाव
@Fts3
/@Fts4
में FTStokenizer
अब Enum के बजाय स्ट्रिंग लेता है. इससे 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
- उस गड़बड़ी को ठीक किया गया है जहां रूम,
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
से भी एनोटेट किया जा सकता है. इससे, मैपिंग की गई फ़ुल-टेक्स्ट सर्च टेबल की मदद से क्लास के बारे में जानकारी दी जा सकती है. एनोटेशन के तरीकों से, FTS को ज़्यादा पसंद के मुताबिक बनाने के विकल्प उपलब्ध हैं. b/62356416 - व्यू: Room में अब किसी क्लास को स्टोर की गई क्वेरी के तौर पर दिखाया जा सकता है. इसे @DatabaseView एनोटेशन का इस्तेमाल करके व्यू भी कहा जाता है. b/67033276
- अपने-आप लागू होने वाली वैल्यू: Room में अब AutoValue एनोटेशन वाली क्लास को इकाइयों और पीओजेओ के तौर पर एलान करने की सुविधा है. रूम के एनोटेशन
@PrimaryKey
,@ColumnInfo
,@Embedded
, और@Relation
को अब ऑटो वैल्यू के तौर पर एनोटेट किए गए क्लास के ऐब्सट्रैक्ट तरीकों में दिखाया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ@CopyAnnotations
भी होना चाहिए, ताकि Room उन्हें सही तरीके से समझ सके. b/62408420 - डॉक्टर के पर्चे पर मिलने वाली दवा के रिटर्न टाइप के लिए अन्य सहायता:
@Insert
,@Delete
या@Update
से एनोटेट किए गए DAO मैथड, अब डॉक्टर के पर्चे पर मिलने वाली दवा के रिटर्न टाइपCompletable
,Single<T>
, औरMaybe<T>
के साथ काम करते हैं. b/63317956 @Relation
वाले ऐसे टाइप जिन्हें बदला नहीं जा सकता: पहले, रूम में@Relation
एनोटेशन वाले फ़ील्ड को सेट किया जा सकता था. हालांकि, अब उन्हें कन्स्ट्रक्टर पैरामीटर के तौर पर इस्तेमाल किया जा सकता है.enableMultiInstanceInvalidation
: एक ही डेटाबेस फ़ाइल का इस्तेमाल करके, RoomDatabase के कई इंस्टेंस में अमान्य होने को चालू करने के लिए,RoomDatabase.Builder
में एक नया एपीआई है. एक से ज़्यादा इंस्टेंस को अमान्य करने की यह सुविधा, एक से ज़्यादा प्रोसेस पर भी काम करती है. b/62334005fallbackToDestructiveMigrationOnDowngrade
:RoomDatabase.Builder
में एक नया एपीआई है, जो डेटाबेस को अपने-आप फिर से बनाता है. ऐसा तब होता है, जब डेटाबेस को किसी पुराने वर्शन पर डाउनग्रेड किया जाता है. b/110416954ignoredColumns
:@Entity
एनोटेशन में मौजूद एक नया एपीआई है. इसका इस्तेमाल, अनदेखा किए गए फ़ील्ड को नाम के हिसाब से सूची में शामिल करने के लिए किया जा सकता है. किसी इकाई पर इनहेरिट किए गए फ़ील्ड को अनदेखा करने के लिए मददगार. b/63522075
एपीआई / व्यवहार में बदलाव
RoomDatabase
में मौजूदmCallback
औरmDatabase
को अब@Deprecated
कर दिया गया है. साथ ही, Room के अगले बड़े वर्शन में इन्हें हटा दिया जाएगा. b/76109329
गड़बड़ियां ठीक की गईं
- उन दो समस्याओं को ठीक किया गया जिनकी वजह से रूम, गड़बड़ी वाले डेटाबेस से ठीक से वापस नहीं आ पाता था या प्रोसेस शुरू करने के दौरान फ़ाइलें ठीक से काम नहीं करतीं. b/111504749 और b/111519144
- रूम अब डेटा क्लास में 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
के बजाय रूम 1.1.1-rc1
का इस्तेमाल करें.
गड़बड़ी को ठीक किया गया, जहां माइग्रेशन शुरू होने के बाद रूम सही तरीके से काम नहीं करेगा b/79362399
वर्शन 1.1.0
वर्शन 1.1.0-बीटा3
19 अप्रैल, 2018
गड़बड़ियां ठीक की गईं
- जब कोई Kotlin POJO, किसी ऐसी रिलेशन इकाई का रेफ़रंस देता है जिसे Java में तय किया गया था, तो कंपाइलेशन से जुड़ी गड़बड़ी ठीक करना b/78199923
वर्शन 1.1.0-beta2
5 अप्रैल, 2018
गड़बड़ियां ठीक की गईं
Room के Rx
Single
औरMaybe
लागू करने में एक गंभीर गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, क्वेरी को समय से पहले रीसाइकल किया जाता था. इससे,Single
याMaybe
के दिखाए गए इंस्टेंस में एक से ज़्यादा ऑब्ज़र्वर जोड़ने पर समस्याएं आती थीं. b/76031240अगर [RoomDatabase.clearAllTables][ref-clearAllTables] को किसी ट्रांज़ैक्शन के अंदर कॉल किया जाता है, तो यह डेटाबेस को
VACUUM
नहीं करेगा. b/77235565
वर्शन 1.1.0-beta1
21 मार्च, 2018
एपीआई में हुए बदलाव
- एपीआई की समीक्षा के सुझाव के आधार पर,
@RawQuery
अब क्वेरी पैरामीटर के तौर परString
को स्वीकार नहीं करता. आपको [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इस्तेमाल करना होगा. (आर्ग्युमेंट के साथ [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इंस्टेंस आसानी से बनाने के लिए, [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] देखें). - RoomDatabase.Builder के [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] मैथड में अब
vararg Integer
के बजायvararg int
का इस्तेमाल किया जा सकता है.
गड़बड़ियां ठीक की गईं
- [RoomDatabase.clearAllTables][ref-clearAllTables] अब WAL चेकपॉइंट सेट करके और डेटाबेस को
VACUUM
करके, ऑपरेटिंग सिस्टम को खाली जगह वापस देने की कोशिश करता है. - [
@RawQuery
][ref-RawQuery] अबobservedEntities
प्रॉपर्टी के लिए किसी भी पोजो को स्वीकार करता है, बशर्ते वह पोजो अपने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