DataStore

डेटा को एसिंक्रोनस तरीके से, लगातार, और ट्रांज़ैक्शन के हिसाब से सेव करें. इससे SharedPreferences की कुछ कमियों को दूर किया जा सकता है
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
21 अक्टूबर, 2026 1.3.0 - - -

डिपेंडेंसी का एलान करना

DataStore पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

DataStore, सीरियलाइज़ेशन के लिए अलग-अलग विकल्प उपलब्ध कराता है. इनमें से कोई एक विकल्प चुनें. Android-free डिपेंडेंसी को भी दोनों में से किसी भी तरीके से लागू किया जा सकता है.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन डिपेंडेंसी को जोड़ें जिनकी आपको ज़रूरत है:

Preferences DataStore

将以下代码行添加到 Gradle 文件的依赖项部分:

Groovy

    dependencies {
        // Preferences DataStore (SharedPreferences like APIs)
        implementation "androidx.datastore:datastore-preferences:1.3.0"

        // Alternatively - without an Android dependency.
        implementation "androidx.datastore:datastore-preferences-core:1.3.0"
    }
    

Kotlin

    dependencies {
        // Preferences DataStore (SharedPreferences like APIs)
        implementation("androidx.datastore:datastore-preferences:1.3.0")

        // Alternatively - without an Android dependency.
        implementation("androidx.datastore:datastore-preferences-core:1.3.0")
    }
    

如需添加可选的 RxJava 支持,请添加以下依赖项:

Groovy

    dependencies {
        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.3.0"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.3.0"
    }
    

Kotlin

    dependencies {
        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.3.0")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-preferences-rxjava3:1.3.0")
    }
    

DataStore

将以下代码行添加到 Gradle 文件的依赖项部分:

Groovy

    dependencies {
        // Typed DataStore for custom data objects (for example, using Proto or JSON).
        implementation "androidx.datastore:datastore:1.3.0"

        // Alternatively - without an Android dependency.
        implementation "androidx.datastore:datastore-core:1.3.0"
    }
    

Kotlin

    dependencies {
        // Typed DataStore for custom data objects (for example, using Proto or JSON).
        implementation("androidx.datastore:datastore:1.3.0")

        // Alternatively - without an Android dependency.
        implementation("androidx.datastore:datastore-core:1.3.0")
    }
    

如需支持 RxJava,请添加以下可选依赖项:

Groovy

    dependencies {
        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.3.0"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.3.0"
    }
    

Kotlin

    dependencies {
        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.3.0")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.3.0")
    }
    

如需序列化内容,请添加 Protocol Buffers 或 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")
    }
    

Protobuf 序列化

如需使用 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

21 अक्टूबर, 2026

androidx.datastore:datastore-*:1.3.0 रिलीज़ हो गया है. वर्शन 1.3.0 में ये बदलाव शामिल हैं.

1.2.0 के बाद किए गए अहम बदलाव:

नई सुविधाएं

  • वेब स्टोरेज की सुविधा: केएमपी वेब स्टोरेज के विकल्प जोड़े गए हैं. इससे वेब टारगेट पर डेटा को सेव रखने की सुविधा मिलती है:

    • sessionStorage (WebSessionStorage): इससे किसी एक ब्राउज़र टैब में, कुछ समय के लिए डेटा सेव किया जा सकता है.
    • localStorage (WebLocalStorage): इससे, क्रॉस-टैब इवेंट की सूचनाओं और सिंक करने की सुविधा के साथ, परसिस्टेंट स्टोरेज की सुविधा चालू होती है.
    • ओरिजिन प्राइवेट फ़ाइल सिस्टम (WebOpfsStorage): यह ओपीएफ़एस के ज़रिए फ़ाइल-सिस्टम की सुविधा देता है. इसमें एसिंक्रोनस फ़ाइल I/O और क्रॉस-टैब सूचनाएं शामिल हैं.
  • एन्क्रिप्शन की सुविधा (datastore-tink): नया androidx.datastore:datastore-tink आर्टफ़ैक्ट जोड़ा गया है. यह Tink लाइब्रेरी का इस्तेमाल करके, एन्क्रिप्शन की सुविधा देता है. यह AeadSerializer को पेश करता है, ताकि असोसिएटेड डेटा (एईएडी) के साथ ऑथेंटिकेट किए गए एन्क्रिप्शन का इस्तेमाल करके, डेटा को एन्क्रिप्ट और डिक्रिप्ट किया जा सके.

  • ट्रेसिंग की सुविधा: Android टारगेट प्लैटफ़ॉर्म पर, androidx.tracing के लिए सहायता जोड़ी गई.

  • DataStore.Builder एपीआई: DataStoreFactory के आधुनिक और ज़रूरत के हिसाब से बढ़ाए जा सकने वाले विकल्प के तौर पर, DataStore.Builder<T> को लॉन्च किया गया. स्ट्रक्चर्ड कॉनकरंसी को बेहतर बनाने के लिए, CoroutineScope के बजाय CoroutineContext की ज़रूरत होती है.

  • बेसलाइन प्रोफ़ाइलें: datastore में बेसलाइन प्रोफ़ाइलें जोड़ी गई हैं, ताकि ऐप्लिकेशन को शुरू होने में कम समय लगे.

एपीआई में हुए बदलाव

  • DataStore.Builder, ReThrowCorruptionHandler, और InterProcessCoordinator एपीआई को public पर अपडेट कर दिया गया है.

गड़बड़ियां ठीक की गईं और सुधार किए गए

  • पार्स करने में होने वाली गड़बड़ियों के दौरान, डीबग करने की सुविधा को बेहतर बनाने के लिए, CorruptionException मैसेज में फ़ाइल पाथ की जानकारी जोड़ी गई.

  • अपडेट के लिए, एफ़आईएफ़ओ (पहले जनरेट हुए इनवॉइस का पेमेंट सबसे पहले करना) के सख्त नियम को लागू करके, GuavaDataStore में डेटा के संभावित नुकसान को ठीक किया गया.

वर्शन 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 पर अपडेट किया गया. यह वर्शन, एजीपी के 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, BroadcastChannel एपीआई का इस्तेमाल करके क्रॉस-टैब सूचनाएं, और खास तौर पर लिखने का ऐक्सेस देने के लिए नेटिव 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 टारगेट प्लैटफ़ॉर्म पर किया जा सकता है.
  • नया DataStore Builder API: DataStoreFactory के विकल्प के तौर पर DataStore.Builder<T> को पेश किया गया है. इसे ज़रूरत के हिसाब से बढ़ाया जा सकता है. इस नए एपीआई की मदद से, उपयोगकर्ता अब 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 का इस्तेमाल करके डेटा को एन्क्रिप्ट करने के लिए, यह तरीका अपनाएं:

    1. Tink API का इस्तेमाल करके कुंजी बनाएं:

      val keysetHandle =
          AndroidKeysetManager.Builder()
              .withSharedPref(applicationContext, "keyset", "keyset_prefs")
              .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM))
              .withMasterKeyUri("android-keystore://master_key")
              .build()
              .keysetHandle
      
    2. किसी मौजूदा सीरियलाइज़र को रैप करने वाला 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(),
      )
      
    3. डेटास्टोर इंस्टेंस बनाते समय, अपने सीरियलाइज़र की जगह इस 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 और Guava ListenableFuture के उपयोगकर्ताओं के लिए, एपीआई को एक्सपोज़ करने के लिए नया datastore-guava मॉड्यूल जोड़ा गया.
  • GuavaDataStore में मल्टीप्रोसेस की सुविधा जोड़ी गई.
  • GuavaDataStore.from के लिए एक ओवरलोड जोड़ा गया है, जो CoroutineContext के बजाय Java Executor को स्वीकार करता है और 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 के बजाय एक्ज़ीक्यूटर लेता है. (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 मॉड्यूल जोड़ा गया, ताकि GuavaDataStore के ज़रिए Java और Guava ListenableFuture के उपयोगकर्ताओं को एपीआई उपलब्ध कराए जा सकें. (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 मेटाडेटा के काम न करने की समस्या को ठीक किया गया. यह समस्या, नए एजीपी केएमपी प्लग इन डीएसएल में मौजूद गड़बड़ी की वजह से हुई थी. इसकी वजह से, सभी टारगेट प्लैटफ़ॉर्म के लिए मेटाडेटा अपने-आप शामिल नहीं हो पा रहा था. इस गड़बड़ी की वजह से, क्लाइंट के बिल्ड में कुछ 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 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • CorruptionException को कम करके विश्वसनीयता बढ़ाने के लिए, डिफ़ॉल्ट स्टोरेज को OkioStorage से बदलकर FileStorage करें. (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 को केएमपी के कॉमन कोड से बनाया जा सकता है. (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)
  • रेस कंडिशन की समस्या को ठीक किया गया है. इसकी वजह से, MultiProcess DataStore को शुरू करने के दौरान, अमान्य होने की जानकारी नहीं मिल पाती थी. ((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 को पास किया हो.
  • ​एक ही इंस्टेंस पर नेस्ट किए गए updateData कॉल के डेडलॉक होने की समस्या को ठीक किया गया. (b/241760537)
  • DataStore को इस तरह से बनाया गया है कि माइग्रेशन के दौरान SharedPreferences को मिटाने में गड़बड़ी होने पर, अब 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 में ट्रांसफ़र कर दिया गया है.
  • androidx.datastore.core.MultiProcessDataStoreFactory में एक नया फ़ैक्ट्री तरीका जोड़ें, ताकि फ़ाइल से जुड़े कामों के लिए Storage ऑब्जेक्ट के साथ DataStore इंस्टेंस बनाए जा सकें.
  • एक नया इंटरफ़ेस InterProcessCoordinator जोड़ें, जो कई DataStore इंस्टेंस को प्रोसेस के दौरान कम्यूनिकेट करने में मदद करता है. ध्यान दें कि InterProcessCoordinator को मल्टी-प्रोसेस के तौर पर लागू करने की सुविधा, सिर्फ़ Android पर उपलब्ध है.

एपीआई में बदलाव

  • datastore-core इंटरफ़ेस (I555bb) में, StorageConnection में InterProcessCoordinator जोड़ा गया
  • स्टोरेज का इस्तेमाल करने के लिए, datastore-core MultiProcessDataStoreFactory में एपीआई बदलें. (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 (I4b788) से PreferencesSerializer को एक्सपोज़ किया गया

वर्शन 1.0.0

वर्शन 1.0.0

4 अगस्त, 2021

androidx.datastore:datastore-*:1.0.0 रिलीज़ हो गया है. वर्शन 1.0.0 में ये बदलाव शामिल हैं.

1.0.0 की मुख्य सुविधाएं

Jetpack DataStore, डेटा सेव करने का एक तरीका है. इसकी मदद से, प्रोटोकॉल बफ़र के साथ की-वैल्यू पेयर या टाइप किए गए ऑब्जेक्ट सेव किए जा सकते हैं. DataStore, डेटा को एसिंक्रोनस, लगातार, और ट्रांज़ैक्शन के हिसाब से सेव करने के लिए, Kotlin कोरूटीन और 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)
  • अगर अब डेटास्टोर डेलिगेट या context.createDataStore का इस्तेमाल नहीं किया जा रहा है, तो फ़ाइल का नाम पाने के लिए हेल्पर फ़ंक्शन जोड़े गए हैं (I60f9a)
  • सीरियलाइज़र 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

वर्शन 1.0.0-alpha03

11 नवंबर, 2020

androidx.datastore:datastore-*:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Preferences में अब डबल वैल्यू इस्तेमाल की जा सकती हैं. यह तब काम आता है, जब आपको फ़्लोट से ज़्यादा सटीक वैल्यू की ज़रूरत हो (I5be8f, b/169471808)

एपीआई में बदलाव

  • डेटास्टोर के लिए Kotlin डिपेंडेंसी बनाई गई, ताकि कंपाइलेशन तेज़ी से हो सके. androidx.datastore:datastore-core में सिर्फ़ Kotlin के मुख्य एपीआई शामिल हैं. वहीं, androidx.datastore:datastore में ऐसे एपीआई शामिल हैं जो Android पर निर्भर हैं. इनमें SharedPreferencesMigration और Context.createDataStore कंस्ट्रक्टर शामिल हैं.(I42d75, b/168512698)
  • Kotlin को तेज़ी से कंपाइल करने के लिए, Preferences DataStore के लिए टारगेट को अलग-अलग किया जा रहा है (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 में म्यूटेशन से बचने के लिए, एक सुरक्षा उपाय जोड़ा गया. म्यूटेशन की वजह से, उन लोगों के लिए डेटास्टोर का इस्तेमाल बंद हो जाता है जो नॉन-प्रोटो/नॉन-प्राथमिकता वाले टाइप के साथ डेटास्टोर का इस्तेमाल करते हैं (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 कोरूटीन और Flow पर आधारित DataStore, दो अलग-अलग तरीकों से लागू किया जाता है:

  • Proto DataStore, जो आपको टाइप किए गए ऑब्जेक्ट सेव करने की सुविधा देता है. ये ऑब्जेक्ट, प्रोटोकॉल बफ़र की मदद से सेव किए जाते हैं
  • Preferences DataStore, जो की-वैल्यू पेयर को सेव करता है

डेटा को एसिंक्रोनस तरीके से, लगातार, और ट्रांज़ैक्शन के हिसाब से सेव किया जाता है. इससे SharedPreferences की ज़्यादातर कमियों को दूर किया जा सकता है.