DataStore

यह डेटा को एसिंक्रोनस तरीके से, लगातार, और लेन-देन के हिसाब से सेव करता है. इससे SharedPreferences की कुछ कमियों को दूर किया जा सकता है
नया अपडेट स्टेबल वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
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, BroadcastChannel API का इस्तेमाल करके क्रॉस-टैब सूचनाएं, और खास तौर पर लिखने की अनुमति के लिए नेटिव 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: इसे 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 का इस्तेमाल करके डेटा को एन्क्रिप्ट (सुरक्षित) करने के लिए, यह तरीका अपनाएं:

    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 के बजाय 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 और Guava ListenableFuture उपयोगकर्ताओं के लिए, एपीआई को आसानी से इस्तेमाल करने के लिए 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)
  • रेस कंडिशन की समस्या को ठीक किया गया है. इसकी वजह से, 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)
  • माइग्रेशन के दौरान 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

वर्शन 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 की ज़्यादातर कमियों को दूर किया जा सकता है.