DataStore

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

डिपेंडेंसी के बारे में जानकारी देना

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

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

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

Preferences DataStore

Add the following lines to the dependencies part of your gradle file:

Groovy

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

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

Kotlin

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

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

To add optional RxJava support, add the following dependencies:

Groovy

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

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

Kotlin

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

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

DataStore

Add the following lines to the dependencies part of your gradle file:

Groovy

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

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

Kotlin

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

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

Add the following optional dependencies for RxJava support:

Groovy

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

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

Kotlin

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

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

To serialize content, add dependencies for either Protocol Buffers or JSON serialization.

JSON serialization

To use JSON serialization, add the following to your Gradle file:

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 serialization

To use Protobuf serialization, add the following to your Gradle file:

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-alpha02

03 दिसंबर, 2025

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

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

  • androidx.datastore में js() टारगेट जोड़ें. (I1f62b, b/441511612)
  • GuavaDataStore अपडेट में, फ़र्स्ट इन फ़र्स्ट आउट (FIFO) ऑर्डरिंग लागू करें. (I6fd00,b/451491257)

वर्शन 1.3.0-alpha01

19 नवंबर, 2025

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

नई सुविधाएं

  • DataStore API का इस्तेमाल करके, DataStore में KMP Web के लिए सहायता जोड़ी गई.sessionStorage इस सुविधा की मदद से, DataStore एक ही ब्राउज़र टैब में डेटा को कुछ समय के लिए सेव कर सकता है. (I60fad, b/316376114)

वर्शन 1.2

वर्शन 1.2.0

19 नवंबर, 2025

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

1.1.0 रिलीज़ के बाद के मुख्य बदलाव

Java/Guava के साथ काम करता है:

  • Java और Guava ListenableFuture के उपयोगकर्ताओं के लिए, GuavaDataStore के ज़रिए एपीआई उपलब्ध कराने के लिए, नया datastore-guava मॉड्यूल जोड़ा गया.
  • GuavaDataStore में मल्टीप्रोसेस की सुविधा जोड़ी गई.
  • GuavaDataStore.from के लिए एक ओवरलोड जोड़ा गया है, जो CoroutineContext के बजाय 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 की मदद से ऑप्टिमाइज़ किए गए ऐसे ऐप्लिकेशन में 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 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Java और Guava ListenableFuture के उपयोगकर्ताओं के लिए, GuavaDataStore के ज़रिए एपीआई उपलब्ध कराने के लिए, datastore-guava मॉड्यूल जोड़ा गया. (Iadd5e0)
  • DirectBoot मोड के दौरान DataStore के इस्तेमाल की सुविधा अब उपलब्ध है. डायरेक्ट बूट मोड के दौरान इस्तेमाल किया जाने वाला डेटास्टोर, डिवाइस प्रोटेक्टेड स्टोरेज में बनाया जाना चाहिए. इसके लिए, DataStore के इन नए एपीआई का इस्तेमाल किया जा सकता है: createInDeviceProtectedStorage() में DataStoreFactory और DataStoreDelegate में deviceProtectedDataStore(). (Ib90e56)

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

  • PreferencesFileSerializer जोड़ा गया है, जो FileStorage के साथ इस्तेमाल करने के लिए androidx.datastore.core.Serializer इंटरफ़ेस लागू करता है. (I4c71f3)

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

  • रेस कंडिशन के मामले में, डेटा को पढ़ने की दूसरी कोशिश को जोड़कर, स्टार्टअप के समय OkioStorage में FileNotFoundException समस्या को हल किया गया. (I43b3fb, b/337870543)
  • सामान्य कोड के इस्तेमाल के लिए, ReplaceFileCorruptionHandler के डिफ़ॉल्ट कंस्ट्रक्टर को तय किया गया. (I795b05, b/358138957)

वर्शन 1.1

वर्शन 1.1.7

20 मई, 2025

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

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

  • datastore-preferences-core के Android आर्टफ़ैक्ट में, Proguard के नियमों के मौजूद न होने की समस्या को ठीक किया गया है. (3f3f6e, b/413078297)

वर्शन 1.1.6

7 मई, 2025

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

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

  • उस समस्या को ठीक किया गया है जिसमें Gradle मेटाडेटा, वर्शन 1.1.5 में काम नहीं कर रहा था. यह समस्या, AGP KMP प्लगिन के नए डीएसएल में मौजूद एक बग की वजह से हुई. इस बग की वजह से, सभी टारगेट प्लैटफ़ॉर्म के लिए मेटाडेटा अपने-आप शामिल नहीं हो पा रहा था. इस बग की वजह से, DataStore Android के कुछ तरीके अब क्लाइंट की बिल्ड में नहीं दिखते. इसे ठीक करने के लिए, androidLibrary के बजाय build.gradle में पुराने android डीएसएल का इस्तेमाल करें. (7801abf)

वर्शन 1.1.5

23 अप्रैल, 2025

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

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

  • PreferencesDataStore में CorruptionException से जुड़ी समस्याओं को कम करने के लिए, डिफ़ॉल्ट स्टोरेज को OkioStorage से बदलकर FileStorage कर दिया गया है. यह बदलाव, PreferencesFileSerializer को लागू करके किया गया था. b/346197747

वर्शन 1.1.4

26 मार्च, 2025

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

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

  • डिफ़ॉल्ट स्टोरेज को OkioStorage से FileStorage पर बदलें, ताकि CorruptionException को कम करके विश्वसनीयता को बेहतर बनाया जा सके. (I71181, b/346197747)

वर्शन 1.1.3

26 फ़रवरी, 2025

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

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

  • ऐप्लिकेशन शुरू करते समय, OkioStorage में आने वाली FileNotFoundException समस्या को ठीक किया गया है. अगर फ़ाइल को पढ़ने की शुरुआती कोशिश पूरी नहीं होती है, तो दूसरी कोशिश की जाएगी. ऐसा तब होता है, जब फ़ाइल को शुरुआती प्रोसेस के दौरान किसी दूसरी प्रोसेस से बनाया गया हो. (I43b3f, b/337870543)

वर्शन 1.1.2

15 जनवरी, 2025

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

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

  • वार्म रीड के इंतज़ार के समय (DataStore.data.first()) को आठ गुना कम किया गया है. (22b8a40)
  • ReplaceFileCorruptionHandler को KMP के सामान्य कोड से बनाया जा सकता है. (7632e839)

वर्शन 1.1.1

1 मई, 2024

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

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

  • कुछ मामलों में, "संसाधन डेडलॉक हो जाएगा" गड़बड़ी के बारे में Linux पर मिलने वाली झूठी चेतावनी को कम किया गया है. ऐसा तब होता है, जब कई DataStore इंस्टेंस, फ़ाइल लॉक को बैक ऑफ़ करके अलग-अलग प्रोसेस से लिखने की कोशिश करते हैं.

वर्शन 1.1.0

17 अप्रैल, 2024

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

1.0.0 रिलीज़ के बाद के मुख्य बदलाव

ज़्यादा जानकारी के लिए, कृपया 1.1.0 के ऐल्फ़ा और बीटा वर्शन के रिलीज़ नोट देखें. 1.1.0 में किए गए कुछ मुख्य अपडेट ये हैं:

  • DataStore अब एक ही फ़ाइल को ऐक्सेस करने वाली कई प्रोसेस के साथ काम करता है. साथ ही, यह सभी प्रोसेस के लिए ऑब्ज़र्वेबिलिटी की सुविधा देता है.
  • नए स्टोरेज इंटरफ़ेस की मदद से, यह तय किया जा सकता है कि डेटा मॉडल को कैसे सेव या क्रम से लगाया जाए.
  • अब Kotlin Multiplatform प्रोजेक्ट में DataStore का इस्तेमाल किया जा सकता है.

वर्शन 1.1.0-rc01

3 अप्रैल, 2024

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

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

  • परफ़ॉर्मेंस से जुड़ी समस्या को ठीक किया गया है. इसमें, अगर नया डेटा पुराने डेटा के जैसा ही होता है, तो updateData कॉल, डिस्क राइट पर ऑप्टिमाइज़ नहीं होते थे (d64cfb5)
  • रेस कंडीशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, शुरू करने के दौरान 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 के अलावा अन्य JVM एनवायरमेंट में, updateData के दौरान फ़ाइल का नाम बदलने में आने वाली समस्या को ठीक किया गया है. (b/203087070)
  • उस समस्या को ठीक किया गया है जिसमें DataStore के शुरू होने के बाद CorruptionException को हैंडल नहीं किया जाता था. (b/289582516)

वर्शन 1.1.0-beta01

10 जनवरी, 2024

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

वर्शन 1.1.0-alpha07

29 नवंबर, 2023

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

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

  • MultiProcessDataStoreFactory तरीके अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं हैं.@ExperimentalMultiProcessDataStore एनोटेशन को पूरी तरह से हटा दिया गया है. (Ieee54, I8e607)

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

  • @ExperimentalMultiProcessDataStore एनोटेशन हटाने की सुविधा को 1.1.0-alpha07 पर रोल आउट करें. (I8e607)

वर्शन 1.1.0-alpha06

1 नवंबर, 2023

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

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

  • createSingleProcessCoordinator फ़ैक्ट्री मेथड को अब फ़ाइल पाथ (String, java.io.File, और okio.Path) मिलता है, ताकि यह createMultiProcessCoordinator के साथ काम कर सके. (I211c8, b/305755935)

वर्शन 1.1.0-alpha05

6 सितंबर, 2023

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

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

  • Datastore FileStorage अब सभी के लिए उपलब्ध है, ताकि क्लाइंट कस्टम पैरामीटर दे सकें. (Icb985)
  • OkioStorage कंस्ट्रक्टर में बदलाव किया गया है, ताकि यह InterProcessCoordinator को स्वीकार कर सके. इससे इसे Android पर MultiProcessCoordinator के साथ इस्तेमाल किया जा सकेगा. (Iecea3)

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

  • MultiProcessCoordinator एक ही डायरेक्ट्री में मौजूद कई फ़ाइलों को मॉनिटर नहीं किया जा सकता. इस समस्या को ठीक किया गया.
  • अगर फ़ाइल पाथ सामान्य नहीं हैं, तो डुप्लीकेट फ़ाइलों का पता न चलने की समस्या को ठीक किया गया.
  • RxDataStore#isDisposed से मिली गलत वैल्यू ठीक करें.
  • datstore-preferences-core आर्टफ़ैक्ट के लिए, ProGuard कॉन्फ़िगरेशन मौजूद न होने की समस्या ठीक की गई.

वर्शन 1.1.0-alpha04

5 अप्रैल, 2023

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

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

  • इंटरनल प्रोसेस को बेहतर बनाएं, ताकि रेस कंडीशन से बचा जा सके. रेस कंडीशन में, अपडेट के बाद DataStore का डेटा फ़्लो, पुरानी वैल्यू दिखा सकता है.

वर्शन 1.1.0-alpha03

24 मार्च, 2023

androidx.datastore:datastore-*:1.1.0-alpha03 रिलीज़ हो गया है.

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

  • Kotlin Native Targets (b/274786186, KT-57531) में बिल्ड से जुड़ी समस्या को हल करने के लिए, Maven आर्टफ़ैक्ट से डिपेंडेंसी की पाबंदियां हटा दी गई हैं.

वर्शन 1.1.0-alpha02

22 मार्च, 2023

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

ध्यान दें

ध्यान दें कि इस वर्शन में, एक अहम इंटरनल रीफ़ैक्टर शामिल है. यह सिंगल प्रोसेस और मल्टी प्रोसेस DataStore के लिए लागू किए गए बदलावों को मर्ज करता है. कृपया अनचाहे व्यवहार में होने वाले संभावित बदलावों पर नज़र रखें. उदाहरण के लिए, अपडेट की सूचनाओं का समय. इस तरह के बदलावों की शिकायत करने के लिए, समस्या ट्रैकर कॉम्पोनेंट का इस्तेमाल किया जा सकता है.

नई सुविधाएं

  • अब KMM प्रोजेक्ट में DataStore का इस्तेमाल किया जा सकता है. ध्यान दें कि DataStore के नॉन-Android टारगेट अब भी एक्सपेरिमेंट के तौर पर उपलब्ध हैं. हालांकि, हमने वर्शन को मर्ज करने का फ़ैसला किया है, ताकि डेवलपर इन्हें आसानी से आज़मा सकें.
  • मल्टी प्रोसेस की सुविधाओं को androidx.datastore.multiprocess से androidx.datastore.core में ले जाया गया है.
  • फ़ाइल से जुड़े ऑपरेशन के लिए Storage ऑब्जेक्ट के साथ DataStore इंस्टेंस बनाने के लिए, androidx.datastore.core.MultiProcessDataStoreFactory में नई फ़ैक्ट्री मेथड जोड़ें.
  • एक नया इंटरफ़ेस InterProcessCoordinator जोड़ा गया है. इससे कई DataStore इंस्टेंस, प्रोसेस के बीच कम्यूनिकेट कर पाते हैं. ध्यान दें कि InterProcessCoordinator को एक से ज़्यादा प्रोसेस में लागू करने की सुविधा, सिर्फ़ Android पर उपलब्ध है.

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

  • datastore-core इंटरफ़ेस (I555bb) में StorageConnection को InterProcessCoordinator में जोड़ा गया
  • datastore-core MultiProcessDataStoreFactory में मौजूद एपीआई को बदलकर, Storage का इस्तेमाल करें. (Iac02f)
  • datastore-multiprocess में मौजूद सार्वजनिक एपीआई को datastore-core में ले जाएं (I76d7c)
  • datastore-preferences-core से PreferencesSerializer को दिखाया गया (I4b788)
  • @JvmDefaultWithCompatibility एनोटेशन जोड़ा गया (I8f206)

वर्शन 1.1.0-alpha01

9 नवंबर, 2022

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

नई सुविधाएं

  • एक से ज़्यादा प्रोसेस के इस्तेमाल के उदाहरणों के साथ काम करता है. इनमें यह गारंटी दी जाती है कि सभी प्रोसेस में DataStore इंस्टेंस के बीच डेटा एक जैसा होगा. ऐसे DataStore इंस्टेंस बनाने के लिए, MultiProcessDataStoreFactory#create जोड़ें.
  • नया स्टोरेज इंटरफ़ेस, जिसकी मदद से Datastore के लिए स्टोरेज की सुविधा को बंद किया जा सकता है. java.io और okio के लिए, लागू करने की सुविधाएं दी गई हैं. DataStore फ़ैक्ट्रियों में नए तरीके हैं जो इस स्टोरेज ऑब्जेक्ट को स्वीकार करते हैं.

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

  • datastore-core MultiProcessDataStoreFactory में मौजूद एपीआई को बदलकर, Storage का इस्तेमाल करें. (Iac02f)
  • datastore-multiprocess में मौजूद सार्वजनिक एपीआई को datastore-core में ले जाएं (I76d7c)
  • datastore-preferences-core से PreferencesSerializer को दिखाया गया (I4b788)

वर्शन 1.0.0

वर्शन 1.0.0

4 अगस्त, 2021

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

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

Jetpack DataStore, डेटा स्टोरेज का एक समाधान है. इसकी मदद से, प्रोटोकॉल बफ़र के साथ की-वैल्यू पेयर या टाइप किए गए ऑब्जेक्ट को स्टोर किया जा सकता है. DataStore, Kotlin coroutines और Flow का इस्तेमाल करता है, ताकि डेटा को एसिंक्रोनस तरीके से, लगातार, और ट्रांज़ैक्शन के तौर पर सेव किया जा सके.

वर्शन 1.0.0-rc02

21 जुलाई, 2021

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

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

  • यह साफ़ तौर पर बताएं कि अगर कोई बटन नहीं है, तो SharedPreferencesMigration काम नहीं करता. (Icfa32, b/192824325)
  • उस गड़बड़ी को ठीक किया गया है जिसमें SharedPreferencesMigration को MIGRATE_ALL_KEYS के साथ बनाने पर, अनुरोध की गई कुंजी मौजूद न होने पर एक अपवाद दिखता था. (Ie318a, b/192824325)

वर्शन 1.0.0-rc01

30 जून, 2021

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

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

  • उस गड़बड़ी को ठीक किया गया है जिसमें .java फ़ाइल को गलती से फ़ाइनल जार में जोड़ दिया गया था (I65d96, b/188985637)

वर्शन 1.0.0-beta02

16 जून, 2021

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

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

  • ClassVerificationFailure ठीक करें (b/187450483)

वर्शन 1.0.0-beta01

21 अप्रैल, 2021

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

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

  • सिर्फ़ Kotlin के तरीकों के लिए JVM ओवरलोड हटाएं (I2adc7)

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

  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, datastore डेलिगेट से कॉन्टेक्स्ट लीक हो सकते थे (Ie96fc, b/184415662)

वर्शन 1.0.0-alpha08

10 मार्च, 2021

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

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

  • अब अपने dataStore और preferencesDataStore प्रॉपर्टी डेलिगेट में, कॉन्टेक्स्ट पर निर्भर माइग्रेशन जोड़ा जा सकता है. (I4ef69, b/173726702)
  • अगर अब datastore delegate या context.createDataStore (I60f9a) का इस्तेमाल नहीं किया जा रहा है, तो फ़ाइल का नाम पाने के लिए हेल्पर फ़ंक्शन जोड़ता है
  • Serializer writeTo और readFrom अब निलंबित हो रहे हैं. अगर आपने कोई सीरियललाइज़र लागू किया है, तो आपको अपने फ़ंक्शन को निलंबित करने वाले फ़ंक्शन के तौर पर अपडेट करना होगा. (I1e58e)
  • RxDataStore का इस्तेमाल करने वाले लोगों के लिए, प्रॉपर्टी के डेलिगेट जोड़े गए. (Ied768, b/173726702)

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

  • एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई के सार्वजनिक इस्तेमाल पर पाबंदियां लागू करें (I6aa29, b/174531520)

वर्शन 1.0.0-alpha07

24 फ़रवरी, 2021

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

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

  • Context.createDataStore एक्सटेंशन फ़ंक्शन को हटा दिया गया है. इसकी जगह globalDataStore प्रॉपर्टी डेलिगेट का इस्तेमाल किया जा रहा है. अपनी Kotlin फ़ाइल में, सबसे ऊपर के लेवल पर globalDataStore को एक बार कॉल करें. उदाहरण के लिए:

    val Context.myDataStore by dataStore(...)
    

    इसे अपनी Kotlin फ़ाइल के टॉप लेवल पर रखें, ताकि इसका सिर्फ़ एक इंस्टेंस हो. (I57215, b/173726702)

  • RxDataStore फ़ंक्शन अब DataStore पर एक्सटेंशन फ़ंक्शन के बजाय RxDataStore क्लास पर हैं. (Idccdb, b/177691248)

  • अगर आपको EncryptedSharedPreferences या डायरेक्ट बूट SharedPreferences को DataStore पर माइग्रेट करना है, तो अब ऐसा किया जा सकता है. इसके लिए, SharedPreferencesMigration के नए कंस्ट्रक्टर का इस्तेमाल करें. इससे आपको SharedPreferences को इंजेक्ट करने की अनुमति मिलती है. (I8e04e, b/177278510)

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

  • अगर एक ही फ़ाइल के लिए एक से ज़्यादा DataStore चालू हैं, तो DataStore अब एक अपवाद दिखाएगा. अगर आपने DataStore को सिंगलटन के तौर पर मैनेज नहीं किया है या यह पक्का नहीं किया है कि किसी फ़ाइल के लिए DataStore के दो इंस्टेंस एक साथ चालू न हों, तो अब आपको DataStore से डेटा पढ़ने या उसमें डेटा लिखने के दौरान अपवाद दिख सकते हैं. इन समस्याओं को ठीक करने के लिए, DataStore को सिंगलटन के तौर पर मैनेज करें. (Ib43f4, b/177691248)
  • कॉलर स्कोप रद्द होने पर, रद्द करने से जुड़ी समस्या को ठीक किया गया. (I2c7b3)

वर्शन 1.0.0-alpha06

13 जनवरी, 2021

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

नई सुविधाएं

  • DataStore के लिए RxJava रैपर जोड़े गए. datastore-rxjava2/3 आर्टफ़ैक्ट में, मुख्य DataStore API (RxDataStore, RxDataStoreBuilder, और RxDataMigration) के लिए रैपर होते हैं. datastore-preferences-rxjava2/3 आर्टफ़ैक्ट में, Preferences DataStore बनाने के लिए बिल्डर होता है.

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

  • CorruptionHandler इंटरफ़ेस को छिपाता है. इसे सार्वजनिक करने की कोई वजह नहीं थी, क्योंकि DataStore फ़ैक्ट्री सिर्फ़ ReplaceFileCorruptionHandler को स्वीकार करती है. (I0b3b3, b/176032264)
  • preferencesKey<T>(name: String): Key<T> तरीके को हटा दिया गया है और इसे हर तरह के डेटा के लिए उपलब्ध तरीकों से बदल दिया गया है. उदाहरण के लिए, preferencesKey<Int>("int") अब intPreferencesKey("int") (Ibcfac, b/170311106) है

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

  • DataStoreFactory के दस्तावेज़ में मौजूद समस्या को ठीक किया गया है. इसमें यह जानकारी शामिल नहीं थी कि datastore फ़ाइल, “datastore/” सबडायरेक्ट्री में बनाई जाती है. (Ica222)

वर्शन 1.0.0-alpha05

2 दिसंबर, 2020

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

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

  • डेटास्टोर से एक साथ कई बार लिखने की सुविधा के बारे में बेहतर दस्तावेज़ और अपवाद जोड़ें. (Ia98a2, b/173522155, b/173726702)
  • अब हम Serializer.writeTo() को पास किए गए OutputStream को बंद करने की अनुमति देते हैं. हालांकि, ऐसा करना ज़रूरी नहीं है. (I5c9bf, b/173037611)

वर्शन 1.0.0-alpha04

17 नवंबर, 2020

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

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

  • पैकेजिंग से जुड़ी समस्या को ठीक कर दिया गया है. इस वजह से, Preference Datastore 1.0.0-alpha03 में यह क्रैश हो रहा था: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

वर्शन 1.0.0-alpha03

11 नवंबर, 2020

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

नई सुविधाएं

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

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

  • डेटास्टोर के लिए, प्योर कोटलिन डिपेंडेंसी बनाई गई है, ताकि कंपाइल करने की प्रोसेस को तेज़ किया जा सके. androidx.datastore:datastore-core में सिर्फ़ मुख्य Kotlin API शामिल हैं. वहीं, androidx.datastore:datastore में ऐसे API शामिल हैं जो 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 में म्यूटेशन से बचाने के लिए, एक सुरक्षा सुविधा जोड़ी गई है. म्यूटेशन की वजह से, datastore का इस्तेमाल करने वाले उन लोगों के लिए datastore काम नहीं करता जो non-proto/non-preferences टाइप (I6aa84) के साथ datastore का इस्तेमाल करते हैं
  • Preferences.kt में toString मेथड जोड़ा गया, ताकि मौजूदा स्थिति को आसानी से डीबग किया जा सके (I96006)
  • DataStore.Preferences (I1134d) के गलत इस्तेमाल से बचाने के लिए, एक अपवाद जोड़ा गया
  • ऐसी गड़बड़ी को ठीक किया गया जिसकी वजह से ऐप्लिकेशन शुरू होने पर क्रैश हो जाता था (I69237, b/168580258)

वर्शन 1.0.0-alpha01

2 सितंबर, 2020

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

नई सुविधाएं

Jetpack DataStore, डेटा स्टोरेज का नया और बेहतर समाधान है. इसका मकसद SharedPreferences को बदलना है. DataStore को Kotlin coroutines और Flow पर बनाया गया है. यह दो अलग-अलग तरीके से लागू किया जाता है:

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

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