DataStore

ডেটা অ্যাসিঙ্ক্রোনাস, ধারাবাহিকভাবে এবং ট্রানজ্যাকশনাল পদ্ধতিতে স্টোর করে, SharedPreferences-এর কিছু ত্রুটি কাটিয়ে ওঠে
লেটেস্ট আপডেট স্টেবল রিলিজ রিলিজ ক্যান্ডিডেট বিটা রিলিজ আলফা রিলিজ
১২ অক্টোবর, ২০২৬ ১.২.১ 1.3.0-rc01 - -

ডিপেন্ডেন্সি ঘোষণা করা

DataStore-এ ডিপেন্ডেন্সি যোগ করতে, আপনার প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।

DataStore সিরিয়ালাইজেশনের জন্য বিভিন্ন বিকল্প প্রদান করে , এর মধ্যে থেকে একটি বেছে নিন। এছাড়াও, আপনি যেকোনও ইমপ্লিমেন্টেশনে Android-মুক্ত ডিপেন্ডেন্সি যোগ করতে পারেন।

আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় ইমপ্লিমেন্টেশনের জন্য ডিপেন্ডেন্সি যোগ করুন:

Preferences DataStore

আপনার gradle ফাইলের ডিপেন্ডেন্সি অংশে নিম্নলিখিত লাইন যোগ করুন:

গ্ৰুভি

    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 সাপোর্ট যোগ করতে, নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:

গ্ৰুভি

    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 {
        // 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 সংক্রান্ত সহায়তার জন্য নিম্নলিখিত ঐচ্ছিক ডিপেন্ডেন্সি যোগ করুন:

গ্ৰুভি

    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")
    }
    

কন্টেন্ট সিরিয়ালাইজ করতে, Protocol Buffers বা JSON সিরিয়ালাইজেশনের জন্য ডিপেন্ডেন্সি যোগ করুন।

JSON সিরিয়ালাইজেশন

JSON সিরিয়ালাইজেশন ব্যবহার করতে, আপনার Gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্ৰুভি

    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 ফাইলে নিম্নলিখিত কোড যোগ করুন:

গ্ৰুভি

    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-কে আরও ভালো করে তুলতে সাহায্য করে। আপনি নতুন কোনও সমস্যা খুঁজে পেলে বা এই লাইব্রেরি উন্নত করার জন্য কোনও আইডিয়া থাকলে, আমাদের জানান। নতুন সমস্যা তৈরি করার আগে এই লাইব্রেরিতে আগে থেকে থাকা সমস্যা দেখে নিন। আপনি স্টার বোতামে ক্লিক করে আগে থেকে থাকা কোনও সমস্যার জন্য ভোট দিতে পারেন।

নতুন সমস্যা তৈরি করুন

আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।

ভার্সন ১.৩

ভার্সন 1.3.0-rc01

১২ অক্টোবর, ২০২৬

androidx.datastore:datastore-*:1.3.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.3.0-rc01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • 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

২৯ জুলাই, ২০২৬

androidx.datastore:datastore-*:1.3.0-alpha10 রিলিজ করা হয়েছে। 1.3.0-alpha10 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration. (I26e56, b/514941919)

ভার্সন 1.3.0-alpha09

৬ মে, ২০২৬

androidx.datastore:datastore-*:1.3.0-alpha09 রিলিজ করা হয়েছে। 1.3.0-alpha09 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ReThrowCorruptionHandler সর্বজনীন করুন। (I137bb, b/427722902)
  • সিস্টেম ট্রেসিংয়ের সাথে ট্রেসিং লাইফসাইকেল সামঞ্জস্যপূর্ণ করুন। (Ib391b)

ভার্সন 1.3.0-alpha08

২২ এপ্রিল, ২০২৬

androidx.datastore:datastore-*:1.3.0-alpha08 রিলিজ করা হয়েছে। 1.3.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

  • ওয়েব প্ল্যাটফর্মের জন্য DataStore-এ অরিজিন প্রাইভেট ফাইল সিস্টেম (OPFS)-এর জন্য সহায়তা যোগ করা হয়েছে। এই ইমপ্লিমেন্টেশন WebOpfsStorage নিয়ে আসে এবং এতে অ্যাসিঙ্ক্রোনাস ফাইল I/O, BroadcastChannel API ব্যবহার করে ক্রস-ট্যাব বিজ্ঞপ্তি এবং এক্সক্লুসিভ রাইট অ্যাক্সেসের জন্য নেটিভ Web Locks API-এর মাধ্যমে ডিস্ট্রিবিউটেড লকিংয়ের জন্য আর্কিটেকচারাল সাপোর্ট অন্তর্ভুক্ত থাকে। Id7f5807 b/316376114

API-তে পরিবর্তন

  • ওয়েব এনভায়রনমেন্টে এক্সপ্লিসিট স্টোরেজ টাইপ ম্যানেজমেন্টের জন্য WebLocalStorage ও WebSessionStorage API চালু করা হয়েছে। I35fa259b b/316376114

Version 1.3.0-alpha07

১১ মার্চ, ২০২৬

androidx.datastore:datastore-*:1.3.0-alpha07 রিলিজ করা হয়েছে। 1.3.0-alpha07 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

  • এনক্রিপশন সংক্রান্ত সহায়তা: নতুন androidx.datastore:datastore-tink আর্টিফ্যাক্ট নিয়ে আসা হয়েছে যা Tink লাইব্রেরি ব্যবহার করে আপনার ডেটাস্টোর এনক্রিপ্ট করার জন্য সহায়তা প্রদান করে। এই মডিউল AeadSerializer-এর সাথে পরিচয় করায়, এটি হল একটি নতুন র‍্যাপার ক্লাস যা Serializer<T> প্রয়োগ করে এবং ডেটা এনক্রিপ্ট ও ডিক্রিপ্ট করার জন্য Tink-এর অ্যাসোসিয়েটেড ডেটা (AEAD) সহ যাচাই করা এনক্রিপশন ব্যবহার করে। AeadSerializer JVM এবং Android টার্গেট প্ল্যাটফর্মে ব্যবহার করার জন্য উপলভ্য।
  • নতুন DataStore Builder API: DataStoreFactory-এর স্কেলেবল বিকল্প হিসেবে DataStore.Builder<T> চালু করা হয়েছে। এই নতুন API-এর মাধ্যমে, ব্যবহারকারীরা এখন setCorruptionHandler-এর মাধ্যমে নিজেদের দুর্নীতি সংক্রান্ত যুক্তি প্রদান করতে পারবেন। এছাড়াও, Builder API-এর জন্য CoroutineScope-এর পরিবর্তে CoroutineContext ব্যবহার করে DataStore-কে ইনিশিয়ালাইজ করতে হয়। এটি হল স্ট্রাকচার্ড কনকারেন্সি সংক্রান্ত একটি উন্নতি, কারণ এটি কলকারীদের এক্সিকিউশন আচরণ (যেমন, নির্দিষ্ট ডিসপ্যাচার) নির্ধারণ করতে দেয়। এর ফলে DataStore-কে কলকারীর স্কোপের লাইফসাইকেল অনুপযুক্তভাবে ম্যানেজ করতে বা তার দ্বারা আবদ্ধ থাকতে হয় না।

    মনে রাখবেন: আমরা সব ব্যবহারকারীকে DataStoreFactory থেকে নতুন DataStore.Builder API-তে মাইগ্রেট করার সাজেশন দিই। CoroutineScope-এর পরিবর্তে CoroutineContext-এর প্রয়োজন হওয়ার ফলে, API আরও ভালভাবে স্ট্রাকচার করা কনকারেন্সি প্রয়োগ করে। এটি নিশ্চিত করে যে DataStore অপারেশনগুলি স্বল্প-মেয়াদী UI লাইফসাইকেলের (যেমন, viewModelScope) সাথে আবদ্ধ নয়, যা অকাল বাতিলকরণ এবং সম্ভাব্য ডেটা ক্ষতি প্রতিরোধ করে।

    সতর্কতা: নিশ্চিত করুন যে বিল্ডারকে প্রদান করা CoroutineContext-এ একটি Job আছে এবং এটি অ্যাপ্লিকেশন-স্কোপড। কন্টেক্সট বাতিল করা হলে, DataStore-এর ইন্টার্নাল অপারেশন সময়ের আগেই বন্ধ হয়ে যাবে।

API-তে পরিবর্তন

  • 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

২৫ ফেব্রুয়ারি, ২০২৬

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

২৮ জানুয়ারি, ২০২৬

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

১৪ জানুয়ারি, ২০২৬

androidx.datastore:datastore-*:1.3.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.3.0-alpha04-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • পছন্দ DataStore-এর ডেটা আপডেট করার জন্য ব্যবহার করা যেতে পারে এমন একটি ইউটিলিটি কপি ফাংশন যোগ করা হয়েছে। (I70a18, b/467120382)

সমস্যার সমাধান

  • ওয়েবের জন্য Base64 এনকোডিংয়ের মাধ্যমে UTF-8 স্ট্রিং হ্যান্ডেল করার সুবিধা পরিবর্তন করে স্টোরেজের সময় বাইনারি ডেটা ভুল ফর্ম্যাটে থাকার সমস্যা সমাধান করা হয়েছে। (Ie3178, b/473790107)

ভার্সন 1.3.0-alpha03

১৭ ডিসেম্বর, ২০২৫

androidx.datastore:datastore-*:1.3.0-alpha03 রিলিজ করা হয়েছে। 1.3.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • অস্থায়ী ডেটাস্টোর ফাইলের নাম পরিবর্তন করার সময় হওয়া সমস্যা সমাধান করা হয়েছে। (I94f89, b/203087070)
  • একই সাথে রিড/রাইট করার সময় আপডেট ড্রপ হওয়া আটকানোর জন্য সমস্যার সমাধান করা হয়েছে। DataStore.data-এ নতুন কালেক্টর এবং একই সাথে updateData কলের মধ্যে রেস কন্ডিশন হতে পারে, যার ফলে কালেক্টর নতুন ভ্যালু মিস করতে পারে। (I6a427, b/431787506)

ভার্সন 1.3.0-alpha02

৩ ডিসেম্বর, ২০২৫

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

১৯ নভেম্বর, ২০২৫

androidx.datastore:datastore-*:1.3.0-alpha01 রিলিজ করা হয়েছে। 1.3.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

  • sessionStorage API ব্যবহার করে DataStore-এ KMP ওয়েব সাপোর্ট যোগ করা হয়েছে। এই ফিচার DataStore-কে একটি ব্রাউজার ট্যাবের মধ্যে সাময়িকভাবে ডেটা সেভ করে রাখতে দেয়। (I60fad, b/316376114)

ভার্সন ১.২

ভার্সন 1.2.1

১১ মার্চ, ২০২৬

androidx.datastore:datastore-*:1.2.1 রিলিজ করা হয়েছে। 1.2.1 ভার্সনে এইসব কমিট রয়েছে।

কোনও পরিবর্তন করা হয়নি

  • এই রিলিজে ইনফ্রাস্ট্রাকচার সংক্রান্ত ছোটখাটো সমস্যার সমাধান করা হয়েছে এবং এতে ভার্সন 1.2.0 থেকে কোনও DataStore API বা আচরণগত পরিবর্তন অন্তর্ভুক্ত নেই।

ভার্সন ১.২.০

১৯ নভেম্বর, ২০২৫

androidx.datastore:datastore-*:1.2.0 রিলিজ করা হয়েছে। ভার্সন ১.২.০-এ এইসব কমিট রয়েছে।

1.1.0 রিলিজের পর থেকে হওয়া বড় পরিবর্তন

Java/Guava সহায়তা:

  • GuavaDataStore-এর মাধ্যমে Java ও Guava ListenableFuture ব্যবহারকারীদের জন্য API-কে আরও সহজ করে তুলতে নতুন datastore-guava মডিউল যোগ করা হয়েছে।
  • GuavaDataStore-এর মধ্যে মাল্টিপ্রসেস সাপোর্ট যোগ করা হয়েছে।
  • GuavaDataStore.from-এর জন্য একটি ওভারলোড যোগ করা হয়েছে যা Java Executor (CoroutineContext-এর পরিবর্তে) গ্রহণ করে এবং androidx.core.util.Function ব্যবহার করে।

ডাইরেক্ট বুট সাপোর্ট:

  • সরাসরি বুট মোডে DataStore ব্যবহার করা এখন কাজ করে। DataStoreFactory-এ createInDeviceProtectedStorage() এবং DataStoreDelegate-এ deviceProtectedDataStore()-এর মতো নতুন API, ডিভাইস সুরক্ষিত স্টোরেজের মধ্যে DataStore তৈরি করার অনুমতি দেয়।

স্টোরেজ ও API সংক্রান্ত পরিবর্তন:

  • PreferencesFileSerializer যোগ করা হয়েছে যা FileStorage-এর সাথে ব্যবহার করার জন্য androidx.datastore.core.Serializer প্রয়োগ করে।
  • সাধারণ কোড ব্যবহারের জন্য ReplaceFileCorruptionHandler-এর ডিফল্ট কনস্ট্রাক্টর সংজ্ঞায়িত করা হয়েছে।

সমস্যার সমাধান:

  • R8-এর মাধ্যমে অপ্টিমাইজ করা অ্যাপে DataStore ব্যবহার করার সময় java.lang.UnsatisfiedLinkError সংক্রান্ত সমস্যার সমাধান করা হয়েছে, তবে স্ট্যান্ডার্ড ProGuard ফাইল ব্যবহার করা হয়নি।
  • নির্দিষ্ট IO ডিসপ্যাচারের পরিবর্তে কলিং থ্রেডে (যেমন, প্রধান থ্রেড) GuavaDataStore অপারেশন ভুলভাবে রান করার সমস্যা সমাধান করা হয়েছে।
  • রেস কন্ডিশনের ক্ষেত্রে ডেটা রিড করার জন্য দ্বিতীয়বার চেষ্টা করার সুবিধা যোগ করে স্টার্ট-আপে OkioStorage-এ FileNotFoundException সংক্রান্ত সমস্যার সমাধান করা হয়েছে।

ভার্সন 1.2.0-rc01

৫ নভেম্বর, ২০২৫

androidx.datastore:datastore-*:1.2.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc01-এ এইসব কমিট রয়েছে।

Version 1.2.0-beta01

২২ অক্টোবর, ২০২৫

androidx.datastore:datastore-*:1.2.0-beta01 রিলিজ করা হয়েছে। 1.2.0-beta01 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • 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)
  • নির্দিষ্ট IO ডিসপ্যাচারের পরিবর্তে কলিং থ্রেডে (যেমন, মূল থ্রেড) GuavaDataStore অপারেশন ভুলভাবে রান করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ic91ea,b/441801112)

ভার্সন 1.2.0-alpha02

৭ মে, ২০২৫

androidx.datastore:datastore-*:1.2.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha02-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • GuavaDataStore-এ মাল্টিপ্রসেস সংক্রান্ত সহায়তা যোগ করা হয়েছে। (e0d608a).
  • DataStore থেকে GuavaDataStore তৈরি করার জন্য একটি হেল্পার পদ্ধতি যোগ করা হয়েছে। (9af26f4)
  • Kotlin 2.0-এর সাথে রিলিজ করা প্রোজেক্ট ব্যবহার করার জন্য KGP 2.0.0 বা এর পরের যেকোনও ভার্সন প্রয়োজন। (Idb6b5)
  • সরাসরি বুট করার সময় ব্যবহার করার জন্য DataStore শুরু করতে, আগে থেকে থাকা datastore ওভারলোডের পরিবর্তে একটি ডেলিগেট পদ্ধতি ব্যবহার করুন। (If71b9)

Version 1.2.0-alpha01

২৬ মার্চ, ২০২৫

androidx.datastore:datastore-*:1.2.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha01-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • GuavaDataStore-এর মাধ্যমে Java ও Guava ListenableFuture ব্যবহারকারীদের জন্য API-কে আরও সহজলভ্য করতে datastore-guava মডিউল যোগ করা হয়েছে। (Iadd5e0)
  • DirectBoot মোড চলাকালীন DataStore ব্যবহার করার সুবিধা এখন উপলভ্য। সরাসরি বুট মোডে ব্যবহার করার জন্য ডেটাস্টোর তৈরি করতে হলে, এটি অবশ্যই ডিভাইস সুরক্ষিত স্টোরেজের মধ্যে তৈরি করতে হবে। এটি নিম্নলিখিত নতুন DataStore API-এর মাধ্যমে করা যেতে পারে: DataStoreFactory-এ createInDeviceProtectedStorage() এবং DataStoreDelegate-এ deviceProtectedDataStore()। (Ib90e56)

API-তে পরিবর্তন

  • PreferencesFileSerializer যোগ করা হয়েছে যা FileStorage-এর সাথে ব্যবহার করার জন্য androidx.datastore.core.Serializer ইন্টারফেস প্রয়োগ করে। (I4c71f3)

সমস্যার সমাধান

  • রেস কন্ডিশনের ক্ষেত্রে ডেটা রিড করার জন্য দ্বিতীয়বার চেষ্টা করার সুবিধা যোগ করে স্টার্ট-আপে OkioStorage-এ FileNotFoundException সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I43b3fb, b/337870543)
  • সাধারণ কোড ব্যবহারের জন্য ReplaceFileCorruptionHandler-এর ডিফল্ট কনস্ট্রাক্টরকে সংজ্ঞায়িত করা হয়েছে। (I795b05, b/358138957)

ভার্সন ১.১

ভার্সন 1.1.7

২০ মে, ২০২৫

androidx.datastore:datastore-*:1.1.7 রিলিজ করা হয়েছে। ভার্সন 1.1.7-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • datastore-preferences-core-এর Android আর্টিফ্যাক্টে Proguard সংক্রান্ত নিয়ম না থাকার সমস্যা সমাধান করা হয়েছে। (3f3f6e, b/413078297)

ভার্সন ১.১.৬

৭ মে, ২০২৫

androidx.datastore:datastore-*:1.1.6 রিলিজ করা হয়েছে। ভার্সন 1.1.6-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • 1.1.5 ভার্সনে Gradle মেটাডেটা ভেঙে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। নতুন AGP KMP প্লাগ-ইন DSL-এ একটি সমস্যার কারণে এই সমস্যাটি হয়েছে যা সমস্ত টার্গেট প্ল্যাটফর্মের মেটাডেটা অটোমেটিক অন্তর্ভুক্ত হতে বাধা দেয়। এই সমস্যার কারণে কিছু DataStore Android পদ্ধতি ক্লায়েন্টের বিল্ডে আর দেখা যায় না। এই সমস্যার সমাধান করতে, androidLibrary-এর পরিবর্তে build.gradle-এ পুরনো android DSL ব্যবহার করতে হবে। (7801abf)

ভার্সন 1.1.5

২৩ এপ্রিল, ২০২৫

androidx.datastore:datastore-*:1.1.5 রিলিজ করা হয়েছে। ভার্সন 1.1.5-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • PreferencesDataStore-এ CorruptionException সমস্যা কমানোর জন্য, ডিফল্ট স্টোরেজ OkioStorage থেকে পরিবর্তন করে FileStorage করা হয়েছে। PreferencesFileSerializer চালু করার মাধ্যমে এই পরিবর্তন করা হয়েছে। b/346197747

ভার্সন 1.1.4

২৬ মার্চ, ২০২৫

androidx.datastore:datastore-*:1.1.4 রিলিজ করা হয়েছে। ভার্সন 1.1.4-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • CorruptionException কমিয়ে নির্ভরযোগ্যতা উন্নত করতে ডিফল্ট স্টোরেজ OkioStorage থেকে FileStorage-এ পরিবর্তন করুন। (I71181, b/346197747)

ভার্সন 1.1.3

২৬ ফেব্রুয়ারি, ২০২৫

androidx.datastore:datastore-*:1.1.3 রিলিজ করা হয়েছে। 1.1.3 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • অ্যাপ চালু করার সময় OkioStorage-এ হওয়া FileNotFoundException সংক্রান্ত সমস্যার সমাধান করা হয়েছে। প্রথমবার ফাইলটি পড়ার চেষ্টা ব্যর্থ হলে, দ্বিতীয়বার চেষ্টা করা হবে। প্রথমবার পড়ার সময় অন্য কোনও প্রসেসের মাধ্যমে ফাইলটি তৈরি হওয়ার কারণে রেস কন্ডিশন তৈরি হলে এটি করা হয়। (I43b3f, b/337870543)

ভার্সন 1.1.2

১৫ জানুয়ারি, ২০২৫

androidx.datastore:datastore-*:1.1.2 রিলিজ করা হয়েছে। 1.1.2 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ওয়ার্ম রিড লেটেন্সি (DataStore.data.first()) ৮ গুণ উন্নত করুন। (22b8a40)
  • KMP কমন কোড থেকে ReplaceFileCorruptionHandler তৈরি করা যেতে পারে। (7632e839)

ভার্সন ১.১.১

১ মে, ২০২৪

androidx.datastore:datastore-*:1.1.1 রিলিজ করা হয়েছে। ভার্সন 1.1.1-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • একাধিক DataStore ইনস্ট্যান্স ফাইল লক ব্যাক-অফ করে বিভিন্ন প্রসেস থেকে লেখার চেষ্টা করলে, "রিসোর্স ডেডলক হবে" ত্রুটির ক্ষেত্রে Linux-এ ভুল অ্যালার্ম কমানো হয়েছে।

ভার্সন 1.1.0

১৭ এপ্রিল, ২০২৪

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

৩ এপ্রিল, ২০২৪

androidx.datastore:datastore-*:1.1.0-rc01 রিলিজ করা হয়েছে। 1.1.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • পারফর্ম্যান্স কমে যাওয়ার সমস্যা সমাধান করা হয়েছে, যেখানে নতুন ডেটা পুরনো ডেটার (d64cfb5) মতো হলে updateData কল ডিস্ক রাইটে অপ্টিমাইজ করেনি
  • ইনিশিয়ালাইজেশনের সময় MultiProcess DataStore ইনভ্যালিডেশন মিস করতে পারে এমন রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে। ((b/326141553),(094c2dd))

ভার্সন 1.1.0-beta02

৬ মার্চ, ২০২৪

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

১০ জানুয়ারি, ২০২৪

1.1.0-alpha07 থেকে androidx.datastore:datastore-*:1.1.0-beta01-এ কোনও পরিবর্তন করা হয়নি। ভার্সন 1.1.0-beta01-এ এইসব কমিট রয়েছে।

Version 1.1.0-alpha07

২৯ নভেম্বর, ২০২৩

androidx.datastore:datastore-*:1.1.0-alpha07 রিলিজ করা হয়েছে। 1.1.0-alpha07 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • MultiProcessDataStoreFactory পদ্ধতি আর পরীক্ষামূলক নেই।@ExperimentalMultiProcessDataStore অ্যানোটেশন সম্পূর্ণভাবে সরিয়ে দেওয়া হয়েছে। (Ieee54, I8e607)

সমস্যার সমাধান

  • 1.1.0-alpha07-এ @ExperimentalMultiProcessDataStore অ্যানোটেশন সরানোর সুবিধা রোল-আউট করুন। (I8e607)

ভার্সন 1.1.0-alpha06

১ নভেম্বর ২০২৩

androidx.datastore:datastore-*:1.1.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha06-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • createMultiProcessCoordinator-এর সাথে সামঞ্জস্যপূর্ণ হতে createSingleProcessCoordinator ফ্যাক্টরি পদ্ধতি এখন একটি ফাইল পাথ (String, java.io.File এবং okio.Path) গ্রহণ করে। (I211c8, b/305755935)

ভার্সন 1.1.0-alpha05

৬ সেপ্টেম্বর, ২০২৩

androidx.datastore:datastore-*:1.1.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha05-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Datastore FileStorage এখন সর্বজনীনভাবে উপলভ্য, তাই ক্লায়েন্ট কাস্টম প্যারামিটার প্রদান করতে পারবে। (Icb985)
  • OkioStorage কনস্ট্রাক্টরকে InterProcessCoordinator গ্রহণ করার জন্য পরিবর্তন করা হয়েছে যাতে এটি MultiProcessCoordinator-এর সাথে Android-এ ব্যবহার করা যায়। (Iecea3)

সমস্যার সমাধান

  • MultiProcessCoordinator একই ডিরেক্টরিতে একাধিক ফাইল মনিটর করতে না পারার সমস্যা সমাধান করা।
  • ফাইলের পাথ নরমালাইজ করা না থাকলে, ডুপ্লিকেট ফাইল শনাক্ত করতে না পারার সমস্যা সমাধান করুন।
  • RxDataStore#isDisposed থেকে পাওয়া ভুল ভ্যালু ঠিক করুন।
  • datstore-preferences-core আর্টিফ্যাক্টের জন্য অনুপস্থিত প্রোগার্ড কনফিগারেশন ঠিক করুন।

ভার্সন 1.1.0-alpha04

৫ এপ্রিল, ২০২৩

androidx.datastore:datastore-*:1.1.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha04-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • আপডেট করার পরে DataStore-এর ডেটা ফ্লো পুরনো ভ্যালু এমিট করতে পারে এমন রেস কন্ডিশন এড়াতে ইন্টার্নাল প্রয়োগ উন্নত করুন।

ভার্সন 1.1.0-alpha03

২৪ মার্চ, ২০২৩

androidx.datastore:datastore-*:1.1.0-alpha03 রিলিজ করা হয়েছে।

সমস্যার সমাধান

  • Kotlin Native টার্গেটে (b/274786186, KT-57531) বিল্ড সংক্রান্ত সমস্যার সমাধান করতে Maven আর্টিফ্যাক্ট থেকে নির্ভরতা সংক্রান্ত সীমাবদ্ধতা সরিয়ে দেওয়া হয়েছে।

ভার্সন 1.1.0-alpha02

২২ মার্চ, ২০২৩

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-এ উপলভ্য।

API-তে পরিবর্তন

  • datastore-core ইন্টারফেসে InterProcessCoordinator থেকে StorageConnection যোগ করুন (I555bb)
  • Storage ব্যবহার করার জন্য datastore-core MultiProcessDataStoreFactory-এ API পরিবর্তন করুন। (Iac02f)
  • datastore-multiprocess-এর পাবলিক API-কে datastore-core-এ সরান (I76d7c)
  • datastore-preferences-core (I4b788) থেকে PreferencesSerializer এক্সপোজ করা হয়েছে
  • @JvmDefaultWithCompatibility অ্যানোটেশন যোগ করা হচ্ছে (I8f206)

ভার্সন 1.1.0-alpha01

৯ নভেম্বর, ২০২২

androidx.datastore:datastore-*:1.1.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha01-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • একাধিক প্রসেস জুড়ে DataStore ইনস্ট্যান্সের মধ্যে ডেটা সামঞ্জস্য নিশ্চিত করা হয় এমন মাল্টি-প্রসেস ব্যবহারের ক্ষেত্রে সহায়তা করে। এই ধরনের DataStore ইনস্ট্যান্স তৈরি করতে MultiProcessDataStoreFactory#create যোগ করুন।
  • নতুন স্টোরেজ ইন্টারফেস যা Datastore-এর জন্য অন্তর্নিহিত স্টোরেজ মেকানিজমকে সুইচ আউট করার অনুমতি দেয়। java.io এবং okio-এর জন্য ইমপ্লিমেন্টেশন প্রদান করা হয়েছে। DataStore ফ্যাক্টরিতে নতুন পদ্ধতি আছে যা এই Storage অবজেক্ট গ্রহণ করে।

API-তে পরিবর্তন

  • Storage ব্যবহার করার জন্য datastore-core MultiProcessDataStoreFactory-এ API পরিবর্তন করুন। (Iac02f)
  • datastore-multiprocess-এ থাকা পাবলিক API-কে datastore-core-এ (I76d7c) সরানো
  • datastore-preferences-core (I4b788) থেকে PreferencesSerializer এক্সপোজ করা হয়েছে

ভার্সন 1.0.0

ভার্সন 1.0.0

৪ আগস্ট, ২০২১

androidx.datastore:datastore-*:1.0.0 রিলিজ করা হয়েছে। ভার্সন 1.0.0-এ এইসব কমিট আছে।

1.0.0-এর প্রধান ফিচার

Jetpack DataStore হল একটি ডেটা স্টোরেজ সমাধান যা আপনাকে প্রোটোকল বাফার সহ কী-ভ্যালু পেয়ার বা টাইপ করা অবজেক্ট স্টোর করতে দেয়। DataStore, অ্যাসিঙ্ক্রোনাস, সামঞ্জস্যপূর্ণ এবং ট্রানজ্যাকশনাল উপায়ে ডেটা স্টোর করার জন্য Kotlin coroutines এবং Flow ব্যবহার করে।

ভার্সন 1.0.0-rc02

২১ জুলাই, ২০২১

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

৩০ জুন, ২০২১

androidx.datastore:datastore-*:1.0.0-rc01 রিলিজ করা হয়েছে। 1.0.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • .java ফাইল অসাবধানতাবশত ফাইনাল jar-এ যোগ হয়ে যাওয়ার সমস্যা সমাধান করে (I65d96, b/188985637)

ভার্সন 1.0.0-beta02

১৬ জুন, ২০২১

androidx.datastore:datastore-*:1.0.0-beta02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-beta02-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ClassVerificationFailure সংক্রান্ত সমস্যার সমাধান করুন (b/187450483)

ভার্সন 1.0.0-beta01

২১ এপ্রিল, ২০২১

androidx.datastore:datastore-*:1.0.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-beta01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • শুধুমাত্র Kotlin পদ্ধতির জন্য JVM ওভারলোড সরান (I2adc7)

সমস্যার সমাধান

  • ডেটা স্টোর ডেলিগেটদের কারণে প্রসঙ্গ লিক হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে (Ie96fc, b/184415662)

Version 1.0.0-alpha08

১০ মার্চ, ২০২১

androidx.datastore:datastore-*:1.0.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha08-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • আপনি এখন dataStore এবং preferencesDataStore প্রপার্টি ডেলিগেটে প্রসঙ্গ-নির্ভর মাইগ্রেশন যোগ করতে পারবেন। (I4ef69, b/173726702)
  • আপনি যদি আর ডেটা স্টোর ডেলিগেট বা context.createDataStore ব্যবহার না করেন, তাহলে ফাইলের নাম পেতে সাহায্যকারী ফাংশন যোগ করে (I60f9a)
  • Serializer writeTo এবং readFrom এখন সাসপেন্ড করা হচ্ছে। আপনি যদি সিরিয়ালাইজার প্রয়োগ করে থাকেন, তাহলে আপনাকে সাসপেন্ড ফাংশন হিসেবে আপনার ফাংশন আপডেট করতে হবে। (I1e58e)
  • RxDataStore ব্যবহারকারীদের জন্য প্রপার্টি ডেলিগেট যোগ করা হয়েছে। (Ied768, b/173726702)

সমস্যার সমাধান

  • এক্সপেরিমেন্টাল API-এর (I6aa29, b/174531520) সর্বজনীন ব্যবহারের উপর বিধিনিষেধ আরোপ করা

Version 1.0.0-alpha07

২৪ ফেব্রুয়ারি, ২০২১

androidx.datastore:datastore-*:1.0.0-alpha07 রিলিজ করা হয়েছে। 1.0.0-alpha07 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • 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-কে Singleton হিসেবে ম্যানেজ না করে থাকেন অথবা কোনও ফাইলের জন্য DataStore-এর দুটি ইনস্ট্যান্স একই সাথে অ্যাক্টিভ নেই তা নিশ্চিত না করে থাকেন, তাহলে এখন DataStore-এ রিড বা রাইট করার সময় আপনি ব্যতিক্রম দেখতে পেতে পারেন। আপনার DataStore-কে Singleton হিসেবে ম্যানেজ করে এগুলি ঠিক করা যেতে পারে। (Ib43f4, b/177691248)
  • কলার স্কোপ বাতিল করা হলে বাতিল করার আচরণ ঠিক করুন। (I2c7b3)

ভার্সন 1.0.0-alpha06

১৩ জানুয়ারি, ২০২১

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 তৈরি করার জন্য বিল্ডার থাকে।

API-তে পরিবর্তন

  • 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

২ ডিসেম্বর, ২০২০

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

১৭ নভেম্বর, ২০২০

androidx.datastore:datastore-*:1.0.0-alpha04 রিলিজ করা হয়েছে। 1.0.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • প্যাকেজিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে যার কারণে প্রেফারেন্স ডেটাস্টোর 1.0.0-alpha03-এ নিম্নলিখিত ক্র্যাশ হয়: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences
    • ক্র্যাশ সম্পর্কে প্রথমে এখানে রিপোর্ট করা হয়েছিল: b/173036843
    • (I4712d, b/173036843)

Version 1.0.0-alpha03

১১ নভেম্বর ২০২০

androidx.datastore:datastore-*:1.0.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha03-এ এইসব কমিট আছে।

নতুন ফিচার

  • প্রেফারেন্সে এখন ডবল ভ্যালু কাজ করে (ফ্লোটের চেয়ে বেশি নির্ভুলতার প্রয়োজন হলে এটি কাজে লাগে) (I5be8f, b/169471808)

API-তে পরিবর্তন

  • আরও দ্রুত কম্পাইলেশনের জন্য ডেটাস্টোরের জন্য একটি পিওর কোটলিন ডিপেন্ডেন্সি তৈরি করা হয়েছে। androidx.datastore:datastore-core-এ শুধুমাত্র কোর kotlin API আছে এবং androidx.datastore:datastore-এ Android-এর উপর নির্ভর করে এমন API আছে (যার মধ্যে SharedPreferencesMigration এবং Context.createDataStore কনস্ট্রাক্টর অন্তর্ভুক্ত।)(I42d75, b/168512698)
  • আরও দ্রুত kotlin কম্পাইলেশনের জন্য প্রেফারেন্স ডেটা স্টোরের টার্গেট স্প্লিট করা (Ia3c19)
  • সিরিয়ালাইজারদের এখন ডিফল্ট ভ্যালুর জন্য একটি নতুন প্রপার্টি প্রয়োজন যা ডিস্কে কোনও ডেটা না থাকলে ব্যবহার করা হবে। এর ফলে কাস্টম সিরিয়ালাইজার প্রয়োগ করা সহজ হয়, তাই ব্যবহারকারীদের খালি ইনপুট স্ট্রিম (খালি ইনপুট স্ট্রিম json-এর সাথে পার্স হয় না) নিয়ে বিশেষ কেস তৈরি করতে হয় না।

    • এছাড়াও, writeTo()-কে প্রদান করা আউটপুট স্ট্রিম বন্ধ করা হয়নি তা নিশ্চিত করার জন্য এখন একটি চেক আছে এবং এটি বন্ধ করা হলে, এটি ব্যতিক্রম (I16e29) থ্রো করে
  • SharedPreferencesView ইন্টার্নালের জন্য কনস্ট্রাক্টর তৈরি করা হচ্ছে। টেস্ট করার জন্য এটি প্রথমে সর্বজনীন করা হয়েছিল। পরিবর্তে, টেস্টের জন্য SharedPreferencesMigration তৈরি করে তার সাথে তুলনা করে টেস্ট করা উচিত। (I93891)

সমস্যার সমাধান

  • DataStoreFactory ও PreferenceDataStoreFactory-এর produceFile প্যারামিটার এখন তালিকার শেষ প্যারামিটার, তাই এটি আপনাকে কোটলিন ট্রেলিং ল্যাম্বডা সিনট্যাক্স ব্যবহার করতে দেয়। (Ibe7f1, b/169425442)
  • kotlin-এর জন্য নতুন এক্সপ্লিসিট API সংক্রান্ত প্রয়োজনীয়তা (I5ae1e) মেনে চলা

পরিচিত সমস্যা

  • java.lang.NoClassDefFoundError-এর সাথে Preference Datastore ক্র্যাশ করে। (b/173036843)

ভার্সন 1.0.0-alpha02

১৪ অক্টোবর, ২০২০

androidx.datastore:datastore-core:1.0.0-alpha02 ও androidx.datastore:datastore-preferences:1.0.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha02-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • datastore-core-এ মিউটেশনের বিরুদ্ধে একটি সুরক্ষা যোগ করা হয়েছে। Mutation breaks datastore usage for people using datastore with non-proto/non-preferences types (I6aa84)
  • বর্তমান অবস্থা সহজে ডিবাগ করার জন্য Preferences.kt-তে toString পদ্ধতি যোগ করা হয়েছে (I96006)
  • DataStore.Preferences (I1134d)-এর অপব্যবহার থেকে রক্ষা করার জন্য ব্যতিক্রম যোগ করা হয়েছে
  • অ্যাপ চালু করার সময় ক্র্যাশ হওয়ার কারণ হিসেবে কাজ করা একটি সমস্যার সমাধান করা হয়েছে (I69237, b/168580258)

Version 1.0.0-alpha01

২ সেপ্টেম্বর, ২০২০

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-এর বেশিরভাগ ত্রুটি দূর করা যায়।