रूम
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
7 अगस्त, 2024 | 2.6.1 | - | - | 2.7.0-ऐल्फ़ा06 |
डिपेंडेंसी तय करना
रूम पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट. Google की Maven रिपॉज़िटरी पढ़ें हमारा वीडियो देखें.
रूम की डिपेंडेंसी में ये शामिल हैं टेस्टिंग रूम का माइग्रेशन और रूम RxJava
उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको build.gradle
फ़ाइल में ज़रूरत है
आपका ऐप्लिकेशन या मॉड्यूल:
ग्रूवी
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbol Processing (KSP) ksp "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" }
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("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") }
KAPT प्लग इन का इस्तेमाल करने के बारे में जानकारी के लिए, KAPT दस्तावेज़ देखें.
KSP प्लग इन का इस्तेमाल करने के बारे में जानकारी के लिए, KSP क्विक-स्टार्ट दस्तावेज़ देखें.
Kotlin एक्सटेंशन का इस्तेमाल करने के बारे में जानकारी के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ें लेख पढ़ें.
इसके अलावा, Android के अलावा दूसरी लाइब्रेरी के लिए (जैसे, Java या Kotlin सिर्फ़ Gradle मॉड्यूल)
रूम एनोटेशन इस्तेमाल करने के लिए, androidx.room:room-common
का इस्तेमाल किया जा सकता है.
कंपाइलर विकल्पों को कॉन्फ़िगर करना
रूम में, एनोटेशन प्रोसेसर के ये विकल्प मौजूद हैं.
room.schemaLocation |
directory
इससे, दी गई टेबल में मौजूद JSON फ़ाइलों में डेटाबेस स्कीमा को एक्सपोर्ट करने की सुविधा चालू होती है डायरेक्ट्री. रूम माइग्रेशन देखें हमारा वीडियो देखें. |
room.incremental |
boolean
यह Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर चालू करता है. डिफ़ॉल्ट मान true है.
|
room.generateKotlin |
boolean
Java के बजाय, Kotlin सोर्स फ़ाइलें जनरेट करें. केएसपी ज़रूरी है. डिफ़ॉल्ट मान false है.
ज़्यादा जानकारी के लिए वर्शन 2.6.0 के नोट देखें.
|
रूम Gradle प्लग इन का इस्तेमाल करना
रूम के वर्शन 2.6.0 और उसके बाद वाले वर्शन के साथ, रूम Gradle प्लग इन का इस्तेमाल इन कामों के लिए किया जा सकता है रूम कंपाइलर के लिए विकल्प कॉन्फ़िगर करें. प्लग इन प्रोजेक्ट को ऐसे कॉन्फ़िगर करता है इससे स्कीमा जनरेट होते हैं (जो कंपाइल टास्क का आउटपुट होते हैं और अपने-आप माइग्रेशन के लिए इस्तेमाल किए गए) को सही तरीके से कॉन्फ़िगर किया गया हो, ताकि उसे फिर से जनरेट किया जा सके और कैश मेमोरी में सेव किए जा सकने वाले बिल्ड.
प्लग इन जोड़ने के लिए, अपनी टॉप-लेवल की Gradle बिल्ड फ़ाइल में, प्लगिन और उसका वर्शन.
ग्रूवी
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
मॉड्यूल-लेवल की Gradle बिल्ड फ़ाइल में, प्लगिन लागू करें और room
का इस्तेमाल करें
एक्सटेंशन चुनें.
ग्रूवी
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
रूम Gradle प्लग इन का इस्तेमाल करते समय, schemaDirectory
को सेट करना ज़रूरी है. यह
रूम कंपाइलर, कंपाइल किए जाने वाले कई टास्क, और उसके बैकएंड को कॉन्फ़िगर करेगा
(javac, KAPT, KSP) का इस्तेमाल करके स्कीमा फ़ाइलों को फ़्लेवर वाले फ़ोल्डर में आउटपुट करने के लिए कहा जाता है, उदाहरण के लिए
schemas/flavorOneDebug/com.package.MyDatabase/1.json
. इन फ़ाइलों को
को डेटा स्टोर करने की जगह में चेक किया गया है. इसका इस्तेमाल पुष्टि करने और अपने-आप माइग्रेशन के लिए किया जा सकता है.
कुछ विकल्पों को Room Gradle प्लग इन के सभी वर्शन में कॉन्फ़िगर नहीं किया जा सकता,
भले ही ये रूम कंपाइलर के साथ काम करते हों. इस टेबल में,
विकल्प चुनकर, Room Gradle प्लग इन का वर्शन दिखाता है, जिसमें
उस विकल्प को कॉन्फ़िगर करने के लिए, room
एक्सटेंशन का इस्तेमाल करें. अगर आपका वर्शन इससे पहले का है,
या अगर यह विकल्प अभी उपलब्ध नहीं है, तो
एनोटेशन प्रोसेसर विकल्पों का इस्तेमाल करें.
विकल्प | वर्शन से |
---|---|
room.schemaLocation (ज़रूरी) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
एनोटेशन प्रोसेसर विकल्पों का इस्तेमाल करें
अगर रूम ग्रेडल प्लगिन का इस्तेमाल नहीं किया जा रहा है या आपका मनचाहा विकल्प नहीं है प्लगिन के आपके वर्शन के साथ काम करता है, तो आप इसका इस्तेमाल करके रूम को कॉन्फ़िगर कर सकते हैं व्याख्या प्रोसेसर विकल्प, जैसा कि बिल्ड डिपेंडेंसी जोड़ें. आपने कैसे किया व्याख्या करने के विकल्प इस बात पर निर्भर करते हैं कि रूम के लिए 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 को अप-टू-डेट जांच करते समय इस डायरेक्ट्री के बारे में पता है.
रूम डेटाबेस को माइग्रेट करना
CommandLineArgumentsProvider
को लागू करने की पूरी प्रोसेस दिखाता है, जो
स्कीमा की जगह.
सुझाव
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको नई समस्याओं का पता चलता है या आपको इस लाइब्रेरी को बेहतर बनाने के लिए आइडिया मिल सकते हैं. कृपया, इस मौजूदा समस्याएं इस लाइब्रेरी में जोड़ें. किसी मौजूदा समस्या के लिए अपना वोट दें. इसके लिए ये तरीके अपनाएं: स्टार बटन पर क्लिक करके ऐसा किया जा सकता है.
समस्या को ट्रैक करने वाले टूल से जुड़ा दस्तावेज़ देखें हमारा वीडियो देखें.
वर्शन 2.7
वर्शन 2.7.0-alpha06
7 अगस्त, 2024
androidx.room:room-*:2.7.0-alpha06
रिलीज़ हो गया है. वर्शन 2.7.0-alpha06 में ये कमिट मौजूद हैं.
एपीआई में बदलाव
- KMP प्रोजेक्ट में
RoomDatabase
के लिए इंस्टैंशिएशन का सेटअप बदलें.
Kotlin 2.0 कंपाइलेशन मॉडल की वजह से, instantiateImpl()
नाम के जनरेट किए जाने वाले फ़ंक्शन का रेफ़रंस देने की रणनीति ज़्यादा बेहतर तरीके से काम करती है. instantiateImpl()
रणनीति की जगह दो नए एपीआई, @ConstructedBy
और RoomDatabaseConstructor
लॉन्च किए गए हैं. नई रणनीति इस तरह है:
RoomDatabaseConstructor
को लागू करने वाला अनुमानित ऑब्जेक्ट तय करेंexpect 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) के लिए सहायता जोड़ी गई
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक करें जहां रूम, Android के अलावा अन्य डिवाइसों के लिए,
recursiveFetchArrayMap
को गलत तरीके से कॉल जनरेट कर सकता है. (710c36, b/352482325) - उस समस्या को ठीक कर सकता है जिसमें रूम, केएमपी प्रोजेक्ट में 'कनेक्शन की कोशिश का समय खत्म' के बारे में अपवाद देता है. (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
एनोटेट की गई क्लास में कोई पैकेज न होने पर, जनरेट किया गया डेटाबेस लागू नहीं हो पाता था. (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) सहायता: इस रिलीज़ में, रूम को Kotlin मल्टीप्लैटफ़ॉर्म (केएमपी) लाइब्रेरी में बदलने के लिए उसमें बदलाव किया गया है. हालांकि, अब भी कुछ काम करना बाकी है, लेकिन इस रिलीज़ में रूम का नया वर्शन लॉन्च किया गया है. इस वर्शन की ज़्यादातर सुविधाएं “सामान्य” (सामान्य सिस्टम के हिसाब से) हैं. इन सुविधाओं को मल्टीप्लैटफ़ॉर्म के तौर पर बनाया गया है. फ़िलहाल, 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
ड्राइवर की मदद से रूम कॉन्फ़िगर करने के लिए, एक एपीआई जोड़ा गया है:RoomDatabase.Builder.setDriver()
.SQLite
ड्राइवर एपीआई के बारे में ज़्यादा जानकारी के लिए, SQLite KMP दस्तावेज़ देखें- ड्राइवर एपीआई से मौजूदा
SQLiteConnection
को ऐक्सेस करने के लिए एपीआई जोड़े गए हैं:RoomDatabase.useReaderConnection
औरRoomDatabase.useWriterConnection
. - Verios Room से जुड़े कॉलबैक में अब एक ओवरलोडेड वर्शन है जिसे
SupportSQLiteDatabase
के बजायSQLiteConnection
मिलता है. केएमपी प्रोजेक्ट पर माइग्रेट करते समय, इन्हें ओवरराइड कर दिया जाता है. किसी 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
लोड किए गए अपवादों को, अब थ्रॉउबल वाले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). रूम में Kotlin CodeGen चालू करने के लिए, केएसपी के लिए अपने प्रोसेसर विकल्पों में
room.generateKotlin
विकल्प का नाम जोड़ें. केएसपी के लिए, प्रोसेसर के विकल्पों को पास करने के तरीके के बारे में ज़्यादा जानकारी के लिए, केएसपी दस्तावेज़ देखें.
ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, इस बात का ध्यान रखना ज़रूरी है कि कुछ अन्य पाबंदियां भी जोड़ी गई हैं. Kotlin CodeGen में डीएओ गेटर या डीएओ क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी को अनुमति नहीं है. इसके बजाय, इस तरह की गलत धारणा से बचने के लिए कि प्रॉपर्टी वैल्यू में बदलाव नहीं किया जा सकता और उसका स्टोर किया गया नतीजा तय होता है. इसके बजाय, इसे फ़ंक्शन के तौर पर दोबारा लिखने की उम्मीद की जाती है. एक और पाबंदी यह भी जोड़ी गई है कि Kotlin CodeGen के लिए रूम में अब बिना वैल्यू वाले कलेक्शन रिटर्न टाइप की अनुमति नहीं है.
चेतावनी: आपको लग सकता है कि Kotlin CodeGen का इस्तेमाल करते समय आपके प्रोजेक्ट, शून्य होने की संभावना के मामले में ज़्यादा सख्त हैं. Kotlin CodeGen में, टाइप आर्ग्युमेंट की शून्यता ज़रूरी है. Java में इस प्रोसेस को ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` का रिटर्न टाइप है और टेबल खाली है. Java CodeGen में इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको एक गड़बड़ी मिलेगी. इससे बचने के लिए, यह मानते हुए कि कोई खाली नहीं है, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. </foo?\></foo\>
- रूम Gradle प्लग इन के लिए नया आर्टफ़ैक्ट
androidx.room
आईडी वाले रूम में जोड़ दिया गया है. यह Gradle एनोटेशन प्रोसेसर विकल्पों के ज़रिए, स्कीमा के इनपुट और आउटपुट होने से जुड़ी कई मौजूदा समस्याओं को हल करता है. ज़्यादा जानकारी के लिए, रूम वर्शन 2.6.0-ऐल्फ़ा02 प्रॉडक्ट की जानकारी देखें. - रूम इकाइयों में वैल्यू क्लास अब 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
एनोटेशन में दिए गए हर कॉलम नाम (keyColumnName
,valueColumnName
या दोनों) के लिए, आपको सिर्फ़columnName
के साथ@MapColumn
एनोटेशन का एलान करना होगा. साथ ही, डीएओ फ़ंक्शन के रिटर्न टाइप में रेफ़रंस वाले खास टाइप (मैप की कुंजी या वैल्यू) वाले आर्ग्युमेंट पर, एनोटेशन का इस्तेमाल करना होगा. ऐसा इसलिए होता है, क्योंकि@MapColumn
एनोटेशन का इस्तेमाल@MapInfo
जैसे फ़ंक्शन के बजाय, डीएओ फ़ंक्शन के रिटर्न टाइप में सीधे तौर पर टाइप आर्ग्युमेंट पर किया जाता है. ज़्यादा जानकारी के लिए, कृपया@MapColumn
दस्तावेज़ देखें. (Ib0305, b/203008711)- काम करने की सुविधा में रुकावट की व्याख्या करने के लिए, एपीआई फ़ाइलों को अपडेट किया गया (I8e87a, b/287516207)
- रूम 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 में ये कमियां हैं.
रूम Gradle प्लग इन
इस नई रिलीज़ में आईडी androidx.room
वाले रूम Gradle प्लग इन के लिए एक नया आर्टफ़ैक्ट शामिल है, जो Gradle एनोटेशन प्रोसेसर विकल्पों के ज़रिए स्कीमा के इनपुट और आउटपुट होने से जुड़ी कई मौजूदा समस्याओं को हल करता है. रूम Gradle प्लग इन, प्रोजेक्ट को इस तरह कॉन्फ़िगर करता है कि जनरेट किए गए ऐसे स्कीमा जिनका अपने-आप माइग्रेशन के लिए इस्तेमाल किया जाता है और जो कंपाइल किए गए टास्क के आउटपुट होते हैं उन्हें फिर से बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड पाने के लिए सही तरीके से कॉन्फ़िगर किया जाता है. यह प्लगिन, बेस स्कीमा की जगह को कॉन्फ़िगर करने के लिए डीएसएल की सुविधा देता है:
room {
schemaDirectory("$projectDir/schemas/")
}
इसके बाद प्लगिन, रूम कंपाइलर, कंपाइल टास्क, और उसके बैकएंड (javac, KAPT, KSP) को कॉन्फ़िगर करेगा, ताकि स्कीमा फ़ाइलों को फ़्लेवर वाले फ़ोल्डर, यानी schemas/flavorOneDebug/com.package.MyDatabase/1.json
में आउटपुट किया जा सके. हमेशा की तरह, इन फ़ाइलों को डेटा स्टोर करने की जगह में चेक-इन किया जाता है, ताकि पुष्टि करने और अपने-आप माइग्रेशन होने की सुविधा के लिए उनका इस्तेमाल किया जा सके. एनोटेशन प्रोसेसर विकल्पों के बजाय प्लगिन का इस्तेमाल करने के लिए माइग्रेट करने पर, मौजूदा स्कीमा फ़ाइलों को प्लगिन से बनाई गई जनरेट की गई फ़्लेवर डायरेक्ट्री में कॉपी करना होगा. माइग्रेशन के लिए, यह एक बार की जाने वाली कार्रवाई है. इसे मैन्युअल तौर पर करना पड़ता है. सुझाव, शिकायत या राय का जवाब मिलने और प्लगिन के सही से काम करने के बाद, developers.android.com में मौजूद स्कीमा दस्तावेज़ को अपडेट किया जाएगा. इसलिए, कृपया इसे आज़माएं.
एपीआई में बदलाव
- एसएएम कन्वर्ज़न के इस्तेमाल की अनुमति देने के लिए,
RoomDatabase.QueryCallback
को एक फ़ंक्शनल इंटरफ़ेस के तौर पर बताया गया है. (Iab8ea, b/281008549)
गड़बड़ियां ठीक की गईं
- Java से Kotlin में रूम सोर्स के माइग्रेशन के बाद, Robolectric में डेटाबेस को इंस्टैंशिएट करते समय आने वाली समस्या को ठीक करना. (Ic053c, b/274924903)
वर्शन 2.6.0-alpha01
22 मार्च, 2023
androidx.room:room-*:2.6.0-alpha01
रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
- KSP के लिए रूम में वैल्यू क्लास की सुविधा. रूम अब इकाइयों में वैल्यू क्लास के साथ काम करता है. (4194095)
- Kotlin कोड जनरेशन(या “Kotlin CodeGen”) को अब रूम (4297ec0) में चालू किया जा सकता है. रूम में Kotlin CodeGen चालू करने के लिए, केएसपी के लिए अपने प्रोसेसर विकल्पों में
room.generateKotlin
विकल्प का नाम जोड़ें. केएसपी के लिए, प्रोसेसर के विकल्पों को पास करने के तरीके के बारे में ज़्यादा जानकारी के लिए, केएसपी दस्तावेज़ देखें.
ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, इस बात का ध्यान रखना ज़रूरी है कि कुछ अन्य पाबंदियां भी जोड़ी गई हैं. Kotlin CodeGen में डीएओ गेटर या डीएओ क्वेरी के तौर पर ऐब्स्ट्रैक्ट प्रॉपर्टी को अनुमति नहीं है. इसके बजाय, इस तरह की गलत धारणा से बचने के लिए कि प्रॉपर्टी वैल्यू में बदलाव नहीं किया जा सकता और उसका स्टोर किया गया नतीजा तय होता है. इसके बजाय, इसे फ़ंक्शन के तौर पर दोबारा लिखने की उम्मीद की जाती है. एक और पाबंदी यह भी जोड़ी गई है कि 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 टेस्ट में इस्तेमाल किए जाने पर, रूम में गड़बड़ी होती है. (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). निलंबित ट्रांज़ैक्शन के दौरान, रूम, ट्रांज़ैक्शन परफ़ॉर्मर के थ्रेड का इस्तेमाल करता है और इसमें इवेंट लूप चालू करता है. साथ ही, डेटाबेस से जुड़ी कार्रवाइयों को निलंबित करता है, ताकि वे सभी ट्रांज़ैक्शन कोरूटीन में शामिल हो जाएं. आम तौर पर, यह उम्मीद की जाती है कि ट्रांज़ैक्शन थ्रेड, शुरू होने वाले थ्रेड से अलग होगा. हालांकि, कुछ मामलों में दोनों एक जैसे होते हैं. फिर से साइन इन करने के ऐसे मामलों को मैनेज करने के लिए,withTransaction()
को फिर से रीफ़ैक्टर किया गया, ताकि यह कंट्रोल जॉब पर निर्भर न रहे. इसके बजाय, यह ट्रांज़ैक्शन थ्रेड में मौजूदrunBlocking
में से, निलंबित किए गए ट्रांज़ैक्शन ब्लॉक को लागू करेगा.
वर्शन 2.5.0
वर्शन 2.5.0
22 फ़रवरी, 2023
androidx.room:room-paging-guava:2.5.0
, androidx.room:room-paging-rxjava2:2.5.0
, और androidx.room:room-paging-rxjava3:2.5.0
रिलीज़ हुए हैं. वर्शन 2.5.0 में ये कमियां शामिल हैं.
वर्शन 2.5.0
11 जनवरी, 2023
androidx.room:room-*:2.5.0
रिलीज़ हो गया है. वर्शन 2.5.0 में ये कमियां शामिल हैं.
2.4.0 के बाद से हुए अहम बदलाव
room-runtime
के सभी सोर्स को Java से Kotlin में बदल दिया गया है. ध्यान दें कि अगर आपका कोड, Kotlin में है, तो आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं. ऐसा, Kotlin में लाइब्रेरी के कन्वर्ज़न की वजह से हो सकता है. उदाहरण के लिए, एक ज्ञात स्रोत के साथ असंगत बदलाव यह है किInvalidationTracker
में अब आपकोObserver
मेंonInvalidate()
कोSet
प्रकार का पैरामीटर रखने के लिएMutableSet
की जानकारी देनी होगी. इसके अलावा, कुछ गेटर मेथड को ऐसी प्रॉपर्टी में बदल दिया गया है जिनके लिए Kotlin फ़ाइलों पर प्रॉपर्टी ऐक्सेस सिंटैक्स की ज़रूरत होती है. अगर कोई गड़बड़ी होती है, तो कृपया गड़बड़ी की शिकायत करें.- एक नया शॉर्टकट एनोटेशन जोड़ा गया,
@Upsert
, जो यूनीकनेस विवाद न होने पर इकाई को शामिल करने की कोशिश करता है या कोई टकराव होने पर इकाई को अपडेट करता है. (I7aaab, b/241964353) - रूम पेजिंग की सुविधा के लिए, रूम पेजिंग से जुड़े नए आर्टफ़ैक्ट
room-paging-rxjava2
,room-paging-rxjava3
, औरroom-paging-guava
जोड़े गए हैं. @MapInfo
(Icc4b5) में, साफ़ तौर पर जानकारी देने के लिए, कुंजी और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए
वर्शन 2.5.0-rc01
7 दिसंबर, 2022
androidx.room:room-*:2.5.0-rc01
रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये कमिट हैं.
- यह रिलीज़,
2.5.0-beta02
की तरह है.
वर्शन 2.5.0-beta02
9 नवंबर, 2022
androidx.room:room-*:2.5.0-beta02
रिलीज़ हो गया है. वर्शन 2.5.0-beta02 में ये कमिट हैं.
एपीआई में बदलाव
- उन अलग-अलग एपीआई को ठीक करें जो Java के अरे के व्यवहार से मिलान करने के लिए, इन-वैरिएंट (
Array<Any?>
) से कॉन्ट्रावैरिएंट (Array<out Any?>
) तक क्वेरी आर्ग्युमेंट को लेते हैं. (b/253531073)
वर्शन 2.5.0-beta01
5 अक्टूबर, 2022
androidx.room:room-*:2.5.0-beta01
रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये कमिट हैं.
एपीआई में बदलाव
@Upsert
के साथ काम करने वाले कम से कम वर्शन को एपीआई 16 पर सीमित करें. ऐसा इसलिए होता है, क्योंकि पुराने एपीआई में, मुख्य कुंजी की कंस्ट्रक्शन की समस्या की पहचान नहीं की जा सकती. (I5f67f, b/243039555)
गड़बड़ियां ठीक की गईं
- शैडो टेबल की स्कीमा
.json
फ़ाइलों में गलत तरीके से एक्सपोर्ट किए जाने की समस्या ठीक की गई. इससे वे खराब हो रही थीं. (I4f83b, b/246751839)
वर्शन 2.5.0-alpha03
24 अगस्त, 2022
androidx.room:room-*:2.5.0-alpha03
रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये कमियां हैं.
नई सुविधाएं
- एक नया शॉर्टकट एनोटेशन जोड़ा गया,
@Upsert
, जो यूनीकनेस विवाद न होने पर इकाई को शामिल करने की कोशिश करता है या कोई टकराव होने पर इकाई को अपडेट करता है. (I7aaab, b/241964353)
गड़बड़ियां ठीक की गईं
- अपने-आप माइग्रेट होने वाली विदेशी कुंजी की कंस्ट्रेंट जांच के दौरान, रूम में अब
IllegalStateException
के बजायSQLiteConstraintException
का इस्तेमाल किया जाएगा. (I328 दिन) 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/903)
एपीआई में बदलाव
room-runtime
के सभी हिस्सों को Java से Kotlin में बदल दिया गया है. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25) {185bध्यान दें: लाइब्रेरी के Kotlin में कन्वर्ज़न की वजह से, आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं. अगर आपका कोड Kotlin में था और रूम के पुराने वर्शन को कॉल कर रहा था, तो नए वर्शन को इन मामलों को हैंडल करना होगा. उदाहरण के लिए, एक ज्ञात स्रोत के साथ असंगत बदलाव यह है कि
InvalidationTracker
में अब आपकोObserver
मेंonInvalidate()
कोSet
प्रकार का पैरामीटर रखने के लिएMutableSet
की जानकारी देनी होगी.@MapInfo
(Icc4b5) में, साफ़ तौर पर जानकारी देने के लिए, कुंजी और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए- प्रॉपर्टी गैटर में
@Ignore
को फिर से अनुमति देने के लिए, सोर्स के साथ काम करने से जुड़ी समस्या को ठीक करें. (Ifc2fb)
गड़बड़ियां ठीक की गईं
- डुप्लीकेट कॉलम रिज़ॉल्यूशन ह्यूरिस्टिक एल्गोरिदम. रूम अब मल्टीमैप क्वेरी में साफ़ तौर पर जानकारी न देने वाले कॉलम को ठीक करने की कोशिश करेगा. इससे, एक जैसे नाम वाली टेबल वाले जॉइन को नतीजे डेटा ऑब्जेक्ट के साथ सही तरीके से मैप करने की अनुमति मिलती है. (I4b444, b/201306012, b/212279118)
वर्शन 2.5.0-alpha01
23 फ़रवरी, 2022
androidx.room:room-*:2.5.0-alpha01
रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये कमियां हैं.
एपीआई में बदलाव
- उस समस्या को ठीक किया गया है जहां Kotlin सोर्स में रूम
@IntDef
के इस्तेमाल को लागू नहीं किया जा रहा था. (I75f41, b/217951311) - प्रॉपर्टी गैटर में
@Query
को फिर से अनुमति देने के लिए, सोर्स के साथ काम करने से जुड़ी समस्या को ठीक किया गया है. (I0a09b) - रूम-सामान्य को Java से Kotlin में बदला गया. (I69c48, b/206858235)
ध्यान दें: आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं, क्योंकि लाइब्रेरी को Kotlin में कन्वर्ज़न के दौरान कुछ प्रॉपर्टी को कंपैनियन ऑब्जेक्ट में ले जाया गया है. अगर आपका कोड Kotlin में था और रूम के पुराने वर्शन से कॉल कर रहा था, तो नए वर्शन में ".Companion" होना ज़रूरी है प्रत्यय का इस्तेमाल करें.
- रूम से जुड़े माइग्रेशन को Java से Kotlin में बदला गया. (I2724b, b/206858622)
room-runtime
में मौजूदpaging
मिलती-जुलती फ़ाइलों को Java से Kotlin में बदला. (I82fc8, b/206859668)- एक से ज़्यादा प्रोसेस को पहली बार बनाने वाले डेटाबेस बनाने और माइग्रेट करने की सुविधा को सुरक्षित रखने के लिए, FrameworkSQLite* लेवल पर मल्टी-प्रोसेस लॉक और इसके इस्तेमाल के लिए एपीआई जोड़ा गया. (Ied267, b/193182592)
गड़बड़ियां ठीक की गईं
- Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सपोर्ट जोड़ा गया.
रूम में यह मामूली बदलाव है, जहां यह सोर्स का इस्तेमाल करेगा
फ़ंक्शन का नाम और प्रॉपर्टी से गेटर/सेटर के तौर पर मेल खाना
(पहले, इसमें फ़ंक्शन के JVM नाम का इस्तेमाल किया जा रहा था, जो
.
अगर गेटर/सेटर से मिलान करने के लिए, कस्टम
@JvmName
एनोटेशन का इस्तेमाल किया जा रहा है है, तो कृपया अपडेट (If6531, b/205289020)
वर्शन 2.4.3
वर्शन 2.4.3
27 जुलाई, 2022
androidx.room:room-*:2.4.3
रिलीज़ हो गया है. वर्शन 2.4.3 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से रूम, 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
या इसके बराबर की वैल्यू को कंपाइल करने की वजह से, डिफ़ॉल्ट इंटरफ़ेस तरीके को जनरेट करने वाली बॉडी के साथ, डाओ@Transaction
सस्पेंड फ़ंक्शन के लिए कोड जनरेट करने से जुड़ी समस्या को हल किया गया. (Ia4ce5)- गड़बड़ी को ठीक करना जहां रूम,
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 के बाद से हुए अहम बदलाव
- अपने-आप माइग्रेशन: रूम अब अपने-आप माइग्रेशन जनरेट करने के लिए एक एपीआई की सुविधा देता है. हालांकि, इसके लिए ज़रूरी है कि स्कीमा एक्सपोर्ट किए जा रहे हों. रूम को यह बताने के लिए कि उसे अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, एक नई प्रॉपर्टी
@Database#autoMigrations
का इस्तेमाल करके, अलग-अलग वर्शन से अपने-आप माइग्रेट होने का एलान किया जा सकता है. जब रूम को टेबल और कॉलम के नाम बदलने या मिटाने के बारे में ज़्यादा जानकारी की ज़रूरत होती है, तो@AutoMigration
एनोटेशन, इस तरह के इनपुट वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए,@AutoMigration
दस्तावेज़ देखें. - अपने-आप होने वाले माइग्रेशन में डिपेंडेंसी इंजेक्शन:
@ProvidedAutoMigrationSpec
एक नया एपीआई है. इसका इस्तेमाल करके यह बताया जाता है किRoomDatabase.Builder#addAutoMigrationSpec()
के ज़रिए रनटाइम के दौरानAutoMigrationSpec
दिया जाएगा. इसकी मदद से, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को जटिल डिपेंडेंसी की ज़रूरत होने पर इस तरह के निर्देश दिए जा सकते हैं. - अपने-आप माइग्रेशन के लिए, माइग्रेशन टेस्ट हेल्पर: रूम के
MigrationTestHelper
को अपडेट किया गया, ताकि अपने-आप माइग्रेशन हो सके. इसके लिए, एक नया कंस्ट्रक्टर एपीआई उपलब्ध कराया गया, जिसमें डेटाबेस क्लास की जांच की जा रही है. इससे हेल्पर कोrunMigrationsAndValidate
के दौरान, अपने-आप होने वाले माइग्रेशन को उसी तरह जोड़ने की अनुमति मिलती है. - रूम पेजिंग सहायता:
androidx.room:room-paging
रिलीज़ किया गया, जिसमें रूम की क्वेरी के लिएandroidx.paging.PagingSource
पेजिंग 3.0 की मूल सुविधा उपलब्ध कराई गई. - रिलेशनल क्वेरी के तरीके: रूम में अब मल्टीमैप रिटर्न टाइप
@Dao
मेथड का इस्तेमाल किया जा सकता है. यह तरीका, जॉइन स्टेटमेंट के लिए काम का है. मल्टीमैप इस्तेमाल किए जा सकते हैं: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 के साथ काम करने के लिए, केएसपी पर रूम की डिपेंडेंसी को
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 ऐनालाइज़र जोड़ा है, जो अमान्य हो सकता है जानकारी होती है. यह जानकारी सिर्फ़ उपलब्ध है केएसपी में, यह डिफ़ॉल्ट रूप से सिर्फ़ केएसपी में चालू होता है. अगर इसकी वजह से कोई समस्या होती है, तो पास करके इसे बंद किया जा सकता है room.useNullAwareTypeAnalysis=false से संबंधित व्याख्या में प्रोसेसर चुनें. अगर ऐसा होता है, तो कृपया इस गड़बड़ी की शिकायत करें, क्योंकि इसे हटा दिया जाएगा. इस नए TypeConverter ऐनालाइज़र के साथ, यह सुझाव दिया जाता है कि सिर्फ़ नए ऐनालाइज़र के पास ऐसे TypeConverters इस्तेमाल करने की क्षमता है जो शून्य नहीं हैं शून्य चेक के साथ उन्हें रैप करने के लिए. ध्यान दें कि इसका उन उपयोगकर्ताओं पर कोई असर नहीं पड़ता है जो KAPT या Java का इस्तेमाल एनोटेशन प्रोसेसर (KSP के उलट), शून्य होने की जानकारी नहीं होती टाइप में. (Ia88f9, b/193437407)
- गड़बड़ी को ठीक करें, जहां किसी एफ़टीएस इकाई को ICU टोकनाइज़र इस्तेमाल करने का एलान करने पर, कमरा एसक्यूएल की गड़बड़ी के साथ कंपाइल नहीं हो पाता. (I00db9, b/201753224)
- वर्शन के बीच एम्बेड की गई इकाई में जोड़े गए नए कॉलम से जुड़ी, अपने-आप होने वाले माइग्रेशन की समस्या ठीक की गई. (I5fcb1b/193798291)
- हमने LEFT जॉइन क्वेरी में, रिलेशनल क्वेरी के तरीके के रिटर्न टाइप से जुड़ी समस्या को हल कर दिया है. इन बदलावों के साथ, ऐसे मामले में जहां एक से कई मैपिंग मौजूद हों, किसी कुंजी के लिए लौटाए गए कलेक्शन में, अगर कर्सर में अमान्य वैल्यू ऑब्जेक्ट नहीं मिलता है, तो उसे शामिल नहीं किया जाएगा. अगर कोई मान्य वैल्यू नहीं मिलती है, तो पासकोड को खाली कलेक्शन में मैप कर दिया जाएगा. (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 में ये कमियां हैं.
नई सुविधाएं
- UUID के लिए, पहले से मौजूद टाइप कन्वर्टर जोड़ा गया. (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>
- कमरे के साथ Paging3 का इस्तेमाल करते समय
room-paging
को एक ज़रूरी आर्टफ़ैक्ट बनाएं. (आईअफ़ी)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया जा सकता है जहां मल्टीमैप क्वेरी के नतीजों को तब सही तरीके से ऑर्डर नहीं किया गया था, जब क्वेरी में मैप की कुंजी में मौजूद किसी कॉलम का ORDER BY क्लॉज़ था. (I6b887)
बाहरी योगदान
- @Index में इंडेक्स का क्रम बताने के लिए, नया एपीआई जोड़ा गया. धन्यवाद, निकिता झेलनकिन. (I033fc)
वर्शन 2.4.0-alpha04
21 जुलाई, 2021
androidx.room:room-*:2.4.0-alpha04
रिलीज़ हो गया है. वर्शन 2.4.0-alpha04 में ये कमियां हैं.
नई सुविधाएं
रूम में अब मल्टीमैप रिटर्न टाइप
@Dao
तरीकों का इस्तेमाल किया जा सकता है, जो 'शामिल हों' स्टेटमेंट के लिए काम के हैं. Guava केImmutableMap
,ImmutableSetMultimap
, औरImmutableListMultimap
के साथ-साथ, मल्टीमैप मेंMap
इस्तेमाल किए जा सकते हैं.मल्टीमैप क्वेरी के उदाहरण नीचे दिए गए हैं:
वन-टू-वन रिलेशन मैप
@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> }
यह आर्टफ़ैक्ट, रूम से जनरेट हुए
androidx.paging.PagingSource
को लागू करने के तरीके को पेजिंग 3.0 एपीआई पर बनाए गए सेटअप से बदल देता है. नया PagingSource लागू करने के तरीके कुंजियों को अलग तरीके से पार्स करता है, इसलिए रूम के PagingSource को मैन्युअल रूप से दी गई किसी भी कुंजी को बदलाव के लिए ध्यान देना होगा. इसमें पेजर के कंस्ट्रक्टर से पास की गई beforeKey भी शामिल है.Key
से पेज लोड होने लगेंगे औरKey
सबसे पहले लोड किया गया आइटम होगा. यह उन मौजूदा व्यवहार से अलग है जहांLoadParams.Refresh.Key
को उपयोगकर्ता की स्क्रोल पोज़िशन के तौर पर माना जाता है और आइटम, कुंजी के पहले और बाद में लोड होते हैं.आर्टफ़ैक्ट ज़रूरी नहीं है. ऑप्ट आउट करने पर, रूम 2.3 में पेश किए गए पेजिंग 3.0 पर भी काम किया जा सकेगा. हालांकि, पेजिंग 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
डिपेंडेंसी से जुड़े अपडेट
- रूम केएसपी के लिए सहायता अब, केएसपी
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
एक नया एपीआई है. इसका मतलब है कि रनटाइम के दौरान,RoomDatabase.Builder#addAutoMigrationSpec()
के ज़रिएAutoMigrationSpec
दिया जाएगा. इसकी मदद से, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को जटिल डिपेंडेंसी की ज़रूरत होने पर इस तरह के निर्देश दिए जा सकते हैं.
गड़बड़ियां ठीक की गईं
- अपने-आप होने वाले माइग्रेशन से जुड़ी समस्या ठीक करें, जहां
@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 में ये कमियां हैं.
नई सुविधाएं
- अपने-आप माइग्रेशन: रूम अब अपने-आप माइग्रेशन जनरेट करने के लिए एक एपीआई की सुविधा देता है. हालांकि, इसके लिए ज़रूरी है कि स्कीमा एक्सपोर्ट किए जा रहे हों. रूम को यह बताने के लिए कि उसे अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, एक नई प्रॉपर्टी
@Database#autoMigrations
का इस्तेमाल करके, अलग-अलग वर्शन से अपने-आप माइग्रेट होने का एलान किया जा सकता है. जब रूम को टेबल और कॉलम के नाम बदलने या मिटाने के बारे में ज़्यादा जानकारी की ज़रूरत होती है, तो@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 के बाद से हुए अहम बदलाव
- पहले से मौजूद Enum सहायता: रूम अब डिफ़ॉल्ट रूप से Enum से स्ट्रिंग में और कोई भी विकल्प न दिए जाने पर कन्वर्टर का इस्तेमाल करेगा. अगर किसी ईनम के लिए टाइप कन्वर्टर पहले से मौजूद है, तो रूम उसका इस्तेमाल डिफ़ॉल्ट के बजाय प्राथमिकता देगा.
- क्वेरी कॉलबैक: रूम, अब सामान्य कॉलबैक एपीआई के लिए RoomDatabase.QueryCallback की सुविधा देता है. हालांकि, ऐसा तब होता है, जब क्वेरी लागू होने वाली हों. इससे, डीबग बिल्ड में लॉग इन करने में मदद मिल सकती है. कॉलबैक को
RoomDatabase.Builder#setQueryCallback()
के ज़रिए सेट किया जा सकता है. - पहले से पैक किया गया सुधार: रूम में अब इनपुट स्ट्रीम से पढ़ने के लिए पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके, डेटाबेस बनाने के लिए एपीआई उपलब्ध हैं. इसकी मदद से, ऐसे मामलों में मदद मिलती है जब प्री-पैकेज डेटाबेस को gzip किया जाता है.
- उपलब्ध कराए गए टाइप कन्वर्टर: रूम में अब कन्वर्टर टाइप के इंस्टेंस उपलब्ध कराने के लिए एपीआई उपलब्ध हैं. ऐप्लिकेशन से, इस तरह के कन्वर्ज़न को कंट्रोल करने की सुविधा मिलती है. रूम को दिए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन @prodTypeConverter का इस्तेमाल करें.
- RxJava3 सहायता: रूम अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह ही, डीएओ के उन तरीकों का एलान किया जा सकता है जिनके रिटर्न टाइप फ़्लोएबल, सिंगल, शायद, और पूरे किए जा सकने वाले हों. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट
androidx.room:room-rxjava3
उपलब्ध है. - पेज 3.0 के लिए सहायता: रूम अब
@Query
व्याख्या किए गए उन तरीकों के लिए लागू करने की सुविधा को जनरेट करने में मदद करेगा जिनका रिटर्न टाइपandroidx.paging.PagingSource
है.
वर्शन 2.3.0-rc01
24 मार्च, 2021
androidx.room:room-*:2.3.0-rc01
रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक करें जिसकी वजह से, चैट रूम के बनाए गए कोरूटीन फ़्लो क्वेरी को निलंबित किए जाने वाले
withTransaction
ब्लॉक में इस्तेमाल नहीं किया जा सका. (I797bf)
वर्शन 2.3.0-beta03
10 मार्च, 2021
androidx.room:room-*:2.3.0-beta03
रिलीज़ हो गया है. वर्शन 2.3.0-beta03 में ये कमिट हैं.
नई सुविधाएं
- केएसपी के लिए, इंक्रीमेंटल कंपाइलेशन सपोर्ट जोड़ा गया. (I031c1, b/176453350)
गड़बड़ियां ठीक की गईं
- मुख्य थ्रेड पर PagingSource बनाने से, ANR वाली गड़बड़ी ट्रिगर हो सकती है. इस गड़बड़ी को ठीक किया गया है. (I42b74, b/181221318)
@ExperimentalRoomApi
के दिखने की सेटिंग को 'निजी' के बजाय सार्वजनिक पर सेट किया गया. (b/181356119)
बाहरी योगदान
- जब रूम के साथ
@SkipQueryVerification
भी एनोटेट किया गया हो, तो वह@Query
एनोटेट किए गए डीएओ तरीके में, पीओजेओ के रिटर्न टाइप को स्वीकार करने की अनुमति देता है. रूम, क्वेरी के नतीजे को पीओजेओ रिटर्न टाइप में बदलने की पूरी कोशिश करेगा. यह ठीक उसी तरह करना होगा जैसे@RawQuery
की जानकारी देने वाले डीएओ तरीके में किया जाता है. ‘मार्कस रीगल | hey@marcorei.com’. (I45acb)
वर्शन 2.3.0-beta02
18 फ़रवरी, 2021
androidx.room:room-*:2.3.0-beta02
रिलीज़ हो गया है. वर्शन 2.3.0-beta02 में ये कमिट हैं.
नई सुविधाएं
रूम में अब Kotlin सिंबल प्रोसेसिंग KSP के लिए एक्सपेरिमेंट के तौर पर सहायता उपलब्ध है.
KSP, KAPT की जगह है, जो Kotlin कंपाइलर पर मूल रूप से एनोटेशन प्रोसेसर चला सकती है. इससे बिल्ड में लगने वाला समय काफ़ी कम हो जाता है.
KSP के साथ रूम का इस्तेमाल करने के लिए, 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 का इस्तेमाल करने का सुझाव भी दिया जाता है. बिल्ड टाइम को कम करने की सुविधा सिर्फ़ तब लागू होती है, जब केएपीटी का इस्तेमाल करने वाला कोई अन्य प्रोसेसर न हो. जानी-पहचानी समस्याओं के लिए, 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 में ये कमियां हैं.
नई सुविधाएं
- रूम में अब सामान्य कॉलबैक एपीआई
RoomDatabase.QueryCallback
की सुविधा दी गई है. यह सुविधा तब काम करती है, जब क्वेरी लागू होने वाली हों. इससे डीबग बिल्ड में लॉग इन करने में मदद मिल सकती है. कॉलबैक कोRoomDatabase.Builder#setQueryCallback()
के ज़रिए सेट किया जा सकता है. (Iaa513, b/174478034, b/74877608) - रूम अब डिफ़ॉल्ट रूप से Enum से स्ट्रिंग में इस्तेमाल होगा. अगर कोई भी रूम नहीं दिया जाता है, तो रूम में Enum का इस्तेमाल करके कन्वर्टर किया जाएगा. अगर किसी ईनम के लिए टाइप कन्वर्टर पहले से मौजूद है, तो रूम उसका इस्तेमाल डिफ़ॉल्ट के बजाय प्राथमिकता देगा. (b/73132006)
आम समस्या
- अगर Enum के लिए, पढ़ने के लिए एकतरफ़ा टाइप का कन्वर्टर पहले से मौजूद है, तो हो सकता है कि रूम गलती से बिल्ट-इन स्ट्रिंग से Enum कन्वर्टर का इस्तेमाल कर ले, जो शायद आपको पसंद न हो. यह एक आम समस्या है और इसे दो-तरफ़ा कन्वर्टर बनाकर ठीक किया जा सकता है. देखें: b/175707691
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से रूम, JDK के नए वर्शन में इंक्रीमेंटल एनोटेशन को गलत तरीके से बंद कर देता था. (b/171387388)
- एक से ज़्यादा क्लास लोडर का इस्तेमाल करने पर, जनरेट की गई क्लास को ढूंढने में रूम से जुड़ी समस्या ठीक की गई. ‘सेरेंडिपिटी’ को ठीक करने के लिए धन्यवाद | 892449346@qq.com’! (b/170141113)
- उस समस्या को ठीक किया गया है जहां Kotlin
@Dao
में बेस क्लास के होने पर रूम गलत कोड जनरेट करता था, जिसके जेनरिक, जेवीएम में प्रिमिटिव होते हैं. (b/160258066)
बाहरी योगदान
- अगर WAL मोड चालू है और एपीआई के वर्शन 16 या इससे ज़्यादा है, तो रूम में अब डिफ़ॉल्ट रूप से
beginTransactionNonExclusive
का इस्तेमाल किया जाएगा. ‘अहमद आई. खलील | ahmedibraim स्थानli@gmail.com’! (b/126258791)
वर्शन 2.3.0-alpha03
14 अक्टूबर, 2020
androidx.room:room-*:2.3.0-alpha03
रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये कमियां हैं.
नई सुविधाएं
रूम में अब कन्वर्ज़न टाइप के ऐसे इंस्टेंस उपलब्ध कराने के लिए एपीआई उपलब्ध हैं जिनसे ऐप्लिकेशन, शुरू करने के लिए कंट्रोल कर सकता है. रूम को दिए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन
@ProvidedTypeConverter
का इस्तेमाल करें. ‘mzgreen yairobbe@gmail.com’ को धन्यवाद. (Ie4fa5, b/121067210)रूम में अब एपीआई की मदद से, इनपुट स्ट्रीम से पहले से पैकेज किए गए डेटाबेस को पढ़ा जा सकता है और उसका इस्तेमाल करके डेटाबेस बनाया जा सकता है. इसकी मदद से, ऐसे मामलों में मदद मिलती है जब प्री-पैकेज डेटाबेस को gzip किया जाता है. ‘Ahmed El-Helw ahmedre@gmail.com’ (3e6792, b/146911060) को धन्यवाद
एपीआई में बदलाव
@ForeignKey
एनोटेशन में वह टारगेट जोड़ा गया जो पहले मौजूद नहीं था. इस वजह से,@Entity
एनोटेशन के बाहर इसका इस्तेमाल नहीं किया जा सका. (Ice1e)RoomDatabase.java
में मौजूदmCallbacks
फ़ील्ड को अब छिपा दिया गया है. (d576cb, b/76109329)
गड़बड़ियां ठीक की गईं
TypeConverters दस्तावेज़ में अपडेट करें, ताकि यह साफ़ तौर पर बताया जा सके कि TypeConverters का इस्तेमाल सिर्फ़ कॉलम / फ़ील्ड को बदलने के लिए किया जा सकता है, पंक्तियों को नहीं. (I07c56, b/77307836)
Kotlin "प्रिमिटिव" वाले जेनरिक सुपर टाइप के साथ, डीएओ पर कंपाइलर की गड़बड़ी को ठीक करने के लिए, DaoProcessor को अपडेट करें. (Ice6bb, b/160258066)
थ्रेडिंग को बेहतर तरीके से समझाने के लिए, ऑब्ज़र्वर के तरीकों को जोड़ने/हटाएं से जुड़े दस्तावेज़ को अपडेट करें (Ifd1d9, b/153948821)
रूम में पंक्ति आईडी कॉलम का एलान करने वाली एफ़टीएस टेबल की गलत पुष्टि करने से जुड़ी समस्या को ठीक किया गया. (d62ebc, b/145858914)
बाहरी योगदान
टर्किश (5746e3), b/68159494 से जुड़े अपर/लोअरकेस स्थान-भाषा की समस्याएं ठीक करना
Android Lollipop (d1cfc7, b/162431855) पर समस्याओं से बचने के लिए,
RoomDatabase
के अंदर केConcurrentHashMap
कोCollections.synchronizedMap()
से बदलेंपहले से पैकेज किए जाने पर, onOpenPrepackagedDatabase कॉलबैक जोड़ें DB कॉपी किया गया. (I1ba74, b/148934423)
वर्शन 2.3.0-alpha02
22 जुलाई, 2020
androidx.room:room-*:2.3.0-alpha02
रिलीज़ हो गया है. वर्शन 2.3.0-alpha02 में ये कमियां हैं.
नई सुविधाएं
- RxJava3 सहायता: रूम अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह ही, डीएओ के उन तरीकों का एलान किया जा सकता है जिनके रिटर्न टाइप फ़्लोएबल, सिंगल, शायद, और पूरे किए जा सकने वाले हों. इसके अलावा, 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
,@Embedded
फ़ील्ड वाले रिटर्न टाइप के मामले में पेश किए गए, कॉलम कॉन्फ़्लिक्ट सलूशनroom.expandProjection
को नहीं बदलता.
गड़बड़ियां ठीक की गईं
- वह गड़बड़ी ठीक की गई है जहां Room, इंक्रीमेंटल एनोटेशन प्रोसेसर को चालू करने के लिए इस्तेमाल किए गए JDK वर्शन का सही से पता नहीं लगा पाता. ब्लेज़ सोलर (me@blaz.solar) (b/155215201) का धन्यवाद
- रूम अब अपनी ANTLR डिपेंडेंसी को एनोटेशन प्रोसेसर के साथ एम्बेड करता है, ताकि ANTLR का इस्तेमाल करने वाले दूसरे प्रोसेसर के साथ वर्शन के टकराव से बचा जा सके. (b/150106190)
वर्शन 2.2.6
वर्शन 2.2.6
16 दिसंबर, 2020
androidx.room:room-*:2.2.6
रिलीज़ हो गया है. वर्शन 2.2.6 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से रूम, JDK के नए वर्शन में इंक्रीमेंटल एनोटेशन को गलत तरीके से बंद कर देता था. (b/171387388)
वर्शन 2.2.5
वर्शन 2.2.5
18 मार्च, 2020
androidx.room:room-*:2.2.5
रिलीज़ हो गया है. वर्शन 2.2.5 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
MultiInstanceInvalidationService
DirectBootAware बनाएं. ‘Mygod contact-git@mygod.be’ (b/148240967) को धन्यवाद- एक से ज़्यादा इंस्टेंस अमान्य होने की सुविधा चालू होने पर, ऐप्लिकेशन क्रैश होने की गड़बड़ी को ठीक किया गया. साथ ही, डेटाबेस में एफ़टीएस इकाई मौजूद थी. (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 के साथ बनाते समय @generate के गलत तरीके से इस्तेमाल होने की समस्या को ठीक कर दिया गया है. (b/146538330)
- उस समस्या को ठीक किया गया है जहां Kotlin में डीएओ इंटरफ़ेस के कंक्रीट फ़ंक्शन होने पर, रूम गलत कोड जनरेट करता था. (b/146825845)
वर्शन 2.2.3
वर्शन 2.2.3
18 दिसंबर, 2019
androidx.room:room-*:2.2.3
रिलीज़ हो गया है. वर्शन 2.2.3 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है, जहां रूम उस डेटाबेस की पुष्टि नहीं कर पाता था जिसमें माइग्रेशन की प्रक्रिया पूरी नहीं हुई थी. साथ ही, स्कीमा में इंडेक्स वाला लेगसी हैश भी शामिल था. (b/139306173)
वर्शन 2.2.2
वर्शन 2.2.2
20 नवंबर, 2019
androidx.room:room-*:2.2.2
रिलीज़ हो गया है. वर्शन 2.2.2 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- वह गड़बड़ी ठीक की गई है जिसमें 999 से ज़्यादा पंक्तियों वाला वन-टू-वन रिलेशनशिप इकट्ठा करने पर, रूम से मिलते-जुलते आइटम की कोई जानकारी नहीं मिलती. (b/143105450)
वर्शन 2.2.1
वर्शन 2.2.1
23 अक्टूबर, 2019
androidx.room:room-*:2.2.1
रिलीज़ हो गया है. वर्शन 2.2.1 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें रूम, कंपाइलर विकल्प
expandProjection
को चालू करने पर,CURSOR_MISMATCH
के बारे में गलती से चेतावनी देता है. (b/140759491) - कंपाइलेशन के दौरान क्वेरी की पुष्टि करने के लिए इस्तेमाल की जाने वाली नेटिव लाइब्रेरी को मैनेज करने के लिए, फिर से कोशिश करने का तरीका जोड़ा गया.
वर्शन 2.2.0
वर्शन 2.2.0
9 अक्टूबर, 2019
androidx.room:room-*:2.2.0
रिलीज़ हो गया है. वर्शन 2.2.0 में ये कमियां शामिल हैं.
2.1.0 वर्शन के बाद से हुए अहम बदलाव
- पहले से पैकेज किया गया डेटाबेस:
RoomDatabase.Builder
में अब दो नए एपीआई हैं पहले से भरे हुए डेटाबेस में,RoomDatabase
बनाने के लिए उपलब्ध होता है फ़ाइल से लिए जाते हैं.createFromAsset()
तब के लिए होता है, जब पहले से भरी हुई डेटाबेस फ़ाइल APK का एसेट फ़ोल्डर है, जबकिcreateFromFile()
फ़ाइल को आपकी पसंद के हिसाब से बनाया जा सकता है. इन एपीआई के इस्तेमाल से, नुकसान पहुंचाने वाला माइग्रेशन ऐसा हो सकता है कि फ़ॉलबैक माइग्रेशन के दौरान, रूम पहले से भरे गए डेटाबेस को फिर से कॉपी करने के लिए, अगर उपलब्ध हो, तो यह बस सभी टेबल को ड्रॉप करके फिर से बनाया जा रहा है. b/62185732 - स्कीमा की डिफ़ॉल्ट वैल्यू:
@ColumnInfo
के पास अब एक नई प्रॉपर्टीdefaultValue
है इसका इस्तेमाल, कॉलम की डिफ़ॉल्ट वैल्यू तय करने के लिए किया जा सकता है. डिफ़ॉल्ट मान ये हैं का हिस्सा है और माइग्रेशन के दौरान इसकी पुष्टि की जाएगी, अगर तय किया गया है. b/64088772 - कई-से-कई संबंध:
@Relation
में अब एक नई प्रॉपर्टीassociateBy
है, जो एक नई व्याख्या@Junction
लेता है, जिसका इस्तेमाल मिलान टेबल (जिसे जॉइन टेबल भी कहा जाता है) के ज़रिए भेजना होता है. b/69201917 - वन-टू-वन रिलेशंस: पीओजेओ फ़ील्ड में मौजूद पाबंदी
List
याSet
टाइप के लिए@Relation
को हटा दिया गया है इससे सिंगल वैल्यू वाले संबंधों को दिखाया जा सकता है. b/62905145 - टारगेट इकाई: अब डीएओ
@Insert
,@Update
, और@Delete
के बारे में जानकारी दी गई है में एक नई प्रॉपर्टीtargetEntity
है, जो आपको टारगेट टेबल बताने की अनुमति देती है डीएओ तरीके का इस्तेमाल, सिर्फ़ अपने काम के लिए किया जा सकता है. इससे डीएओ के पैरामीटर को मंज़ूरी मिलती है मैन्युअल तरीके से POJO चुने जा सकते हैं, जिन्हें आंशिक इकाइयां माना जाएगा. व्यावहारिक तौर पर, यह कुछ हिस्से को जोड़ने, मिटाने, और अपडेट करने की अनुमति देता है. b/127549506 - कोरूटीन फ़्लो:
@Query
डीएओ के तरीके अबFlow<T>
के रिटर्न टाइप के हो सकते हैं. अगर ऑब्ज़र्व करने वाली टेबल क्वेरी अमान्य हो.Channel<T>
रिटर्न के साथ डीएओ फ़ंक्शन का एलान करना प्रकार एक गड़बड़ी है, इसके बजाय रूम आपकोFlow
का उपयोग करने और फिर आस-पास के फ़ंक्शन का इस्तेमाल करके,Flow
कोChannel
में बदलें. b/130428884 - ग्रेडल इंक्रीमेंटल एनोटेशन प्रोसेसर: रूम का नाम अब ग्रेडल के तौर पर अलग-अलग हो गया है
एनोटेशन प्रोसेसर और इंक्रीमेंटेबिलिटी को प्रोसेसर के ज़रिए चालू किया जा सकता है
विकल्प
room.incremental
. यहां जाएं: रूम कंपाइलर के विकल्प हमारा वीडियो देखें. अगर आपको कोई समस्या आती है, तो कृपया गड़बड़ी के बारे में जानने के लिए यहां देखें. हम आने वाले समय के स्टेबल वर्शन में, बढ़ोतरी को डिफ़ॉल्ट रूप से चालू करने की योजना बना रहे हैं. b/112110217 - अनुमान बढ़ाना: प्रयोग के तौर पर इस्तेमाल किया जा रहा एक नया कंपाइलर विकल्प
room.expandProjection
जोड़ा गया, जिसकी वजह से रूम में क्वेरी को फिर से लिखा जा सकता है ऐसा तारा प्रोजेक्शन जिसमें केवल लौटने वाले POJO में कॉलम शामिल होते हैं. इसके लिए जैसे,@Query("SELECT * FROM Song")
के साथ डीएओ तरीके से सिर्फ़ दो फ़ील्ड वाले POJO का नामSongIdAndTitle
है. इसके बाद रूम,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>
रिटर्न के साथ डीएओ फ़ंक्शन का एलान करना प्रकार एक गड़बड़ी है, इसके बजाय रूम आपकोFlow
का उपयोग करने और फिर आस-पास के फ़ंक्शन का इस्तेमाल करके,Flow
कोChannel
में बदलें. b/130428884 - अनुमान बढ़ाना: प्रयोग के तौर पर इस्तेमाल किया जा रहा एक नया कंपाइलर विकल्प
room.expandProjection
जोड़ा गया, जिसकी वजह से रूम में क्वेरी को फिर से लिखा जा सकता है ऐसा तारा प्रोजेक्शन जिसमें केवल लौटने वाले POJO में कॉलम शामिल होते हैं. इसके लिए जैसे,@Query("SELECT * FROM Song")
के साथ डीएओ तरीके से सिर्फ़ दो फ़ील्ड वाले POJO का नामSongIdAndTitle
है. इसके बाद रूम,SELECT id, title FROM Song
से इस तरह क्वेरी करें कि कॉलम का कम से कम सेट ताकि रिटर्न टाइप फ़ेच किए जा सकें. यह आवश्यक रूप से हटा देता है क्वेरी से ज़्यादा नतीजे मिलने पर दिखने वालीCURSOR_MISMATCH
चेतावनी वे कॉलम जो लौटने वाले POJO टाइप में किसी भी फ़ील्ड से मेल नहीं खाते. onDestructiveMigrate
,RoomDatabase.Callback
में जोड़ा गया एक नया कॉलबैक एपीआई है के लिए. b/79962330
गड़बड़ियां ठीक की गईं
- वह गड़बड़ी ठीक की गई है जिसमें रूम, फ़ील्ड के तौर पर किसी तरीके का इस्तेमाल करके गलत कोड जनरेट करेगा सेटर जब फ़ील्ड सुरक्षित हो. b/136194628
- उस गड़बड़ी को ठीक किया गया जिसकी वजह से अमान्यationTracker ने अगले सेकंड में एनपीई को फेंक दिया था एक से ज़्यादा इंस्टेंस अमान्य होने की सुविधा चालू होने और अमान्य होने पर सेवा खत्म हो गई. b/137454915
- गड़बड़ी को ठीक किया गया, जहां रूम
इनहेरिट किया गया निलंबन फ़ंक्शन, जो
@RawQuery
के साथ एनोटेट किया गया है. b/137878827 - इससे जुड़ी कुंजी के टाइप की होने पर,
@Relation
के लिए जनरेट किया गया कोड अपडेट किया गया तुलना करने लायकByteBuffer
का इस्तेमाल करने के लिए BLOB. b/137881998 - उस गड़बड़ी को ठीक किया गया जहां रूम,
@Insert
,@Update
, और@Delete
के आंशिक इकाई पैरामीटर. b/138664463 - गड़बड़ी को ठीक किया गया जहां रूम, गैटर के न मिलने की शिकायत करता था और सेटर
किसी डीएओ में इकाई क्लास का इस्तेमाल होने पर,
@Entity
के ज़रिए कॉलम को अनदेखा किया गया तरीकों का इस्तेमाल करना होगा. b/138238182 - गड़बड़ी को ठीक किया गया, जहां रूम, नाम वाले बाइंडिंग आर्ग को सही तरीके से नहीं बदल पाता था पोज़िशनल आर्ग्युमेंट के साथ क्वेरी को एक्ज़ीक्यूट करने पर रनटाइम अपवाद पैदा होता है दोबारा इस्तेमाल किए गए पैरामीटर हैं. 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 - वन-टू-वन रिलेशंस: पीओजेओ फ़ील्ड में मौजूद पाबंदी
List
याSet
टाइप के लिए@Relation
को हटा दिया गया है इससे सिंगल वैल्यू वाले संबंधों को दिखाया जा सकता है. b/62905145 - टारगेट इकाई: अब डीएओ
@Insert
,@Update
, और@Delete
के बारे में जानकारी दी गई है में एक नई प्रॉपर्टीtargetEntity
है, जो आपको टारगेट टेबल बताने की अनुमति देती है डीएओ तरीके का इस्तेमाल, सिर्फ़ अपने काम के लिए किया जा सकता है. इससे डीएओ के पैरामीटर को मंज़ूरी मिलती है मैन्युअल तरीके से POJO चुने जा सकते हैं, जिन्हें आंशिक इकाइयां माना जाएगा. व्यावहारिक तौर पर, यह कुछ हिस्से को जोड़ने, मिटाने, और अपडेट करने की अनुमति देता है. b/127549506 - ग्रेडल इंक्रीमेंटल एनोटेशन प्रोसेसर: रूम का नाम अब ग्रेडल के तौर पर अलग-अलग हो गया है
एनोटेशन प्रोसेसर और इंक्रीमेंटेबिलिटी को प्रोसेसर के ज़रिए चालू किया जा सकता है
विकल्प
room.incremental
. यहां जाएं: रूम कंपाइलर के विकल्प हमारा वीडियो देखें. अगर आपको कोई समस्या आती है, तो कृपया गड़बड़ी के बारे में जानने के लिए यहां देखें. हम आने वाले समय के स्टेबल वर्शन में, बढ़ोतरी को डिफ़ॉल्ट रूप से चालू करने की योजना बना रहे हैं. b/112110217
गड़बड़ियां ठीक की गईं
- कमरा अब
EmptySetResultException
को ग्लोबल गड़बड़ी हैंडलर जब किसी क्वेरी की Rx स्ट्रीम पहले नष्ट की जाती है क्वेरी पूरी हो गई हो. b/130257475 - वह गड़बड़ी ठीक की गई है जिसमें निलंबित होने पर, कमरा गड़बड़ी का गलत मैसेज दिखाएगा
@RawQuery
के साथ एनोटेट किए गए डीएओ फ़ंक्शन में रिटर्न टाइप नहीं है. b/134303897 - रूम अब रॉ टाइप वाले डीएओ अडैप्टर जनरेट नहीं करेगा. बी/135747255
वर्शन 2.1.0
वर्शन 2.1.0
13 जून, 2019
रूम 2.1.0 को रिलीज़ कर दिया गया है. इसमें 2.1.0-rc01
ने कोई बदलाव नहीं किया है. वर्शन में शामिल की गई कमियां यहां देखी जा सकती हैं.
2.0.0 के बाद के अहम बदलाव
- एफ़टीएस: रूम अब मैपिंग वाली इकाइयों के साथ काम करता है
FTS3 या FTS4 टेबल. क्लास के साथ एनोटेट किया गया
एलान करने के लिए,
@Entity
के साथ अब@Fts3
या@Fts4
के साथ अतिरिक्त जानकारी जोड़ी जा सकती है एक क्लास, जिसमें मैप के सभी टेक्स्ट वाली खोज टेबल मौजूद है. आगे के लिए एफ़टीएस के विकल्प एनोटेशन के तरीकों से कस्टमाइज़ किया जा सकता है. - व्यू: रूम की मदद से, क्लास को सेव की गई क्वेरी के तौर पर बताया जा सकता है. इसे, पहले से सेव की गई क्वेरी के तौर पर भी जाना जाता है
को व्यू के तौर पर जोड़ा जा सकता है.
@DatabaseView
एनोटेशन. - कोरोआउट: डीएओ तरीकों को अब सस्पेंड फ़ंक्शन के तौर पर इस्तेमाल किया जा सकता है.
room-ktx
को शामिल करें पर निर्भर है, ताकि इस सुविधा का फ़ायदा मिल सके. ktx आर्टफ़ैक्ट इसके लिए एक्सटेंशन फ़ंक्शनRoomDatabase.withTransaction
भी देता है कोरूटीन में डेटाबेस के लेन-देन होते हैं. - ऑटो वैल्यू: रूम का इस्तेमाल करके, अब एलान किया जा सकता है
AutoValue
एनोटेट की गई क्लास, इकाइयों और POJO के तौर पर. रूम के एनोटेशन
@PrimaryKey
,@ColumnInfo
,@Embedded
, और@Relation
के बारे में अब ऑटो में जानकारी दी जा सकती है वैल्यू की व्याख्या करने वाली क्लास के ऐब्स्ट्रैक्ट मेथड के बारे में बताती हैं. ध्यान दें कि इन एनोटेशन का रूम को@CopyAnnotations
के साथ रखा जाना चाहिए, ताकि उन्हें सही तरीके से समझा जा सके. - अतिरिक्त एसिंक्रोनस सहायता:
@Insert
,@Delete
के साथ एनोटेट किए गए डीएओ तरीके या@Update
, और@Query
के साथINSERT
,DELETE
याUPDATE
स्टेटमेंट, अब Rx रिटर्न टाइप के साथ काम करता हैCompletable
,Single
,Maybe
, और Guava के रिटर्न टाइपListenableFuture
में मौजूद नहीं थे. साथ ही, उन्हें फ़ंक्शन. enableMultiInstanceInvalidation
,RoomDatabase.Builder
में एक नया एपीआई है, ताकि एक ही वैल्यू का इस्तेमाल करके, RoomDatabase के एक से ज़्यादा इंस्टेंस के लिए अमान्य होने को चालू करें डेटाबेस फ़ाइल में सेव किया जाएगा.fallbackToDestructiveMigrationOnDowngrade
इसमें एक नया एपीआई है डाउनग्रेड होने पर, डेटाबेस अपने-आप फिर से बनाने के लिएRoomDatabase.Builder
होता है.ignoredColumns
,@Entity
एनोटेशन में एक नया एपीआई है. इसका इस्तेमाल इन कामों के लिए किया जा सकता है अनदेखा किए गए फ़ील्ड को नाम से सूचीबद्ध करें.- रूम अब डेटा क्लास में Kotlin के मुख्य कंस्ट्रक्टर का सही तरीके से इस्तेमाल करेगा
इसके लिए, प्रॉपर्टी के बारे में
vars
के तौर पर एलान करने की ज़रूरत नहीं है.
वर्शन 2.1.0-rc01
29 मई, 2019
गड़बड़ियां ठीक की गईं
- रूम शुरू करने में होने वाली गड़बड़ी को ठीक किया गया है, जो पहले से ही किसी सेटअप की वजह से हो सकती थी temp_store कॉन्फ़िगरेशन. b/132602198
- SQLite 3.27.0 और इसके बाद के वर्शन वाले उपयोगकर्ताओं के लिए, डबल कोट के इस्तेमाल की चेतावनी ठीक की गई. बी/131712640
- गड़बड़ी को ठीक किया गया है जहां एक से ज़्यादा अमान्य तरीकों से अमान्य होने की वजह से, अमान्य होने की जांच साथ-साथ होंगी. 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 डीएओ के लिए TypeConverter को मैच नहीं कर पाता था फ़ंक्शन में शामिल है. b/122066791
वर्शन 2.1.0-alpha06
22 मार्च, 2019
एपीआई / व्यवहार में बदलाव
- एक साथ काम नहीं करने वाली ट्रांज़ैक्शन क्वेरी को अब क्रम से लगाया गया है, इसलिए रूम का इस्तेमाल नहीं किया जा सकेगा
डेटाबेस ट्रांज़ैक्शन चलाने के लिए एक से ज़्यादा थ्रेड.
अनुमति देने के लिए
RoomDatabase.Builder.setTransactionExecutor(Executor)
को जोड़ा गया लेन-देन के लिए इस्तेमाल करने के लिए, मैनेजर को कॉन्फ़िगर करना. RoomDatabase.runInTransaction(Callable)
अब चेक किए गए को रैप नहीं करेगा रनटाइम में अपवाद हो सकते हैं. b/128623748
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से अमान्य ट्रैफ़िक को ट्रैक करने वाला टूल, कॉन्टेंट को मॉनिटर करना बंद कर देता है टेबल, अगर कॉन्टेंट टेबल और बाहरी कॉन्टेंट एफ़टीएस, दोनों के लिए ऑब्ज़र्वर हैं तालिका जोड़ी गई. b/128508917
- SQLite 3.24.0 से मैच करने के लिए, रूम के SQLite व्याकरण को अपडेट किया गया. बी/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
- एक गड़बड़ी को ठीक किया गया, जहां रूम, इनर क्लास टाइप वाले पैरामीटर के साथ निलंबित करने वाले फ़ंक्शन की सही पहचान नहीं कर पाता था. b/123767877
- गड़बड़ी को ठीक किया गया है, जहां
INSERT
,UPDATE
याDELETE
स्टेटमेंट के साथ@Query
डीएओ तरीके को टाला गया था, लेकिन मुख्य थ्रेड में क्वेरी को तेज़ी से तैयार किया जा रहा था. b/123695593 - कई गड़बड़ियों को ठीक किया गया, जिनमें रूम कुछ निलंबन फ़ंक्शन के लिए गलत कोड जनरेट कर सकता था. b/123466702 और b/123457323
- गड़बड़ी को ठीक किया गया है, जहां जनरेट किए गए कोड में, तरीकों के अमान्य इस्तेमाल को सही तरीके से छिपाया नहीं जा रहा था. बी/117602586
- androidx.sqlite की रूम डिपेंडेंसी को 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
दे सकते हैं. इसके अलावा, ये सस्पेंड फ़ंक्शन भी हो सकते हैं. बी/120227284
एपीआई / व्यवहार में बदलाव
- अगर
@Transaction
के साथ एनोटेट किया गया कोई नॉन-ऐब्स्ट्रैक्ट डीएओ तरीका,Single
,Mayble
,Completable
,LiveData
याListenableFuture
जैसे एक साथ कई तरह का गड़बड़ी दिखाता है, तो रूम में अब गड़बड़ी होगी. लेन-देन, सिर्फ़ थ्रेड के लिए होता है. फ़िलहाल, रूम के लिए किसी ऐसे फ़ंक्शन से जुड़े लेन-देन को शुरू और खत्म करना नामुमकिन है जो अलग-अलग थ्रेड में क्वेरी कर सकता है. b/120109336 OnConflictStrategy.FAIL
औरOnConflictStrategy.ROLLBACK
,@Deprecated
हो गए हैं, क्योंकि ये Android की मौजूदा SQLite बाइंडिंग के साथ सही तरीके से काम नहीं करते. b/117266738
गड़बड़ियां ठीक की गईं
- गड़बड़ी को ठीक किया गया, जहां रूम, डीएओ तरीके के सस्पेंड फ़ंक्शन होने पर, रिटर्न टाइप के TypeConverter का सही तरीके से इस्तेमाल नहीं करता था. b/122988159
- वह गड़बड़ी ठीक की गई है जिसमें रूम, इनहेरिट किए गए सस्पेंड फ़ंक्शन को गलत तरीके से, सस्पेंड नहीं करने वाले फ़ंक्शन के तौर पर पहचानता था. b/122902595
- उस गड़बड़ी को ठीक किया गया है जिसकी मदद से, पैरंट क्लास में
@Embedded
फ़ील्ड के होने और कई चाइल्ड क्लास में इस्तेमाल किए जाने पर, रूम गलत कोड जनरेट करता था. b/121099048 - उस समस्या को ठीक किया गया है जिसकी वजह से,
beginTransaction()
औरendTransaction()
के बीच डीएओ निलंबित फ़ंक्शन शुरू करने पर, डेटाबेस डेडलॉक हो जाता था. बी/120854786
वर्शन 2.1.0-alpha03
4 दिसंबर, 2018
एपीआई में बदलाव
@Fts3
/@Fts4
में FTStokenizer
अब Enum के बजाय स्ट्रिंग लेता है. इससे रूम, कस्टम टोकनाइज़र का इस्तेमाल कर पाता है.FtsOptions
में पहले से मौजूद टोकनाइज़र, अब भी स्ट्रिंग कॉन्सटेंट के तौर पर बताए गए हैं. b/119234881
नई सुविधाएं
- कोरोआउट: डीएओ तरीकों को अब सस्पेंड फ़ंक्शन के तौर पर इस्तेमाल किया जा सकता है. रूम में सस्पेंड फ़ंक्शन की सुविधा के लिए, एक नया आर्टफ़ैक्ट रिलीज़ किया गया है,
room-coroutines
. b/69474692 @Insert
,@Delete
या@Update
के साथ एनोटेट किए गए डीएओ तरीके, अब रिटर्न टाइप के तौर परListenableFuture
के साथ काम करते हैं. b/119418331
गड़बड़ियां ठीक की गईं
- वह गड़बड़ी ठीक की गई है जिसकी वजह से कमरा,
@Entity
कीignoredColumns
प्रॉपर्टी में, कॉलम वाला कंस्ट्रक्टर ढूंढने की कोशिश गलत तरीके से कर सकता था. b/119830714 - उस गड़बड़ी को ठीक किया गया है जिसकी वजह से रूम, डीएओ तरीके के पैरामीटर को जनरेट किए गए लागू करने के दौरान, फ़ाइनल के तौर पर मार्क नहीं करता. b/118015483
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से खास सिंबल वाली किसी क्वेरी पर गड़बड़ी की रिपोर्ट करने पर रूम का प्रोसेसर क्रैश हो जाता था. b/119520136
- उस गड़बड़ी को ठीक किया गया है जहां रूम,
IN
एक्सप्रेशन के आर्ग्युमेंट के तौर पर,Collection
लागू करने के अन्य तरीकों को अस्वीकार कर देता है. b/119884035 - उस गड़बड़ी को ठीक किया गया है जिसमें रूम से वापस आने वाले LiveData में कचरा इकट्ठा होता है और उसे हमेशा के लिए देखा जाता है. इसकी वजह से, नया डेटा नहीं निकलता. b/74477406
- लॉक के विवाद को कम करने के लिए,
RoomDatabase
के क्लोज़ लॉक को अपडेट किया गया. b/117900450
वर्शन 2.1.0-alpha02
30 अक्टूबर, 2018
नई सुविधाएं
@Relation
में@DatabaseView
का रेफ़रंस देने के लिए सहायता जोड़ी गई. b/117680932
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जहां Rx रिटर्न टाइप से सदस्यता लेने और डिस्पोज़ करने पर, रूम मुख्य थ्रेड में डिस्क I/O करेगा. बी/117201279
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से रूम, Kotlin इकाई की क्लास में फ़ील्ड के लिए सही टाइप का कन्वर्टर नहीं ढूंढ पाता था. बी/111404868
- उस गड़बड़ी को ठीक किया गया है जहां रूम,
DAO
इंटरफ़ेस को लागू करने के लिए गलत कोड जनरेट करेगा. इसमें Kotlin डिफ़ॉल्ट में ऐसा तरीका शामिल होगा जिसमें कोई आर्ग्युमेंट नहीं होता. b/117527454 - रूम का SQLite ग्रामर पार्सर अपडेट किया गया. इसमें परफ़ॉर्मेंस से जुड़ी ऐसी समस्या ठीक की गई है जिसकी वजह से बिल्ड में ज़्यादा समय लग सकता है. b/117401230
वर्शन 2.1.0-alpha01
8 अक्टूबर, 2018
नई सुविधाएं
- एफ़टीएस: रूम अब FTS3 या FTS4 टेबल को मैप करने वाली इकाइयों के साथ काम करता है.
@Entity
के साथ एनोटेट की गई क्लास के साथ अब@Fts3
या@Fts4
के साथ जानकारी भी जोड़ी जा सकती है, ताकि मैपिंग पूरे टेक्स्ट वाली खोज टेबल के साथ क्लास का एलान किया जा सके. एनोटेशन के तरीकों के ज़रिए, एफ़टीएस के विकल्प और मनमुताबिक बनाने के विकल्प उपलब्ध हैं. b/62356416 - व्यू: रूम अब सेव की गई क्वेरी के तौर पर क्लास का एलान करने की सुविधा देता है. इसे @DatabaseView एनोटेशन का इस्तेमाल करके, व्यू भी कहा जाता है. b/67033276
- ऑटो वैल्यू: रूम अब AutoValue एनोटेट की गई क्लास को इकाइयों और POJO के तौर पर एलान करने की सुविधा देता है. रूम के एनोटेशन
@PrimaryKey
,@ColumnInfo
,@Embedded
, और@Relation
को अब ऑटो वैल्यू के तौर पर एनोटेट किए गए क्लास के ऐब्सट्रैक्ट तरीकों में दिखाया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ@CopyAnnotations
भी होना चाहिए, ताकि रूम उन्हें सही तरीके से समझ सके. b/62408420 - अतिरिक्त Rx रिटर्न टाइप के लिए सहायता:
@Insert
,@Delete
या@Update
के साथ एनोटेट किए गए डीएओ तरीके अब Rx रिटर्न टाइपCompletable
,Single<T>
, औरMaybe<T>
के साथ काम करते हैं. b/63317956 @Relation
के साथ नहीं बदले जा सकने वाले टाइप: रूम को सेट करने लायक बनाने के लिए, पहले@Relation
एनोटेट किए गए फ़ील्ड की ज़रूरत होती थी. हालांकि, अब ये कंस्ट्रक्टर पैरामीटर हो सकते हैं.enableMultiInstanceInvalidation
: एक ही डेटाबेस फ़ाइल का इस्तेमाल करके, RoomDatabase के कई इंस्टेंस में अमान्य होने को चालू करने के लिए,RoomDatabase.Builder
में एक नया एपीआई है. एक से ज़्यादा इंस्टेंस अमान्य करने का यह तरीका, कई प्रोसेस के साथ भी काम करता है. b/62334005fallbackToDestructiveMigrationOnDowngrade
: यहRoomDatabase.Builder
में एक नया एपीआई है. डाउनग्रेड किए जाने पर, डेटाबेस अपने-आप फिर से बनता है. b/110416954ignoredColumns
: यह@Entity
एनोटेशन में एक नया एपीआई है. इसका इस्तेमाल करके, अनदेखा किए गए फ़ील्ड को नाम से लिस्ट किया जा सकता है. किसी इकाई पर इनहेरिट किए गए फ़ील्ड को अनदेखा करने के लिए इस्तेमाल किया जाता है. बी/63522075
एपीआई / व्यवहार में बदलाव
RoomDatabase
मेंmCallback
औरmDatabase
अब@Deprecated
हैं. इन्हें रूम के अगले मेजर वर्शन से हटा दिया जाएगा. b/76109329
गड़बड़ियां ठीक की गईं
- दो समस्याओं को ठीक किया गया है, जिनमें गड़बड़ी वाले डेटाबेस से रूम ठीक से रिकवर नहीं हो पाता था या शुरू करने के दौरान गलत माइग्रेशन हो सकता था. b/111504749 और b/111519144
- रूम अब डेटा क्लास में Kotlin के प्राइमरी कंस्ट्रक्टर का सही तरीके से इस्तेमाल करेगा, ताकि फ़ील्ड को
vars
के तौर पर बताने की ज़रूरत न पड़े. बी/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
- रूम b/110197391 के पुराने वर्शन के साथ, RoomOpenHelper की पीछे की ओर काम करने की सुविधा को ठीक किया गया है
AndroidX से पहले की डिपेंडेंसी
रूम के AndroidX से पहले के वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:
dependencies {
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - RxJava support for Room
implementation "android.arch.persistence.room:rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "android.arch.persistence.room:guava:$room_version"
// Test helpers
testImplementation "android.arch.persistence.room:testing:$room_version"
}
वर्शन 1.1.1
वर्शन 1.1.1
19 जून, 2018
1.1.1
कमरा और 1.1.1-rc1
रूम एक जैसा है.
वर्शन 1.1.1-rc1
16 मई, 2018
हमने काफ़ी
अगर माइग्रेशन का इस्तेमाल किया जा रहा है, तो 1.1.0
के बजाय रूम 1.1.1-rc1
का इस्तेमाल करने का सुझाव दिया जाता है.
गड़बड़ी को ठीक किया गया है, जहां माइग्रेशन शुरू करने के बाद रूम सही तरीके से काम नहीं करेगा b/79362399
वर्शन 1.1.0
वर्शन 1.1.0-beta3
19 अप्रैल, 2018
गड़बड़ियां ठीक की गईं
- जब Kotlin POJO किसी ऐसी रिलेशन इकाई का रेफ़रंस देता है जो कंपाइलेशन गड़बड़ी की तरह काम करती है Java में तय किया गया था b/78199923
वर्शन 1.1.0-beta2
5 अप्रैल, 2018
गड़बड़ियां ठीक की गईं
रूम के 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 - पेजिंग: रूम का DataSource लागू करने पर अब मल्टी-टेबल डिपेंडेंसी (जैसे कि रिलेशन और जॉइन) को सही तरीके से हैंडल किया जाता है. पहले, ये कोड नए नतीजों को ट्रिगर नहीं कर पाते थे या उन्हें इकट्ठा नहीं किया जा सकता था. b/74128314
वर्शन 1.1.0-alpha1
22 जनवरी, 2018
नई सुविधाएं
RawQuery
: इस नए एपीआई की मदद से,@Dao
मेथड को क्वेरी पैरामीटर के तौर पर एसक्यूएल मिल सकता है b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
:RoomDatabase.Builder
में इस नए एपीआई का इस्तेमाल करके इस पर ज़्यादा बारीकी से कंट्रोल किया जाता है कि स्कीमा वर्शन की मदद से, नुकसान पहुंचाने वाला माइग्रेशन शुरू किया जाता है अनुमति है (FlbackToDestructiveMigration की तुलना में) b/64989640- रूम अब सिर्फ़ नए पेजिंग एपीआई (ऐल्फ़ा-4+) के साथ काम करता है जो अब काम नहीं करता है
LivePagedListProvider
. नए रूम ऐल्फ़ा का इस्तेमाल करने के लिए, आपको पेजिंग का इस्तेमाल करना होगाalpha-4
या इसके बाद के वर्शन पर स्विच करें. अगर आपने अभी तकLivePagedListProvider
सेLivePagedListBuilder
पर स्विच नहीं किया है, तो अब कर लें.
गड़बड़ियां ठीक की गईं
- Kotlin Kapt टाइप के लिए बेहतर सपोर्ट. b/69164099
- फ़ील्ड के क्रम से अब स्कीमा अमान्य नहीं होता. b/64290754