DataStore

SharedPreferences-এর কিছু ত্রুটি কাটিয়ে উঠে, অ্যাসিঙ্ক্রোনাস, সামঞ্জস্যপূর্ণ এবং ট্রানজ্যাকশনাল উপায়ে ডেটা স্টোর করুন
লেটেস্ট আপডেট স্টেবল রিলিজ রিলিজ ক্যান্ডিডেট বিটা রিলিজ আলফা রিলিজ
২১ অক্টোবর, ২০২৬ ১.৩.০ - - -

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

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

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

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

Preferences DataStore

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

গ্ৰুভি

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

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

Kotlin

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

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

ঐচ্ছিক RxJava সাপোর্ট যোগ করতে, নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:

গ্ৰুভি

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

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

Kotlin

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

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

DataStore

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

গ্ৰুভি

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

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

Kotlin

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

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

RxJava সংক্রান্ত সহায়তার জন্য নিম্নলিখিত ঐচ্ছিক ডিপেন্ডেন্সি যোগ করুন:

গ্ৰুভি

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

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

Kotlin

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

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

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

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

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

গ্ৰুভি

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

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

আরও তথ্যের জন্য Issue Tracker ডকুমেন্টেশন দেখুন।

ভার্সন ১.৩

ভার্সন ১.৩.০

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

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

1.2.0 ভার্সন থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন:

নতুন বৈশিষ্ট্যাদি

  • ওয়েব স্টোরেজ সংক্রান্ত সহায়তা: KMP ওয়েব স্টোরেজ বিকল্প চালু করা হয়েছে, যা ওয়েব টার্গেট জুড়ে নমনীয় ডেটা পারসিস্টেন্স চালু করে:

    • sessionStorage (WebSessionStorage): একটি ব্রাউজার ট্যাবের মধ্যে সাময়িক ডেটা পারসিস্টেন্সের অনুমতি দেয়।
    • localStorage (WebLocalStorage): ক্রস-ট্যাব ইভেন্ট বিজ্ঞপ্তি ও সিঙ্ক্রোনাইজেশন সহ পারসিস্টেন্ট স্টোরেজ চালু করে।
    • Origin Private File System (WebOpfsStorage): OPFS-এর মাধ্যমে ফাইল-সিস্টেম সংক্রান্ত সহায়তা প্রদান করে, যার মধ্যে অ্যাসিঙ্ক্রোনাস ফাইল I/O এবং ক্রস-ট্যাব বিজ্ঞপ্তি অন্তর্ভুক্ত।
  • এনক্রিপশন সাপোর্ট (datastore-tink): নতুন androidx.datastore:datastore-tink আর্টিফ্যাক্ট যোগ করা হয়েছে, যা Tink লাইব্রেরি ব্যবহার করে এনক্রিপশন সাপোর্ট প্রদান করে। এটি AeadSerializer-এর সাথে পরিচয় করিয়ে দেয় যা Authenticated Encryption with Associated Data (AEAD) ব্যবহার করে ডেটা এনক্রিপ্ট ও ডিক্রিপ্ট করে।

  • ট্রেসিং সংক্রান্ত সহায়তা: Android টার্গেট প্ল্যাটফর্মে androidx.tracing-এর জন্য সহায়তা যোগ করা হয়েছে।

  • DataStore.Builder API: DataStoreFactory-এর আধুনিক, স্কেলেবল বিকল্প হিসেবে DataStore.Builder<T> নিয়ে আসা হয়েছে। উন্নত স্ট্রাকচার্ড কনকারেন্সির জন্য CoroutineScope-এর পরিবর্তে CoroutineContext প্রয়োজন।

  • বেসলাইন প্রোফাইল: উন্নত স্টার্টআপ পারফর্ম্যান্সের জন্য datastore-এ বেসলাইন প্রোফাইল যোগ করা হয়েছে।

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

  • DataStore.Builder, ReThrowCorruptionHandler ও InterProcessCoordinator API-কে public-এ আপডেট করা হয়েছে।

ত্রুটি সমাধান ও উন্নতি

  • পার্সিং ব্যর্থতার সময় ডিবাগ করার ক্ষমতা উন্নত করতে CorruptionExceptionটি মেসেজে অন্তর্নিহিত ফাইল পাথ তথ্য যোগ করা হয়েছে।

  • আপডেটের জন্য কঠোর ফার্স্ট-ইন-ফার্স্ট-আউট (FIFO) অর্ডার প্রয়োগ করে GuavaDataStore-এ সম্ভাব্য ডেটা ক্ষতি সংশোধন করা হয়েছে।

Version 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)

Version 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

ভার্সন 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-এর জন্য DataStore-কে CoroutineScope-এর পরিবর্তে CoroutineContext ব্যবহার করে শুরু করতে হয়, যা স্ট্রাকচার্ড কনকারেন্সির জন্য একটি উন্নতি, কারণ এটি কলারদের এক্সিকিউশন আচরণ (যেমন নির্দিষ্ট ডিসপ্যাচার) সংজ্ঞায়িত করতে দেয়, যাতে 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)

Version 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)

Version 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)

ভার্সন ১.২

ভার্সন ১.২.১

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

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

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

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

ভার্সন ১.২.০

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

androidx.datastore:datastore-*:1.2.0 রিলিজ করা হয়েছে। ভার্সন 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-এর মাধ্যমে অপ্টিমাইজ করা হয়েছে কিন্তু getDefaultProguardFile('android-proguard-optimize.txt') ব্যবহার করছে না এমন অ্যাপে DataStore ব্যবহার করার সময় java.lang.UnsatisfiedLinkError সংক্রান্ত সমস্যার সমাধান করুন। (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-তে পরিবর্তন

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

ত্রুটি সমাধান

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

ভার্সন ১.১

ভার্সন ১.১.৭

২০ মে, ২০২৫

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

ত্রুটি সমাধান

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

ভার্সন 1.1.6

৭ মে, ২০২৫

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

ভার্সন ১.১.৪

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

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

ত্রুটি সমাধান

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

ভার্সন ১.১.৩

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

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

ত্রুটি সমাধান

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

ভার্সন ১.১.২

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

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

ত্রুটি সমাধান

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

ভার্সন ১.১.১

১ মে, ২০২৪

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

ত্রুটি সমাধান

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

ভার্সন 1.1.0

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

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

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

আরও তথ্যের জন্য 1.1.0-এর আলফা ও বিটা ভার্সনের রিলিজ নোট পর্যালোচনা করুন। 1.1.0-এর কিছু গুরুত্বপূর্ণ আপডেট হল:

  • DataStore এখন একাধিক প্রসেসকে একই ফাইল অ্যাক্সেস করার অনুমতি দেয়, সাথে প্রসেস জুড়ে পর্যবেক্ষণ করার সুবিধা প্রদান করে।
  • নতুন Storage ইন্টারফেস আপনাকে আপনার ডেটা মডেলগুলি কীভাবে স্টোর বা সিরিয়ালাইজ করবেন তা কাস্টমাইজ করতে দেয়।
  • আপনি এখন 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)

Version 1.1.0-alpha06

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

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

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

  • createSingleProcessCoordinator ফ্যাক্টরি পদ্ধতি এখন createMultiProcessCoordinator-এর সাথে সামঞ্জস্যপূর্ণ হতে একটি ফাইল পাথ (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 গ্রহণ করার জন্য সেট করা হয়েছে যাতে এটি Android-এ MultiProcessCoordinator-এর সাথে ব্যবহার করা যায়। (Iecea3)

ত্রুটি সমাধান

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

Version 1.1.0-alpha04

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

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

ত্রুটি সমাধান

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

Version 1.1.0-alpha03

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

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

ত্রুটি সমাধান

  • Kotlin নেটিভ টার্গেটে (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 ইন্টারফেসে StorageConnection-এ InterProcessCoordinator যোগ করুন (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)
  • SharedPreferencesMigration-এর সাথে MIGRATE_ALL_KEYS তৈরি করার সময় অনুরোধ করা 'কী' এখনও না থাকলে, ব্যতিক্রম দেখানোর বাগটি ঠিক করুন। (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)

ভার্সন 1.0.0-alpha08

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

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

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

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

Version 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)

Version 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)

Version 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)

ভার্সন 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 প্যারামিটার এখন তালিকার শেষ প্যারামিটার, তাই এটি আপনাকে Kotlin ট্রেলিং ল্যাম্বডা সিনট্যাক্স ব্যবহার করতে দেয়। (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-এ মিউটেশনের বিরুদ্ধে একটি সুরক্ষা যোগ করা হয়েছে। মিউটেশন, নন-প্রোটো/নন-প্রেফারেন্স ধরনের (I6aa84) ডেটাস্টোর ব্যবহারকারীদের জন্য ডেটাস্টোরের ব্যবহারকে বাধা দেয়
  • বর্তমান অবস্থা সহজে ডিবাগ করার জন্য Preferences.kt-তে toString পদ্ধতি যোগ করা হয়েছে (I96006)
  • DataStore.Preferences (I1134d)-এর অপব্যবহারের বিরুদ্ধে সুরক্ষা দিতে একটি ব্যতিক্রম যোগ করা হয়েছে
  • অ্যাপ চালু করার সময় ক্র্যাশ হওয়ার কারণ হিসেবে কাজ করা একটি সমস্যার সমাধান করা হয়েছে (I69237, b/168580258)

ভার্সন 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 coroutines ও Flow-এর উপর তৈরি DataStore দুটি আলাদা ইমপ্লিমেন্টেশন প্রদান করে:

  • Proto DataStore, যা আপনাকে টাইপ করা অবজেক্ট (প্রোটোকল বাফার দ্বারা ব্যাক-আপ করা) স্টোর করতে দেয়
  • Preferences DataStore, যা কী-ভ্যালু পেয়ার স্টোর করে

SharedPreferences-এর বেশিরভাগ ত্রুটি কাটিয়ে, ডেটা অ্যাসিঙ্ক্রোনাস, সামঞ্জস্যপূর্ণ এবং ট্রানজ্যাকশনাল উপায়ে স্টোর করা হয়।