DataStore
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 19 नवंबर, 2025 | 1.2.0 | - | - | 1.3.0-alpha01 |
डिपेंडेंसी का एलान करना
DataStore पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
DataStore, सीरियलाइज़ेशन के लिए अलग-अलग विकल्प देता है , इनमें से कोई एक विकल्प चुनें. दोनों में से किसी भी तरीके से लागू करने के लिए, Android-free डिपेंडेंसी भी जोड़ी जा सकती हैं.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Preferences DataStore
अपनी gradle फ़ाइल के dependencies सेक्शन में ये लाइनें जोड़ें:
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.0" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.0") }
RxJava का इस्तेमाल करने के लिए, ये डिपेंडेंसी जोड़ें:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.0") }
DataStore
अपनी gradle फ़ाइल के dependencies सेक्शन में ये लाइनें जोड़ें:
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.0" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.0") }
RxJava के साथ काम करने के लिए, यहां दी गई वैकल्पिक डिपेंडेंसी जोड़ें:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.0") }
कॉन्टेंट को क्रम से लगाने के लिए, Protocol Buffers या JSON serialization के लिए डिपेंडेंसी जोड़ें.
JSON सीरियलाइज़ेशन
JSON serialization का इस्तेमाल करने के लिए, अपनी Gradle फ़ाइल में यह जानकारी जोड़ें:
Groovy
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" }
Kotlin
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") }
प्रोटोबफ़ सीरियलाइज़ेशन
Protobuf सीरियलाइज़ेशन का इस्तेमाल करने के लिए, अपनी Gradle फ़ाइल में यह जानकारी जोड़ें:
Groovy
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation "com.google.protobuf:protobuf-kotlin-lite:4.32.1" } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
Kotlin
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation("com.google.protobuf:protobuf-kotlin-lite:4.32.1") } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.3
वर्शन 1.3.0-alpha01
19 नवंबर, 2025
androidx.datastore:datastore-*:1.3.0-alpha01 रिलीज़ हो गया है. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
DataStoreAPI का इस्तेमाल करके,DataStoreमें KMP Web के लिए सहायता जोड़ी गई.sessionStorageइस सुविधा की मदद से,DataStoreएक ही ब्राउज़र टैब में डेटा को कुछ समय के लिए सेव कर सकता है. (I60fad, b/316376114)
वर्शन 1.2
वर्शन 1.2.0
19 नवंबर, 2025
androidx.datastore:datastore-*:1.2.0 रिलीज़ हो गया है. वर्शन 1.2.0 में ये बदलाव शामिल हैं.
1.1.0 रिलीज़ के बाद के मुख्य बदलाव
Java/Guava के साथ काम करता है:
- Java और Guava
ListenableFutureके उपयोगकर्ताओं के लिए,GuavaDataStoreके ज़रिए एपीआई उपलब्ध कराने के लिए, नयाdatastore-guavaमॉड्यूल जोड़ा गया. GuavaDataStoreमें मल्टीप्रोसेस की सुविधा जोड़ी गई.GuavaDataStore.fromके लिए एक ओवरलोड जोड़ा गया है, जोCoroutineContextके बजाय JavaExecutorको स्वीकार करता है औरandroidx.core.util.Functionका इस्तेमाल करता है.
सीधे बूट करने की सुविधा:
- अब डायरेक्ट बूट मोड के दौरान DataStore का इस्तेमाल किया जा सकता है.
DataStoreFactoryमेंcreateInDeviceProtectedStorage()औरDataStoreDelegateमेंdeviceProtectedDataStore()जैसे नए एपीआई की मदद से, डिवाइस पर सुरक्षित स्टोरेज में DataStore बनाया जा सकता है.
स्टोरेज और एपीआई में बदलाव:
PreferencesFileSerializerजोड़ा गया है, जोFileStorageके साथ इस्तेमाल करने के लिएandroidx.datastore.core.Serializerको लागू करता है.- सामान्य कोड के इस्तेमाल के लिए,
ReplaceFileCorruptionHandlerके डिफ़ॉल्ट कंस्ट्रक्टर को तय किया गया है.
गड़बड़ियां ठीक की गईं:
- R8 की मदद से ऑप्टिमाइज़ किए गए ऐप्लिकेशन में
DataStoreका इस्तेमाल करते समय,java.lang.UnsatisfiedLinkErrorकी समस्या ठीक की गई. हालांकि, इस ऐप्लिकेशन में स्टैंडर्ड ProGuard फ़ाइल का इस्तेमाल नहीं किया जा रहा था. - उस समस्या को ठीक किया गया है जिसमें
GuavaDataStoreकार्रवाइयां, तय किए गए IO डिस्पैचर के बजाय कॉलिंग थ्रेड (जैसे, मुख्य थ्रेड) पर गलत तरीके से चल सकती थीं. - रेस कंडिशन के मामले में, डेटा को पढ़ने की दूसरी कोशिश को जोड़कर, स्टार्टअप के समय
OkioStorageमेंFileNotFoundExceptionसमस्या को हल किया गया.
वर्शन 1.2.0-rc01
05 नवंबर, 2025
androidx.datastore:datastore-*:1.2.0-rc01 रिलीज़ हो गया है. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.2.0-beta01
22 अक्टूबर, 2025
androidx.datastore:datastore-*:1.2.0-beta01 रिलीज़ हो गया है. वर्शन 1.2.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
CorruptionHandlerको सार्वजनिक करें. (I9ac35, b/452406457)GuavaDataStoreमेंandroidx.core.util.Functionका इस्तेमाल करें. (I71eae, b/448563999)GuavaDataStore.fromके लिए एक ओवरलोड जोड़ें, जोCoroutineContextके बजाय Executor लेता है. (I989fa, b/448563183)
गड़बड़ियां ठीक की गईं
- R8 की मदद से ऑप्टिमाइज़ किए गए ऐप्लिकेशन में
DataStoreका इस्तेमाल करते समय,java.lang.UnsatisfiedLinkErrorको ठीक करें. हालांकि, यह ऐप्लिकेशनgetDefaultProguardFile('android-proguard-optimize.txt')का इस्तेमाल नहीं कर रहा है. (I27d0d, b/434696293) - उस समस्या को ठीक किया गया है जिसमें
GuavaDataStoreकार्रवाइयां, तय किए गए IO डिस्पैचर के बजाय कॉलिंग थ्रेड (जैसे, मुख्य थ्रेड) पर गलत तरीके से चल सकती थीं. (Ic91ea,b/441801112)
वर्शन 1.2.0-alpha02
7 मई, 2025
androidx.datastore:datastore-*:1.2.0-alpha02 रिलीज़ हो गया है. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
GuavaDataStoreमें मल्टीप्रोसेस की सुविधा जोड़ी गई. (e0d608a).DataStoreसेGuavaDataStoreबनाने के लिए, हेल्पर मेथड जोड़ा गया. (9af26f4)- Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट के लिए, KGP 2.0.0 या इसके बाद के वर्शन की ज़रूरत होती है. (Idb6b5)
- सीधे बूट के दौरान इस्तेमाल किए जाने वाले DataStore को शुरू करने के लिए, मौजूदा
datastoreओवरलोड को डेलिगेट करने के तरीके से बदलें. (If71b9)
वर्शन 1.2.0-alpha01
26 मार्च, 2025
androidx.datastore:datastore-*:1.2.0-alpha01 रिलीज़ हो गया है. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
datastore-guavaमॉड्यूल जोड़ा गया है, ताकि Java और GuavaListenableFutureके उपयोगकर्ताओं कोGuavaDataStoreके ज़रिए एपीआई उपलब्ध कराए जा सकें. (Iadd5e0)DirectBootमोड के दौरानDataStoreके इस्तेमाल की सुविधा अब उपलब्ध है. डायरेक्ट बूट मोड के दौरान इस्तेमाल किया जाने वाला डेटास्टोर, डिवाइस प्रोटेक्टेड स्टोरेज में बनाया जाना चाहिए. इसके लिए,DataStoreके इन नए एपीआई का इस्तेमाल किया जा सकता है:createInDeviceProtectedStorage()मेंDataStoreFactoryऔरDataStoreDelegateमेंdeviceProtectedDataStore(). (Ib90e56)
एपीआई में हुए बदलाव
PreferencesFileSerializerजोड़ा गया है, जोFileStorageके साथ इस्तेमाल करने के लिएandroidx.datastore.core.Serializerइंटरफ़ेस लागू करता है. (I4c71f3)
गड़बड़ियां ठीक की गईं
- रेस कंडीशन के मामले में, डेटा को पढ़ने की दूसरी कोशिश को जोड़कर, स्टार्टअप के दौरान
OkioStorageमेंFileNotFoundExceptionसमस्या को हल किया गया. (I43b3fb, b/337870543) - सामान्य कोड के इस्तेमाल के लिए,
ReplaceFileCorruptionHandlerके डिफ़ॉल्ट कंस्ट्रक्टर को तय किया गया. (I795b05, b/358138957)
वर्शन 1.1
वर्शन 1.1.7
20 मई, 2025
androidx.datastore:datastore-*:1.1.7 रिलीज़ हो गया है. वर्शन 1.1.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
datastore-preferences-coreके Android आर्टफ़ैक्ट में, Proguard के नियमों के मौजूद न होने की समस्या को ठीक किया गया है. (3f3f6e, b/413078297)
वर्शन 1.1.6
7 मई, 2025
androidx.datastore:datastore-*:1.1.6 रिलीज़ हो गया है. वर्शन 1.1.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें Gradle मेटाडेटा, वर्शन
1.1.5में काम नहीं कर रहा था. यह समस्या, AGP KMP प्लगिन के नए डीएसएल में मौजूद एक बग की वजह से हुई. इस बग की वजह से, सभी टारगेट प्लैटफ़ॉर्म के लिए मेटाडेटा अपने-आप शामिल नहीं हो पा रहा था. इस बग की वजह से, DataStore Android के कुछ तरीके अब क्लाइंट की बिल्ड में नहीं दिखते. इसे ठीक करने के लिए,androidLibraryके बजायbuild.gradleमें पुरानेandroidडीएसएल का इस्तेमाल करें. (7801abf)
वर्शन 1.1.5
23 अप्रैल, 2025
androidx.datastore:datastore-*:1.1.5 रिलीज़ हो गया है. वर्शन 1.1.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
PreferencesDataStoreमेंCorruptionExceptionसे जुड़ी समस्याओं को कम करने के लिए, डिफ़ॉल्ट स्टोरेज कोOkioStorageसे बदलकरFileStorageकर दिया गया है. यह बदलाव,PreferencesFileSerializerको लागू करके किया गया था. b/346197747
वर्शन 1.1.4
26 मार्च, 2025
androidx.datastore:datastore-*:1.1.4 रिलीज़ हो गया है. वर्शन 1.1.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डिफ़ॉल्ट स्टोरेज को
OkioStorageसेFileStorageपर बदलें, ताकिCorruptionExceptionको कम करके विश्वसनीयता को बेहतर बनाया जा सके. (I71181, b/346197747)
वर्शन 1.1.3
26 फ़रवरी, 2025
androidx.datastore:datastore-*:1.1.3 रिलीज़ हो गया है. वर्शन 1.1.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ऐप्लिकेशन शुरू करते समय,
OkioStorageमें आने वालीFileNotFoundExceptionसमस्या को ठीक किया गया है. अगर फ़ाइल को पढ़ने की शुरुआती कोशिश पूरी नहीं होती है, तो दूसरी कोशिश की जाएगी. ऐसा तब होता है, जब फ़ाइल को शुरुआती प्रोसेस के दौरान किसी दूसरी प्रोसेस से बनाया गया हो. (I43b3f, b/337870543)
वर्शन 1.1.2
15 जनवरी, 2025
androidx.datastore:datastore-*:1.1.2 रिलीज़ हो गया है. वर्शन 1.1.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- वार्म रीड के इंतज़ार के समय (
DataStore.data.first()) को आठ गुना कम किया गया है. (22b8a40) ReplaceFileCorruptionHandlerको KMP के सामान्य कोड से बनाया जा सकता है. (7632e839)
वर्शन 1.1.1
1 मई, 2024
androidx.datastore:datastore-*:1.1.1 रिलीज़ हो गया है. वर्शन 1.1.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Linux में "संसाधन डेडलॉक हो जाएगा" गड़बड़ी के बारे में गलत सूचना मिलने की समस्या को ठीक किया गया है. ऐसा तब होता है, जब कई
DataStoreइंस्टेंस, फ़ाइल लॉक को बैक ऑफ़ करके अलग-अलग प्रोसेस से लिखने की कोशिश करते हैं.
वर्शन 1.1.0
17 अप्रैल, 2024
androidx.datastore:datastore-*:1.1.0 रिलीज़ हो गया है. वर्शन 1.1.0 में ये बदलाव शामिल हैं.
1.0.0 रिलीज़ के बाद के मुख्य बदलाव
ज़्यादा जानकारी के लिए, कृपया 1.1.0 के ऐल्फ़ा और बीटा वर्शन के रिलीज़ नोट देखें. 1.1.0 में किए गए कुछ मुख्य अपडेट ये हैं:
- DataStore अब एक ही फ़ाइल को ऐक्सेस करने वाली कई प्रोसेस के साथ काम करता है. साथ ही, यह सभी प्रोसेस के लिए ऑब्ज़र्वेबिलिटी की सुविधा देता है.
- नए स्टोरेज इंटरफ़ेस की मदद से, यह तय किया जा सकता है कि डेटा मॉडल को कैसे सेव या क्रम से लगाया जाए.
- अब Kotlin Multiplatform प्रोजेक्ट में DataStore का इस्तेमाल किया जा सकता है.
वर्शन 1.1.0-rc01
3 अप्रैल, 2024
androidx.datastore:datastore-*:1.1.0-rc01 रिलीज़ हो गया है. वर्शन 1.1.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- परफ़ॉर्मेंस से जुड़ी समस्या को ठीक किया गया है. इसमें, अगर नया डेटा पुराने डेटा के जैसा ही होता है, तो
updateDataकॉल, डिस्क राइट पर ऑप्टिमाइज़ नहीं होते थे (d64cfb5) - रेस कंडीशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, शुरू करने के दौरान
MultiProcessDataStoreमें अमान्यताओं का पता नहीं चल पाता था. ((b/326141553),(094c2dd))
वर्शन 1.1.0-beta02
6 मार्च, 2024
androidx.datastore:datastore-*:1.1.0-beta02 रिलीज़ हो गया है. वर्शन 1.1.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
DataStoreकी परफ़ॉर्मेंस को बेहतर बनाने की सुविधा, सिर्फ़ तब अपडेट की सूचनाएं इकट्ठा करती है, जब उन्हें देखा जाता है. (b/267792241)- ध्यान दें कि अगर Coroutines टेस्टिंग लाइब्रेरी का इस्तेमाल किया जा रहा है, तो इस बदलाव की वजह से आपकी जांचों में
UncompletedCoroutinesErrorट्रिगर हो सकता है. इस समस्या से बचने के लिए, पक्का करें कि आपने अपनी जांचों मेंDataStoreको शुरू करते समय,TestScope.backgroundScopeपास किया हो.
- ध्यान दें कि अगर Coroutines टेस्टिंग लाइब्रेरी का इस्तेमाल किया जा रहा है, तो इस बदलाव की वजह से आपकी जांचों में
- एक ही इंस्टेंस पर नेस्ट किए गए
updateDataकॉल की समस्या को ठीक किया गया है. (b/241760537) - माइग्रेशन के दौरान
SharedPreferencesको मिटाने में गड़बड़ी होने पर,DataStoreअबIOExceptionsनहीं दिखाएगा. (b/195553816) - Android के अलावा अन्य JVM एनवायरमेंट में,
updateDataके दौरान फ़ाइल का नाम बदलने में आने वाली समस्या को ठीक किया गया है. (b/203087070) - उस समस्या को ठीक किया गया है जिसमें
DataStoreके शुरू होने के बादCorruptionExceptionको हैंडल नहीं किया जाता था. (b/289582516)
वर्शन 1.1.0-beta01
10 जनवरी, 2024
androidx.datastore:datastore-*:1.1.0-beta01 को 1.1.0-alpha07 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 1.1.0-beta01 में ये बदलाव शामिल हैं.
वर्शन 1.1.0-alpha07
29 नवंबर, 2023
androidx.datastore:datastore-*:1.1.0-alpha07 रिलीज़ हो गया है. वर्शन 1.1.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
MultiProcessDataStoreFactoryतरीके अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.@ExperimentalMultiProcessDataStoreएनोटेशन को पूरी तरह से हटा दिया गया है. (Ieee54, I8e607)
गड़बड़ियां ठीक की गईं
@ExperimentalMultiProcessDataStoreएनोटेशन हटाने की सुविधा को 1.1.0-alpha07 पर रोल आउट करें. (I8e607)
वर्शन 1.1.0-alpha06
1 नवंबर, 2023
androidx.datastore:datastore-*:1.1.0-alpha06 रिलीज़ हो गया है. वर्शन 1.1.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
createSingleProcessCoordinatorफ़ैक्ट्री मेथड को अब फ़ाइल पाथ (String,java.io.File, औरokio.Path) मिलता है, ताकि यहcreateMultiProcessCoordinatorके साथ काम कर सके. (I211c8, b/305755935)
वर्शन 1.1.0-alpha05
6 सितंबर, 2023
androidx.datastore:datastore-*:1.1.0-alpha05 रिलीज़ हो गया है. वर्शन 1.1.0-alpha05 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Datastore
FileStorageअब सभी के लिए उपलब्ध है, ताकि क्लाइंट कस्टम पैरामीटर दे सकें. (Icb985) OkioStorageकंस्ट्रक्टर में बदलाव किया गया है, ताकि यहInterProcessCoordinatorको स्वीकार कर सके. इससे इसे Android परMultiProcessCoordinatorके साथ इस्तेमाल किया जा सकेगा. (Iecea3)
गड़बड़ियां ठीक की गईं
MultiProcessCoordinatorएक ही डायरेक्ट्री में मौजूद कई फ़ाइलों को मॉनिटर नहीं किया जा सकता. इस समस्या को ठीक किया गया.- अगर फ़ाइल पाथ सामान्य नहीं हैं, तो डुप्लीकेट फ़ाइलों का पता न चलने की समस्या को ठीक किया गया.
RxDataStore#isDisposedसे मिली गलत वैल्यू ठीक करें.datstore-preferences-coreआर्टफ़ैक्ट के लिए, ProGuard कॉन्फ़िगरेशन मौजूद न होने की समस्या ठीक की गई.
वर्शन 1.1.0-alpha04
5 अप्रैल, 2023
androidx.datastore:datastore-*:1.1.0-alpha04 रिलीज़ हो गया है. वर्शन 1.1.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इंटरनल प्रोसेस को बेहतर बनाएं, ताकि रेस कंडीशन से बचा जा सके. रेस कंडीशन में, अपडेट के बाद
DataStoreका डेटा फ़्लो, पुरानी वैल्यू दिखा सकता है.
वर्शन 1.1.0-alpha03
24 मार्च, 2023
androidx.datastore:datastore-*:1.1.0-alpha03 रिलीज़ हो गया है.
गड़बड़ियां ठीक की गईं
- Kotlin Native Targets (b/274786186, KT-57531) में बिल्ड की समस्या को ठीक करने के लिए, Maven आर्टफ़ैक्ट से डिपेंडेंसी की पाबंदियां हटा दी गई हैं.
वर्शन 1.1.0-alpha02
22 मार्च, 2023
androidx.datastore:datastore-*:1.1.0-alpha02 रिलीज़ हो गया है. वर्शन 1.1.0-alpha02 में ये बदलाव शामिल हैं.
ध्यान दें
ध्यान दें कि इस वर्शन में, एक अहम इंटरनल रीफ़ैक्टर शामिल है. यह सिंगल प्रोसेस और मल्टी प्रोसेस DataStore के लिए लागू किए गए बदलावों को मर्ज करता है. कृपया अनचाहे व्यवहार में होने वाले संभावित बदलावों पर नज़र रखें. उदाहरण के लिए, अपडेट की सूचनाओं का समय. इस तरह के बदलावों की शिकायत करने के लिए, समस्या ट्रैकर कॉम्पोनेंट का इस्तेमाल किया जा सकता है.
नई सुविधाएं
- अब KMM प्रोजेक्ट में
DataStoreका इस्तेमाल किया जा सकता है. ध्यान दें कि DataStore के नॉन-Android टारगेट अब भी एक्सपेरिमेंट के तौर पर उपलब्ध हैं. हालांकि, हमने वर्शन को मर्ज करने का फ़ैसला किया है, ताकि डेवलपर इन्हें आसानी से आज़मा सकें. - मल्टी प्रोसेस की सुविधाओं को
androidx.datastore.multiprocessसेandroidx.datastore.coreमें ले जाया गया है. - फ़ाइल से जुड़े ऑपरेशन के लिए
Storageऑब्जेक्ट के साथ DataStore इंस्टेंस बनाने के लिए,androidx.datastore.core.MultiProcessDataStoreFactoryमें नई फ़ैक्ट्री मेथड जोड़ें. - एक नया इंटरफ़ेस
InterProcessCoordinatorजोड़ा गया है. इससे कई DataStore इंस्टेंस, प्रोसेस के बीच कम्यूनिकेट कर पाते हैं. ध्यान दें किInterProcessCoordinatorको एक साथ कई प्रोसेस में लागू करने की सुविधा, सिर्फ़ Android पर उपलब्ध है.
एपीआई में हुए बदलाव
- datastore-core इंटरफ़ेस (I555bb) में
StorageConnectionकोInterProcessCoordinatorमें जोड़ा गया - datastore-core
MultiProcessDataStoreFactoryमें मौजूद एपीआई को बदलकर, Storage का इस्तेमाल करें. (Iac02f) - datastore-multiprocess में मौजूद सार्वजनिक एपीआई को datastore-core में ले जाएं (I76d7c)
- datastore-preferences-core से
PreferencesSerializerको दिखाया गया (I4b788) @JvmDefaultWithCompatibilityएनोटेशन जोड़ा गया (I8f206)
वर्शन 1.1.0-alpha01
9 नवंबर, 2022
androidx.datastore:datastore-*:1.1.0-alpha01 रिलीज़ हो गया है. वर्शन 1.1.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक से ज़्यादा प्रोसेस के इस्तेमाल के उदाहरणों के साथ काम करता है. इनमें यह गारंटी दी जाती है कि सभी प्रोसेस में
DataStoreइंस्टेंस के बीच डेटा एक जैसा होगा. ऐसेDataStoreइंस्टेंस बनाने के लिए,MultiProcessDataStoreFactory#createजोड़ें. - नया स्टोरेज इंटरफ़ेस, जिसकी मदद से
Datastoreके लिए स्टोरेज की सुविधा को बंद किया जा सकता है. java.io और okio के लिए, लागू करने की सुविधाएं उपलब्ध कराई गई हैं.DataStoreफ़ैक्ट्रियों में नए तरीके हैं जो इस स्टोरेज ऑब्जेक्ट को स्वीकार करते हैं.
एपीआई में हुए बदलाव
- datastore-core
MultiProcessDataStoreFactoryमें मौजूद एपीआई को बदलकर, Storage का इस्तेमाल करें. (Iac02f) - datastore-multiprocess में मौजूद सार्वजनिक एपीआई को datastore-core में ले जाएं (I76d7c)
- datastore-preferences-core से
PreferencesSerializerको दिखाया गया (I4b788)
वर्शन 1.0.0
वर्शन 1.0.0
4 अगस्त, 2021
androidx.datastore:datastore-*:1.0.0 रिलीज़ हो गया है. वर्शन 1.0.0 में ये बदलाव शामिल हैं.
1.0.0 वर्शन की मुख्य सुविधाएं
Jetpack DataStore, डेटा स्टोरेज का एक समाधान है. इसकी मदद से, प्रोटोकॉल बफ़र के साथ की-वैल्यू पेयर या टाइप किए गए ऑब्जेक्ट स्टोर किए जा सकते हैं. DataStore, Kotlin coroutines और Flow का इस्तेमाल करता है, ताकि डेटा को एसिंक्रोनस तरीके से, लगातार, और ट्रांज़ैक्शन के तौर पर सेव किया जा सके.
वर्शन 1.0.0-rc02
21 जुलाई, 2021
androidx.datastore:datastore-*:1.0.0-rc02 रिलीज़ हो गया है. वर्शन 1.0.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- यह साफ़ तौर पर बताएं कि अगर कोई बटन नहीं है, तो
SharedPreferencesMigrationकाम नहीं करता. (Icfa32, b/192824325) - उस गड़बड़ी को ठीक किया गया है जिसमें
SharedPreferencesMigrationकोMIGRATE_ALL_KEYSके साथ बनाने पर, अगर अनुरोध की गई कुंजी मौजूद नहीं है, तो अपवाद दिखता था. (Ie318a, b/192824325)
वर्शन 1.0.0-rc01
30 जून, 2021
androidx.datastore:datastore-*:1.0.0-rc01 रिलीज़ हो गया है. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें .java फ़ाइल को गलती से फ़ाइनल जार में जोड़ दिया गया था (I65d96, b/188985637)
वर्शन 1.0.0-beta02
16 जून, 2021
androidx.datastore:datastore-*:1.0.0-beta02 रिलीज़ हो गया है. वर्शन 1.0.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
ClassVerificationFailureठीक करें (b/187450483)
वर्शन 1.0.0-beta01
21 अप्रैल, 2021
androidx.datastore:datastore-*:1.0.0-beta01 रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- सिर्फ़ Kotlin के तरीकों के लिए JVM ओवरलोड हटाएं (I2adc7)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, datastore डेलिगेट से कॉन्टेक्स्ट लीक हो सकते थे (Ie96fc, b/184415662)
वर्शन 1.0.0-alpha08
10 मार्च, 2021
androidx.datastore:datastore-*:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब अपने
dataStoreऔरpreferencesDataStoreप्रॉपर्टी डेलिगेट में, कॉन्टेक्स्ट पर निर्भर माइग्रेशन जोड़ा जा सकता है. (I4ef69, b/173726702) - अगर अब datastore डेलिगेट या context.createDataStore (I60f9a) का इस्तेमाल नहीं किया जा रहा है, तो फ़ाइल का नाम पाने के लिए हेल्पर फ़ंक्शन जोड़ता है
- Serializer writeTo और readFrom अब निलंबित हो रहे हैं. अगर आपने कोई सीरियललाइज़र लागू किया है, तो आपको अपने फ़ंक्शन को निलंबित करने वाले फ़ंक्शन के तौर पर अपडेट करना होगा. (I1e58e)
- RxDataStore का इस्तेमाल करने वाले लोगों के लिए, प्रॉपर्टी के डेलिगेट जोड़े गए. (Ied768, b/173726702)
गड़बड़ियां ठीक की गईं
- एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें (I6aa29, b/174531520)
वर्शन 1.0.0-alpha07
24 फ़रवरी, 2021
androidx.datastore:datastore-*:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Context.createDataStoreएक्सटेंशन फ़ंक्शन को हटा दिया गया है. इसकी जगह globalDataStore प्रॉपर्टी डेलिगेट का इस्तेमाल किया जा रहा है. अपनी Kotlin फ़ाइल में, सबसे ऊपर के लेवल पर globalDataStore को एक बार कॉल करें. उदाहरण के लिए:val Context.myDataStore by dataStore(...)इसे अपनी Kotlin फ़ाइल के टॉप लेवल पर रखें, ताकि इसका सिर्फ़ एक इंस्टेंस हो. (I57215, b/173726702)
RxDataStore फ़ंक्शन अब DataStore पर एक्सटेंशन फ़ंक्शन के बजाय RxDataStore क्लास पर हैं. (Idccdb, b/177691248)
अगर आपको EncryptedSharedPreferences या डायरेक्ट बूट SharedPreferences को DataStore पर माइग्रेट करना है, तो अब ऐसा किया जा सकता है. इसके लिए, SharedPreferencesMigration के नए कंस्ट्रक्टर का इस्तेमाल करें. इससे आपको SharedPreferences को इंजेक्ट करने की अनुमति मिलती है. (I8e04e, b/177278510)
गड़बड़ियां ठीक की गईं
- अगर एक ही फ़ाइल के लिए एक से ज़्यादा DataStore चालू हैं, तो DataStore अब एक अपवाद दिखाएगा. अगर आपने DataStore को सिंगलटन के तौर पर मैनेज नहीं किया है या यह पक्का नहीं किया है कि किसी फ़ाइल के लिए DataStore के दो इंस्टेंस एक साथ चालू न हों, तो अब आपको DataStore से डेटा पढ़ने या उसमें डेटा लिखने के दौरान अपवाद दिख सकते हैं. इन समस्याओं को ठीक करने के लिए, अपने DataStore को सिंगलटन के तौर पर मैनेज करें. (Ib43f4, b/177691248)
- कॉलर स्कोप रद्द होने पर, रद्द करने से जुड़ी समस्या को ठीक किया गया. (I2c7b3)
वर्शन 1.0.0-alpha06
13 जनवरी, 2021
androidx.datastore:datastore-*:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
- DataStore के लिए RxJava रैपर जोड़े गए.
datastore-rxjava2/3आर्टफ़ैक्ट में, मुख्य DataStore API (RxDataStore,RxDataStoreBuilder, औरRxDataMigration) के लिए रैपर होते हैं.datastore-preferences-rxjava2/3आर्टफ़ैक्ट में, Preferences DataStore बनाने के लिए बिल्डर होता है.
एपीआई में हुए बदलाव
- CorruptionHandler इंटरफ़ेस को छिपाता है. इसे सार्वजनिक करने की कोई वजह नहीं थी, क्योंकि DataStore फ़ैक्ट्री सिर्फ़ ReplaceFileCorruptionHandler को स्वीकार करती है. (I0b3b3, b/176032264)
preferencesKey<T>(name: String): Key<T>तरीके को हटा दिया गया है और इसकी जगह, हर तरह के डेटा के लिए अलग-अलग तरीके इस्तेमाल किए जा रहे हैं. उदाहरण के लिए,preferencesKey<Int>("int")अबintPreferencesKey("int")(Ibcfac, b/170311106) है
गड़बड़ियां ठीक की गईं
- DataStoreFactory के दस्तावेज़ में मौजूद समस्या को ठीक किया गया है. इसमें यह जानकारी शामिल नहीं थी कि datastore फ़ाइल, “datastore/” सबडायरेक्ट्री में बनाई जाती है. (Ica222)
वर्शन 1.0.0-alpha05
2 दिसंबर, 2020
androidx.datastore:datastore-*:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डेटास्टोर से एक साथ कई बार लिखने की सुविधा के बारे में बेहतर दस्तावेज़ और अपवाद जोड़ें. (Ia98a2, b/173522155, b/173726702)
- अब हम
Serializer.writeTo()को पास किए गए OutputStream को बंद करने की अनुमति देते हैं. हालांकि, ऐसा करना ज़रूरी नहीं है. (I5c9bf, b/173037611)
वर्शन 1.0.0-alpha04
17 नवंबर, 2020
androidx.datastore:datastore-*:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पैकेजिंग से जुड़ी समस्या को ठीक कर दिया गया है. इस वजह से, Preference Datastore
1.0.0-alpha03में यह क्रैश हो रहा था:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- क्रैश की समस्या की शिकायत यहां की गई थी: b/173036843
- (I4712d, b/173036843)
वर्शन 1.0.0-alpha03
11 नवंबर, 2020
androidx.datastore:datastore-*:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब प्राथमिकताओं में डबल वैल्यू का इस्तेमाल किया जा सकता है. यह तब काम आता है, जब आपको फ़्लोट से ज़्यादा सटीक वैल्यू की ज़रूरत होती है (I5be8f, b/169471808)
एपीआई में हुए बदलाव
- डेटास्टोर के लिए, प्योर कोटलिन डिपेंडेंसी बनाई गई है, ताकि कंपाइल करने की प्रोसेस को तेज़ किया जा सके.
androidx.datastore:datastore-coreमें सिर्फ़ मुख्य Kotlin API शामिल हैं. वहीं,androidx.datastore:datastoreमें Android पर निर्भर रहने वाले API शामिल हैं. इनमेंSharedPreferencesMigrationऔरContext.createDataStoreकंस्ट्रक्टर भी शामिल हैं.(I42d75, b/168512698) - तेज़ी से Kotlin कंपाइल करने के लिए, प्राथमिकताओं के डेटा स्टोर के लिए टारगेट अलग-अलग किए गए (Ia3c19)
सीरियलाइज़र को अब डिफ़ॉल्ट वैल्यू के लिए एक नई प्रॉपर्टी की ज़रूरत होती है. इसका इस्तेमाल तब किया जाएगा, जब डिस्क पर कोई डेटा मौजूद न हो. इससे कस्टम सीरियलाइज़र को लागू करना आसान हो जाता है, ताकि उपयोगकर्ताओं को खाली इनपुट स्ट्रीम के लिए खास केस की ज़रूरत न पड़े. खाली इनपुट स्ट्रीम, JSON के साथ पार्स नहीं होती हैं.
- साथ ही, अब यह जांच की जाती है कि writeTo() को दी गई आउटपुट स्ट्रीम बंद तो नहीं है. अगर यह बंद है, तो यह अपवाद (I16e29) दिखाता है
SharedPreferencesView के कंस्ट्रक्टर को इंटरनल बनाया गया है. इसे टेस्टिंग के लिए सार्वजनिक तौर पर उपलब्ध कराया गया था. इसके बजाय, टेस्ट को SharedPreferencesMigration बनाना चाहिए और उसके ख़िलाफ़ टेस्ट करना चाहिए. (I93891)
गड़बड़ियां ठीक की गईं
DataStoreFactoryऔरPreferenceDataStoreFactoryपर मौजूदproduceFileपैरामीटर अब सूची में आखिरी पैरामीटर है. इसलिए, इसकी मदद से Kotlin के ट्रेलिंग लैम्डा सिंटैक्स का इस्तेमाल किया जा सकता है. (Ibe7f1, b/169425442)- Kotlin के लिए, एपीआई के इस्तेमाल से जुड़ी नई ज़रूरी शर्तों (I5ae1e) का पालन करना
मौजूदा समस्याएं
- Preference Datastore,
java.lang.NoClassDefFoundErrorके साथ क्रैश हो जाता है. (b/173036843)
वर्शन 1.0.0-alpha02
14 अक्टूबर, 2020
androidx.datastore:datastore-core:1.0.0-alpha02 और androidx.datastore:datastore-preferences:1.0.0-alpha02 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- datastore-core में म्यूटेशन से बचाने के लिए, एक सुरक्षा सुविधा जोड़ी गई है. म्यूटेशन की वजह से, datastore का इस्तेमाल करने वाले उन लोगों के लिए datastore काम नहीं करता जो non-proto/non-preferences टाइप (I6aa84) के साथ datastore का इस्तेमाल करते हैं
- Preferences.kt में
toStringमेथड जोड़ा गया, ताकि मौजूदा स्थिति को आसानी से डीबग किया जा सके (I96006) DataStore.Preferences(I1134d) के गलत इस्तेमाल से बचाने के लिए, एक अपवाद जोड़ा गया- ऐसी गड़बड़ी को ठीक किया गया जिसकी वजह से ऐप्लिकेशन शुरू होने पर क्रैश हो जाता था (I69237, b/168580258)
वर्शन 1.0.0-alpha01
2 सितंबर, 2020
androidx.datastore:datastore-core:1.0.0-alpha01 और androidx.datastore:datastore-preferences:1.0.0-alpha01 रिलीज़ हो गए हैं. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
Jetpack DataStore, डेटा स्टोरेज का नया और बेहतर समाधान है. इसका मकसद SharedPreferences को बदलना है. DataStore को Kotlin coroutines और Flow पर बनाया गया है. यह दो अलग-अलग तरीके से लागू किया जाता है:
- Proto DataStore, जो टाइप किए गए ऑब्जेक्ट सेव करने की सुविधा देता है. यह प्रोटोकॉल बफ़र पर आधारित है
- Preferences DataStore, जो की-वैल्यू पेयर सेव करता है
डेटा को एसिंक्रोनस तरीके से, लगातार, और लेन-देन के हिसाब से सेव किया जाता है. इससे SharedPreferences की ज़्यादातर कमियां दूर हो जाती हैं.