DataStore
| नया अपडेट | स्टेबल वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 12 अक्टूबर, 2026 | 1.2.1 | 1.3.0-rc01 | - | - |
डिपेंडेंसी का एलान करना
DataStore पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
DataStore, सीरियलाइज़ेशन के लिए अलग-अलग विकल्प देता है. इनमें से कोई एक विकल्प चुनें. दोनों में से किसी भी तरीके में, Android-फ़्री डिपेंडेंसी भी जोड़ी जा सकती हैं.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Preferences DataStore
अपनी gradle फ़ाइल के dependencies सेक्शन में ये लाइनें जोड़ें:
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.1" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.1") }
RxJava का इस्तेमाल करने के लिए, ये डिपेंडेंसी जोड़ें:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.1") }
DataStore
अपनी gradle फ़ाइल के dependencies सेक्शन में ये लाइनें जोड़ें:
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.1" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.1") }
RxJava के साथ काम करने के लिए, यहां दी गई वैकल्पिक डिपेंडेंसी जोड़ें:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.1") }
कॉन्टेंट को क्रम से लगाने के लिए, प्रोटोकॉल बफ़र या JSON सीरियलाइज़ेशन के लिए डिपेंडेंसी जोड़ें.
JSON सीरियलाइज़ेशन
JSON सीरियलाइज़ेशन का इस्तेमाल करने के लिए, अपनी 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") }
प्रोटोबफ़ सीरियलाइज़ेशन
प्रोटोबफ़ सीरियलाइज़ेशन का इस्तेमाल करने के लिए, अपनी 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-rc01
12 अक्टूबर, 2026
androidx.datastore:datastore-*:1.3.0-rc01 रिलीज़ हो गया है. वर्शन 1.3.0-rc01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
EdgeToEdge#enable()(Ibff3e) के बजाय,WindowCompat#enableEdgeToEdge(Window)का इस्तेमाल करें
गड़बड़ियां ठीक की गईं
androidx.lifecycle:lifecycle-runtimeडिपेंडेंसी को 2.10.0 पर अपडेट किया गया. AGP 9.5.0-alpha04 या इसके बाद के वर्शन के साथ बंडल किए गए लाइफ़साइकल रनटाइम लिंट चेक चलाने के लिए, यह वर्शन ज़रूरी है. (I99bfd, b/556807521)
वर्शन 1.3.0-alpha11
09 सितंबर, 2026
androidx.datastore:datastore-*:1.3.0-alpha11 रिलीज़ हो गया है. वर्शन 1.3.0-alpha11 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
DataStoreकी सेटिंग पार्स करने में गड़बड़ी होने पर,CorruptionExceptionमैसेज में फ़ाइल पाथ शामिल नहीं होता है. (Ia9e8f)
वर्शन 1.3.0-alpha10
29 जुलाई, 2026
androidx.datastore:datastore-*:1.3.0-alpha10 रिलीज़ हो गया है. वर्शन 1.3.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration.(I26e56, b/514941919)
वर्शन 1.3.0-alpha09
6 मई, 2026
androidx.datastore:datastore-*:1.3.0-alpha09 रिलीज़ हो गया है. वर्शन 1.3.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में बदलाव
ReThrowCorruptionHandlerको सार्वजनिक करें. (I137bb, b/427722902)- ट्रेसिंग लाइफ़साइकल को सिस्टम ट्रेस करने की प्रक्रिया के मुताबिक बनाएं. (Ib391b)
वर्शन 1.3.0-alpha08
22 अप्रैल, 2026
androidx.datastore:datastore-*:1.3.0-alpha08 रिलीज़ हो गया है. वर्शन 1.3.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
- वेब प्लैटफ़ॉर्म के लिए, DataStore में ओरिजन प्राइवेट फ़ाइल सिस्टम (ओपीएफ़एस) के लिए सहायता जोड़ी गई. इस सुविधा को लागू करने से,
WebOpfsStorageका इस्तेमाल किया जा सकेगा. साथ ही, इसमें एसिंक्रोनस फ़ाइल I/O,BroadcastChannelAPI का इस्तेमाल करके क्रॉस-टैब सूचनाएं, और खास तौर पर लिखने की अनुमति के लिए नेटिवWeb Locks APIके ज़रिए डिस्ट्रिब्यूटेड लॉकिंग की सुविधा भी शामिल है. Id7f5807 b/316376114
एपीआई में हुए बदलाव
- वेब एनवायरमेंट में स्टोरेज टाइप को साफ़ तौर पर मैनेज करने के लिए,
WebLocalStorageऔरWebSessionStorageएपीआई लॉन्च किए गए. I35fa259b b/316376114
वर्शन 1.3.0-alpha07
11 मार्च, 2026
androidx.datastore:datastore-*:1.3.0-alpha07 रिलीज़ हो गया है. वर्शन 1.3.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एन्क्रिप्ट करने की सुविधा: नया
androidx.datastore:datastore-tinkआर्टफ़ैक्ट लॉन्च किया गया है. इसकी मदद से, Tink लाइब्रेरी का इस्तेमाल करके, डेटास्टोर को एन्क्रिप्ट किया जा सकता है. इस मॉड्यूल मेंAeadSerializerके बारे में बताया गया है. यह एक नई रैपर क्लास है, जोSerializer<T>को लागू करती है. साथ ही, डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए, Tink के Authenticated Encryption with Associated Data (AEAD) का इस्तेमाल करती है.AeadSerializerका इस्तेमाल, जेवीएम और Android टारगेट प्लैटफ़ॉर्म पर किया जा सकता है. - नया
DataStoreBuilder API: इसेDataStore.Builder<T>DataStoreFactoryके विकल्प के तौर पर लॉन्च किया गया है, ताकि इसे आसानी से बढ़ाया जा सके. इस नए एपीआई की मदद से, उपयोगकर्ता अबsetCorruptionHandlerके ज़रिए, डेटा में गड़बड़ी का पता लगाने के लिए अपनी लॉजिक लेयर उपलब्ध करा सकते हैं. इसके अलावा,Builderएपीआई के लिए यह ज़रूरी है किDataStoreकोCoroutineScopeके बजायCoroutineContextका इस्तेमाल करके शुरू किया जाए. यह स्ट्रक्चर्ड कंकरेंसी के लिए एक बेहतर तरीका है. इससे कॉल करने वाले लोग, एक्ज़ीक्यूशन के तरीके (जैसे कि खास डिस्पैचर) तय कर पाते हैं. साथ ही,DataStoreको कॉल करने वाले के स्कोप के लाइफ़साइकल को गलत तरीके से मैनेज करने या उससे बंधे रहने के लिए मजबूर नहीं किया जाता.ध्यान दें: हमारा सुझाव है कि सभी उपयोगकर्ता,
DataStoreFactoryसे नएDataStore.Builderएपीआई पर माइग्रेट करें.CoroutineScopeके बजायCoroutineContextकी ज़रूरत होने से, एपीआई बेहतर स्ट्रक्चर्ड कंकरेंसी लागू करता है. इससे यह पक्का होता है कि DataStore के ऑपरेशन, कम समय के लिए चलने वाले यूज़र इंटरफ़ेस (यूआई) लाइफ़साइकल (जैसे,viewModelScope) से बंधे न हों. इससे, समय से पहले रद्द होने और डेटा के संभावित नुकसान से बचा जा सकता है.चेतावनी: पक्का करें कि बिल्डर को दिए गए
CoroutineContextमेंJobहो और वह ऐप्लिकेशन के दायरे में हो. अगर कॉन्टेक्स्ट रद्द कर दिया जाता है, तोDataStoreके अंदरूनी ऑपरेशन समय से पहले खत्म हो जाएंगे.
एपीआई में हुए बदलाव
DataStoreके लिए, एन्क्रिप्शन की सुविधा के साथ काम करने वाला नयाandroidx.datastore:datastore-tinkआर्टफ़ैक्ट लॉन्च किया गया. (Ic106d, b/167697691)Tink का इस्तेमाल करके डेटा को एन्क्रिप्ट (सुरक्षित) करने के लिए, यह तरीका अपनाएं:
Tink API का इस्तेमाल करके पासकोड बनाएं:
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleकोई ऐसा
AeadSerializerबनाएं जो किसी मौजूदा सीरियलाइज़र को रैप करता हो:val aeadSerializer = AeadSerializer( // Use tink APIs to create an Aead object to encrypt/decrypt data. aead = keysetHandle.getPrimitive( RegistryConfiguration.get(), Aead::class.java, ), // AeadSerializer can wrap an existing serializer. wrappedSerializer = ExistingSerializer, // Specify a unique name to prevent a ciphertext swapping attack. associatedData = "settings.json".encodeToByteArray(), )डेटास्टोर इंस्टेंस बनाते समय, अपने सीरियलाइज़र की जगह इस
aeadSerializerका इस्तेमाल करें:val dataStore = dataStore( fileName = "settings.json", serializer = aeadSerializer, scope = scope, )
DataStoreFactoryके आधुनिक और स्केलेबल विकल्प के तौर पर,DataStore.Builder<T>को लॉन्च किया गया. (I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)
वर्शन 1.3.0-alpha06
25 फ़रवरी, 2026
androidx.datastore:datastore-*:1.3.0-alpha06 रिलीज़ हो गया है. वर्शन 1.3.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
DataStoreअब Android टारगेट प्लैटफ़ॉर्म परandroidx.tracingके साथ काम करता है.DataStoreFactory.createWithTracing()फ़ंक्शन कोandroidx.tracing.Tracerइंस्टेंस देकर, ट्रेसिंग के साथDataStoreबनाया जा सकता है. (I71bc2, b/427722902)
वर्शन 1.3.0-alpha05
28 जनवरी, 2026
androidx.datastore:datastore-*:1.3.0-alpha05 रिलीज़ हो गया है. वर्शन 1.3.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- डेटास्टोर में बेसलाइन प्रोफ़ाइलें जोड़ी गईं. (3916245,b/469127532).
localStorageकी मदद से, DataStore में WASM/JS की सुविधा लागू करें. इससे मौजूदाsessionStorageके मुकाबले ज़्यादा फ़ायदा मिलता है. ऐसा इसलिए, क्योंकि इससे क्रॉस-टैब इवेंट की सूचनाएं पाने और उन्हें सिंक करने की सुविधा मिलती है. (I67246, b/441511612)
वर्शन 1.3.0-alpha04
14 जनवरी, 2026
androidx.datastore:datastore-*:1.3.0-alpha04 रिलीज़ हो गया है. वर्शन 1.3.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक यूटिलिटी कॉपी फ़ंक्शन जोड़ा गया है. इसका इस्तेमाल, सेटिंग
DataStoreके लिए डेटा अपडेट करने के लिए किया जा सकता है. (I70a18, b/467120382)
गड़बड़ियां ठीक की गईं
- उस समस्या को हल किया गया है जिसमें बाइनरी डेटा को सेव करते समय, वह खराब हो सकता था. इसके लिए, वेब के लिए UTF-8 स्ट्रिंग हैंडलिंग को Base64 एन्कोडिंग से बदल दिया गया है. (Ie3178, b/473790107)
वर्शन 1.3.0-alpha03
17 दिसंबर, 2025
androidx.datastore:datastore-*:1.3.0-alpha03 रिलीज़ हो गया है. वर्शन 1.3.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टेंप डेटास्टोर फ़ाइल का नाम बदलने में आ रही समस्या को ठीक किया गया. (I94f89, b/203087070)
- एक साथ पढ़ने/लिखने के दौरान अपडेट रुकने की समस्या को ठीक किया गया है.
DataStore.dataपर मौजूद नए कलेक्टर और एक साथ होने वालेupdateDataकॉल के बीच रेस कंडिशन हो सकती है. इसकी वजह से, कलेक्टर को नई वैल्यू नहीं मिल पाती. (I6a427, b/431787506)
वर्शन 1.3.0-alpha02
03 दिसंबर, 2025
androidx.datastore:datastore-*:1.3.0-alpha02 रिलीज़ हो गया है. वर्शन 1.3.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.datastoreमें js() टारगेट जोड़ें. (I1f62b, b/441511612)GuavaDataStoreके अपडेट में, एफ़आईएफ़ओ ऑर्डर लागू करें. (I6fd00,b/451491257)
वर्शन 1.3.0-alpha01
19 नवंबर, 2025
androidx.datastore:datastore-*:1.3.0-alpha01 रिलीज़ हो गया है. वर्शन 1.3.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
sessionStorageएपीआई का इस्तेमाल करके,DataStoreमें केएमपी वेब की सुविधा जोड़ी गई. इस सुविधा की मदद से,DataStoreएक ही ब्राउज़र टैब में डेटा को कुछ समय के लिए सेव कर सकता है. (I60fad, b/316376114)
वर्शन 1.2
वर्शन 1.2.1
11 मार्च, 2026
androidx.datastore:datastore-*:1.2.1 रिलीज़ हो गया है. वर्शन 1.2.1 में ये बदलाव शामिल हैं.
कोई बदलाव नहीं
- इस रिलीज़ में, इन्फ़्रास्ट्रक्चर से जुड़ी छोटी-मोटी गड़बड़ियां ठीक की गई हैं. इसमें, DataStore API या वर्शन 1.2.0 के व्यवहार में कोई बदलाव नहीं किया गया है.
वर्शन 1.2.0
19 नवंबर, 2025
androidx.datastore:datastore-*:1.2.0 रिलीज़ हो गया है. वर्शन 1.2.0 में ये बदलाव शामिल हैं.
1.1.0 वर्शन के बाद हुए मुख्य बदलाव
Java/Guava की सुविधा:
GuavaDataStoreके ज़रिए, Java और GuavaListenableFutureके उपयोगकर्ताओं के लिए, एपीआई को एक्सपोज़ करने के लिए नया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 की मदद से ऑप्टिमाइज़ किए गए ऐसे ऐप्लिकेशन में
java.lang.UnsatisfiedLinkErrorDataStoreकी समस्या ठीक की गई है जो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 में ये बदलाव शामिल हैं.
नई सुविधाएं
GuavaDataStoreके ज़रिए Java और GuavaListenableFutureउपयोगकर्ताओं के लिए, एपीआई को आसानी से इस्तेमाल करने के लिएdatastore-guavaमॉड्यूल जोड़ा गया. (Iadd5e0)DirectBootमोड के दौरानDataStoreके इस्तेमाल की सुविधा अब उपलब्ध है. डायरेक्ट बूट मोड के दौरान इस्तेमाल किए जाने वाले डेटास्टोर को डिवाइस प्रोटेक्टेड स्टोरेज में बनाना ज़रूरी है. इसके लिए, इन नएDataStoreएपीआई का इस्तेमाल किया जा सकता है:DataStoreFactoryमेंcreateInDeviceProtectedStorage()और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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- वर्शन
1.1.5में Gradle मेटाडेटा के काम न करने की समस्या को ठीक किया गया. यह समस्या, नए 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 जेवीएम एनवायरमेंट में,
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 नेटिव टारगेट (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 (I4b788) से
PreferencesSerializerको एक्सपोज़ किया गया @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में एपीआई बदलें. (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) - उस गड़बड़ी को ठीक किया गया है जिसमें
MIGRATE_ALL_KEYSकी मदद से बनाए गएSharedPreferencesMigrationमें, अनुरोध की गई कुंजी मौजूद न होने पर एक अपवाद दिखता था. (Ie318a, b/192824325)
वर्शन 1.0.0-rc01
30 जून, 2021
androidx.datastore:datastore-*:1.0.0-rc01 रिलीज़ हो गया है. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से .java फ़ाइल, अनजाने में फ़ाइनल jar (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)
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से डेटास्टोर डेलिगेट, कॉन्टेक्स्ट लीक कर सकते थे (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 delegate या context.createDataStore (I60f9a) का इस्तेमाल नहीं किया जा रहा है, तो फ़ाइल का नाम पाने के लिए हेल्पर फ़ंक्शन जोड़ता है
- Serializer writeTo और readFrom अब निलंबित हो रहे हैं. अगर आपने Serializer लागू किया है, तो आपको अपने फ़ंक्शन अपडेट करने होंगे, ताकि वे suspend फ़ंक्शन बन सकें. (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/” सबडायरेक्ट्री में बनाई जाती है. (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 के मुख्य एपीआई शामिल हैं. वहीं,androidx.datastore:datastoreमें Android पर निर्भर रहने वाले एपीआई शामिल हैं. इनमेंSharedPreferencesMigrationऔरContext.createDataStoreकंस्ट्रक्टर भी शामिल हैं.(I42d75, b/168512698) - तेज़ी से Kotlin कंपाइल करने के लिए, प्राथमिकताओं के डेटा स्टोर के लिए टारगेट को अलग करना (Ia3c19)
सीरियलाइज़र को अब डिफ़ॉल्ट वैल्यू के लिए एक नई प्रॉपर्टी की ज़रूरत होती है. इसका इस्तेमाल तब किया जाएगा, जब डिस्क पर कोई डेटा मौजूद न हो. इससे कस्टम सीरियलाइज़र को लागू करना आसान हो जाता है, ताकि उपयोगकर्ताओं को खाली इनपुट स्ट्रीम के लिए खास केस की ज़रूरत न पड़े. खाली इनपुट स्ट्रीम, JSON के साथ पार्स नहीं होती हैं.
- साथ ही, अब यह जांच की जाती है कि writeTo() को दी गई आउटपुट स्ट्रीम बंद तो नहीं है. अगर यह बंद है, तो यह अपवाद (I16e29) दिखाता है
SharedPreferencesView के लिए कंस्ट्रक्टर को इंटरनल बनाना. शुरुआत में, इसे सार्वजनिक तौर पर उपलब्ध कराया गया था, ताकि इसकी टेस्टिंग की जा सके. इसके बजाय, टेस्ट को SharedPreferencesMigration बनाना चाहिए और उसके ख़िलाफ़ टेस्ट करना चाहिए. (I93891)
गड़बड़ियां ठीक की गईं
DataStoreFactoryऔरPreferenceDataStoreFactoryपर मौजूदproduceFileपैरामीटर अब सूची में आखिरी पैरामीटर है. इसलिए, यह आपको Kotlin के ट्रेलिंग लैम्डा सिंटैक्स का इस्तेमाल करने की अनुमति देता है. (Ibe7f1, b/169425442)- Kotlin के लिए, साफ़ तौर पर एपीआई की नई ज़रूरी शर्तों का पालन करना (I5ae1e)
आम समस्याएं
java.lang.NoClassDefFoundErrorकी वजह से, Preference Datastore क्रैश हो जाता है. (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 में म्यूटेशन से सुरक्षा की सुविधा जोड़ी गई. म्यूटेशन की वजह से, डेटास्टोर का इस्तेमाल करने वाले उन लोगों के लिए डेटास्टोर का इस्तेमाल बंद हो जाता है जो नॉन-प्रोटो/नॉन-प्राथमिकताओं वाले टाइप का इस्तेमाल करते हैं (I6aa84)
- 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 की जगह लेना है. Kotlin coroutines और Flow पर आधारित DataStore, दो अलग-अलग तरीकों से लागू किया जा सकता है:
- Proto DataStore, जो टाइप किए गए ऑब्जेक्ट (प्रोटोकॉल बफ़र की मदद से) सेव करने की सुविधा देता है
- Preferences DataStore, जो की-वैल्यू पेयर को सेव करता है
डेटा को एसिंक्रोनस तरीके से, लगातार, और ट्रांज़ैक्शन के हिसाब से सेव किया जाता है. इससे SharedPreferences की ज़्यादातर कमियों को दूर किया जा सकता है.