ডেটাস্টোর

SharedPreferences-এর কিছু অসুবিধা দূর করে ডেটা অ্যাসিঙ্ক্রোনাসভাবে, ধারাবাহিকভাবে এবং লেনদেনগতভাবে সংরক্ষণ করুন।
সর্বশেষ আপডেট স্থিতিশীল রিলিজ রিলিজ প্রার্থী বিটা রিলিজ আলফা রিলিজ
১১ মার্চ, ২০২৬ ১.২.১ - - ১.৩.০-আলফা০৭

নির্ভরতা ঘোষণা করুন

DataStore-এর উপর নির্ভরতা যোগ করতে হলে, আপনাকে আপনার প্রজেক্টে গুগল মেভেন রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য গুগলের মেভেন রিপোজিটরি পড়ুন।

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

আপনার অ্যাপ বা মডিউলের build.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"
    }
    

কোটলিন

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

কোটলিন

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

ডেটাস্টোর

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

গ্রুভি

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

কোটলিন

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

কোটলিন

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

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

কন্টেন্ট সিরিয়ালাইজ করতে, প্রোটোকল বাফার্স অথবা JSON সিরিয়ালাইজেশন-এর জন্য ডিপেন্ডেন্সি যোগ করুন।

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

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

গ্রুভি

    plugins {
        id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20"
    }

    dependencies {
        implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0"
    }
    

কোটলিন

    plugins {
        id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20"
    }

    dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
    }
    

প্রোটোবাফ সিরিয়ালাইজেশন

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

গ্রুভি

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

কোটলিন

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

প্রতিক্রিয়া

আপনার মতামত জেটপ্যাককে আরও উন্নত করতে সাহায্য করে। আপনি যদি নতুন কোনো সমস্যা খুঁজে পান অথবা এই লাইব্রেরিটি উন্নত করার জন্য কোনো ধারণা থাকে, তবে আমাদের জানান। নতুন কোনো সমস্যা তৈরি করার আগে অনুগ্রহ করে এই লাইব্রেরির বিদ্যমান সমস্যাগুলো দেখে নিন। আপনি তারকা বোতামে ক্লিক করে কোনো বিদ্যমান সমস্যায় আপনার ভোট যোগ করতে পারেন।

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

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

সংস্করণ ১.৩

সংস্করণ 1.3.0-alpha07

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

androidx.datastore:datastore-*:1.3.0-alpha07 প্রকাশিত হয়েছে। সংস্করণ 1.3.0-alpha07-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

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

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

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

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

এপিআই পরিবর্তন

  • DataStore এনক্রিপশন সমর্থনের জন্য নতুন androidx.datastore:datastore-tink আর্টিফ্যাক্টটি চালু করা হয়েছে। ( Ic106d , b/167697691 )

    Tink ব্যবহার করে ডেটা এনক্রিপ্ট করতে, এই ধাপগুলো অনুসরণ করুন:

    1. Tink API ব্যবহার করে একটি কী তৈরি করুন:

      val keysetHandle =
          AndroidKeysetManager.Builder()
              .withSharedPref(applicationContext, "keyset", "keyset_prefs")
              .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM))
              .withMasterKeyUri("android-keystore://master_key")
              .build()
              .keysetHandle
      
    2. একটি বিদ্যমান সিরিয়ালাইজারকে র‍্যাপ করে এমন একটি AeadSerializer তৈরি করুন:

      val aeadSerializer = AeadSerializer(
          // Use tink APIs to create an Aead object to encrypt/decrypt data.
          aead =
              keysetHandle.getPrimitive(
                  RegistryConfiguration.get(),
                  Aead::class.java,
              ),
          // AeadSerializer can wrap an existing serializer.
          wrappedSerializer = ExistingSerializer,
          // Specify a unique name to prevent a ciphertext swapping attack.
          associatedData = "settings.json".encodeToByteArray(),
      )
      
    3. ডেটাস্টোর ইনস্ট্যান্স তৈরি করার সময় আপনার সিরিয়ালাইজারের পরিবর্তে এই aeadSerializer ব্যবহার করুন:

      val dataStore = dataStore(
          fileName = "settings.json",
          serializer = aeadSerializer,
          scope = scope,
      )
      
  • DataStoreFactory এর আধুনিক, স্কেলেবল বিকল্প হিসেবে DataStore.Builder<T> চালু করা হয়েছে। ( I3b110 , b/267785821 , b/400507108 , b/368385681 , b/427722902 , b/370838564 , b/167697691 )

সংস্করণ 1.3.0-alpha06

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

androidx.datastore:datastore-*:1.3.0-alpha06 প্রকাশিত হয়েছে। সংস্করণ 1.3.0-alpha06-এ এই কমিটগুলো রয়েছে।

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

  • DataStore এখন অ্যান্ড্রয়েড টার্গেট প্ল্যাটফর্মে 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-এ এই কমিটগুলো রয়েছে।

এপিআই পরিবর্তন

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

বাগ সংশোধন

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

সংস্করণ 1.3.0-alpha03

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

androidx.datastore:datastore-*:1.3.0-alpha03 প্রকাশিত হয়েছে। সংস্করণ 1.3.0-alpha03-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

  • টেম্প ডেটাস্টোর ফাইলের নাম পরিবর্তনে ব্যর্থতার সমস্যা সমাধান করা হয়েছে। ( I94f89 , b/203087070 )
  • একই সাথে রিড/রাইট করার সময় আপডেট বাদ পড়া রোধ করার সমস্যাটি সমাধান করা হয়েছে। DataStore.data তে একটি নতুন কালেক্টর এবং একই সাথে চলা একটি updateData কলের মধ্যে একটি রেস কন্ডিশন (race condition) ঘটতে পারত, যার ফলে কালেক্টরটি নতুন মানটি সংগ্রহ করতে পারত না। ( 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-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

সংস্করণ ১.২.০

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

androidx.datastore:datastore-*:1.2.0 প্রকাশিত হয়েছে। সংস্করণ 1.2.0-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

১.১.০ রিলিজের পর থেকে বড় পরিবর্তনসমূহ

জাভা/গুয়াভা সমর্থন:

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

সরাসরি বুট সমর্থন:

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

স্টোরেজ এবং এপিআই পরিবর্তন:

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

ত্রুটি সংশোধন:

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

সংস্করণ 1.2.0-rc01

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

androidx.datastore:datastore-*:1.2.0-rc01 প্রকাশিত হয়েছে। সংস্করণ 1.2.0-rc01-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

সংস্করণ 1.2.0-beta01

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

androidx.datastore:datastore-*:1.2.0-beta01 প্রকাশিত হয়েছে। সংস্করণ 1.2.0-beta01-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

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

সংস্করণ 1.2.0-alpha02

৭ মে, ২০২৫

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 ওভারলোডটিকে একটি ডেলিগেট মেথড দিয়ে প্রতিস্থাপন করুন। ( If71b9 )

সংস্করণ 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 এপিআইগুলোর মাধ্যমে এটি করা সম্ভব: DataStoreFactory এর createInDeviceProtectedStorage() এবং DataStoreDelegate এর deviceProtectedDataStore() । ( Ib90e56 )

এপিআই পরিবর্তন

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

বাগ সংশোধন

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

সংস্করণ ১.১

সংস্করণ ১.১.৭

২০ মে, ২০২৫

androidx.datastore:datastore-*:1.1.7 প্রকাশিত হয়েছে। সংস্করণ 1.1.7-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

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

সংস্করণ ১.১.৬

৭ মে, ২০২৫

androidx.datastore:datastore-*:1.1.6 প্রকাশিত হয়েছে। সংস্করণ 1.1.6-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

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

সংস্করণ ১.১.৫

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

androidx.datastore:datastore-*:1.1.5 প্রকাশিত হয়েছে। সংস্করণ 1.1.5-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

  • PreferencesDataStoreCorruptionException সমস্যা প্রশমিত করার জন্য, ডিফল্ট স্টোরেজ 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 সমস্যার সমাধান করা হয়েছে। যদি প্রথমবার ফাইল পড়ার চেষ্টা ব্যর্থ হয়, তবে দ্বিতীয়বার চেষ্টা করা হবে, কারণ প্রথমবার পড়ার সময় অন্য কোনো প্রসেস দ্বারা ফাইলটি তৈরি হওয়ার কারণে একটি রেস কন্ডিশন (race condition) ঘটে থাকতে পারে। ( I43b3f , b/337870543 )

সংস্করণ ১.১.২

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

androidx.datastore:datastore-*:1.1.2 প্রকাশিত হয়েছে। সংস্করণ 1.1.2-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

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

সংস্করণ ১.১.১

১ মে, ২০২৪

androidx.datastore:datastore-*:1.1.1 প্রকাশিত হয়েছে। সংস্করণ 1.1.1-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

  • একটি বিশেষ ক্ষেত্রে, যখন একাধিক DataStore ইনস্ট্যান্স বিভিন্ন প্রসেস থেকে লেখার চেষ্টা করে, তখন ফাইল লকটি ব্যাক অফ করার মাধ্যমে "Resource deadlock would occur" ত্রুটির কারণে সৃষ্ট লিনাক্সের মিথ্যা অ্যালার্ম প্রশমিত করা হয়েছে।

সংস্করণ ১.১.০

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

androidx.datastore:datastore-*:1.1.0 প্রকাশিত হয়েছে। সংস্করণ 1.1.0-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

1.0.0 রিলিজের পর থেকে বড় পরিবর্তনসমূহ

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

  • 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 )
  • নন-অ্যান্ড্রয়েড JVM পরিবেশে updateData চলাকালীন ফাইলের নাম পরিবর্তন ব্যর্থ হওয়ার সমস্যাটি সমাধান করা হয়েছে। ( b/203087070 )
  • DataStore ইনিশিয়ালাইজেশনের পরে CorruptionException হ্যান্ডেল না হওয়ার সমস্যাটি সমাধান করা হয়েছে। ( b/289582516 )

সংস্করণ 1.1.0-beta01

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

androidx.datastore:datastore-*:1.1.0-beta01 1.1.0-alpha07 এর পর থেকে কোনো পরিবর্তন ছাড়াই প্রকাশ করা হয়েছে। সংস্করণ 1.1.0-beta01-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

সংস্করণ 1.1.0-alpha07

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

androidx.datastore:datastore-*:1.1.0-alpha07 প্রকাশিত হয়েছে। সংস্করণ 1.1.0-alpha07-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

  • MultiProcessDataStoreFactory মেথডগুলো আর পরীক্ষামূলক পর্যায়ে নেই। @ExperimentalMultiProcessDataStore অ্যানোটেশনটি সম্পূর্ণরূপে সরিয়ে ফেলা হয়েছে। ( Ieee54 , I8e607 )

বাগ সংশোধন

  • 1.1.0-alpha07 ( I8e607 ) সংস্করণে @ExperimentalMultiProcessDataStore অ্যানোটেশনগুলো অপসারণের প্রক্রিয়াটি চালু করা হলো।

সংস্করণ 1.1.0-alpha06

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

androidx.datastore:datastore-*:1.1.0-alpha06 প্রকাশিত হয়েছে। সংস্করণ 1.1.0-alpha06-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

  • 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-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

  • ডেটাস্টোর FileStorage এখন সর্বসাধারণের জন্য উপলব্ধ, তাই ক্লায়েন্টরা নিজস্ব প্যারামিটার যোগ করতে পারবে। ( Icb985 )
  • OkioStorage কনস্ট্রাক্টর পরিবর্তন করে এতে InterProcessCoordinator অন্তর্ভুক্ত করা হয়েছে, যাতে এটি Android-এ MultiProcessCoordinator সাথে ব্যবহার করা যায়। ( 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 Targets-এর একটি বিল্ড সমস্যা সমাধানের জন্য Maven আর্টিফ্যাক্টগুলো থেকে নির্ভরতার সীমাবদ্ধতা সরানো হয়েছে ( b/274786186 , KT-57531 )।

সংস্করণ 1.1.0-alpha02

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

androidx.datastore:datastore-*:1.1.0-alpha02 প্রকাশিত হয়েছে। সংস্করণ 1.1.0-alpha02-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

দ্রষ্টব্য

অনুগ্রহ করে মনে রাখবেন যে এই সংস্করণে একটি গুরুত্বপূর্ণ অভ্যন্তরীণ রিফ্যাক্টর অন্তর্ভুক্ত রয়েছে, যা একক প্রসেস এবং বহু প্রসেস ডেটাস্টোর ইমপ্লিমেন্টেশনগুলোকে একত্রিত করে। সম্ভাব্য অনাকাঙ্ক্ষিত আচরণগত পরিবর্তনের (যেমন আপডেট নোটিফিকেশনের সময়) দিকে নজর রাখুন। এই ধরনের পরিবর্তন রিপোর্ট করার জন্য আপনি ইস্যু ট্র্যাকার কম্পোনেন্টটি ব্যবহার করতে পারেন।

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

  • এখন আপনি KMM প্রোজেক্টে DataStore ব্যবহার করতে পারবেন। উল্লেখ্য যে, DataStore-এর নন-অ্যান্ড্রয়েড টার্গেটগুলো এখনও পরীক্ষামূলক পর্যায়ে রয়েছে, কিন্তু ডেভেলপারদের জন্য এগুলো পরীক্ষা করা সহজ করতে আমরা সংস্করণগুলো একীভূত করার সিদ্ধান্ত নিয়েছি।
  • মাল্টি-প্রসেস ফিচারগুলো androidx.datastore.multiprocess থেকে androidx.datastore.core এ স্থানান্তর করা হয়েছে।
  • ফাইল অপারেশনের জন্য Storage অবজেক্টসহ DataStore ইনস্ট্যান্স তৈরি করতে androidx.datastore.core.MultiProcessDataStoreFactory তে একটি নতুন ফ্যাক্টরি মেথড যোগ করুন।
  • InterProcessCoordinator একটি নতুন ইন্টারফেস যোগ করা হয়েছে, যা একাধিক DataStore ইনস্ট্যান্সকে বিভিন্ন প্রসেসের মধ্যে যোগাযোগ করতে সাহায্য করে। উল্লেখ্য যে, InterProcessCoordinator এর মাল্টি-প্রসেস ইমপ্লিমেন্টেশন শুধুমাত্র অ্যান্ড্রয়েডে উপলব্ধ।

এপিআই পরিবর্তন

  • datastore-core ইন্টারফেসে ( I555bb ) StorageConnectionInterProcessCoordinator যোগ করুন
  • স্টোরেজ ব্যবহার করার জন্য datastore-core-এর MultiProcessDataStoreFactory এর API পরিবর্তন করুন। ( Iac02f )
  • datastore-multiprocess-এর পাবলিক API-গুলো datastore-core-এ স্থানান্তর করুন ( I76d7c )
  • datastore-preferences-core থেকে PreferencesSerializer উন্মোচিত হয়েছে ( I4b788 )
  • @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 ফ্যাক্টরিগুলোতে নতুন মেথড রয়েছে যা এই স্টোরেজ অবজেক্টটি গ্রহণ করে।

এপিআই পরিবর্তন

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

সংস্করণ ১.০.০

সংস্করণ ১.০.০

৪ আগস্ট, ২০২১

androidx.datastore:datastore-*:1.0.0 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

১.০.০ এর প্রধান বৈশিষ্ট্যসমূহ

জেটপ্যাক ডেটাস্টোর হলো একটি ডেটা স্টোরেজ সলিউশন যা আপনাকে প্রোটোকল বাফারের সাহায্যে কী-ভ্যালু পেয়ার বা টাইপড অবজেক্ট সংরক্ষণ করতে দেয়। ডেটাস্টোর অ্যাসিঙ্ক্রোনাসলি, কনসিস্টেন্টলি এবং ট্রানজ্যাকশনালি ডেটা সংরক্ষণের জন্য কোটলিন কোরাউটিন এবং ফ্লো ব্যবহার করে।

সংস্করণ 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 ফাইল যুক্ত হয়ে যাওয়ার বাগটি সংশোধন করা হয়েছে ( 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-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

  • শুধুমাত্র কোটলিনের জন্য ব্যবহৃত মেথডগুলোর JVM ওভারলোড অপসারণ করুন ( I2adc7 )

বাগ সংশোধন

  • একটি বাগ সংশোধন করা হয়েছে যেখানে ডেটাস্টোর ডেলিগেটগুলির ফলে কনটেক্সট লিক হতে পারতো ( Ie96fc , b/184415662 )

সংস্করণ 1.0.0-alpha08

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

androidx.datastore:datastore-*:1.0.0-alpha08 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha08-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

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

বাগ সংশোধন

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

সংস্করণ 1.0.0-alpha07

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

androidx.datastore:datastore-*:1.0.0-alpha07 প্রকাশিত হয়েছে। সংস্করণ 1.0.0-alpha07-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

এপিআই পরিবর্তন

  • Context.createDataStore এক্সটেনশন ফাংশনটি সরিয়ে দেওয়া হয়েছে এবং এর পরিবর্তে globalDataStore প্রপার্টি ডেলিগেট ব্যবহার করা হচ্ছে। আপনার কোটলিন ফাইলের টপ লেভেলে একবার globalDataStore কল করুন। উদাহরণস্বরূপ:

    val Context.myDataStore by dataStore(...)
    

    এটি আপনার কোটলিন ফাইলের শীর্ষ স্তরে রাখুন যাতে এটির কেবল একটিই ইনস্ট্যান্স থাকে। ( I57215 , b/173726702 )

  • RxDataStore ফাংশনগুলো এখন DataStore-এর এক্সটেনশন ফাংশনের পরিবর্তে RxDataStore ক্লাসে রয়েছে। ( Idccdb , b/177691248 )

  • আপনি যদি EncryptedSharedPreferences (বা সরাসরি SharedPreferences বুট) DataStore-এ মাইগ্রেট করতে চান, তাহলে এখন নতুন SharedPreferencesMigration কনস্ট্রাক্টরের মাধ্যমে তা করতে পারবেন, যা আপনাকে SharedPreferences ইনজেক্ট করার সুযোগ দেয়। ( I8e04e , b/177278510 )

বাগ সংশোধন

  • একই ফাইলের জন্য একাধিক সক্রিয় DataStore থাকলে এখন থেকে DataStore একটি এক্সেপশন (exception) থ্রো করবে। আপনি যদি আপনার DataStore-কে সিঙ্গেলটন (Singleton) হিসেবে ম্যানেজ না করে থাকেন অথবা একটি ফাইলের জন্য DataStore-এর দুটি ইনস্ট্যান্স যাতে একই সাথে সক্রিয় না থাকে তা নিশ্চিত না করে থাকেন, তাহলে এখন থেকে DataStore-এ রিড বা রাইট করার সময় আপনি এক্সেপশন দেখতে পারেন। আপনার DataStore-কে সিঙ্গেলটন হিসেবে ম্যানেজ করার মাধ্যমে এগুলি সমাধান করা যেতে পারে। ( 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 তৈরি করার জন্য একটি বিল্ডার রয়েছে।

এপিআই পরিবর্তন

  • 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-এ এই কমিটগুলো অন্তর্ভুক্ত রয়েছে।

বাগ সংশোধন

  • Preference Datastore 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 )

এপিআই পরিবর্তন

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

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

বাগ সংশোধন

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

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

  • java.lang.NoClassDefFoundError এর কারণে প্রেফারেন্স ডেটাস্টোর ক্র্যাশ করছে। ( 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 দুটি ভিন্ন ইমপ্লিমেন্টেশন প্রদান করে:

  • প্রোটো ডেটাস্টোর, যা আপনাকে টাইপ করা অবজেক্ট সংরক্ষণ করতে দেয় ( প্রোটোকল বাফার দ্বারা সমর্থিত)।
  • প্রেফারেন্সেস ডেটাস্টোর, যা কী-ভ্যালু পেয়ার সংরক্ষণ করে

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