DataStore

داده‌ها را به‌صورت ناهمگام، سازگار، و تراکنشی ذخیره می‌کند و بر برخی‌از معایب SharedPreferences غلبه می‌کند
جدیدترین به‌روزرسانی نسخه پایدار نامزد انتشار انتشار نسخه بتا نسخه آلفا
‫۲۱ اکتبر ۲۰۲۶ ۱.۳.۰ - - -

اعلام وابستگی‌ها

برای افزودن وابستگی به DataStore، باید مخزن Google Maven را به پروژه‌تان اضافه کنید. برای اطلاعات بیشتر، مخزن Maven در Google را بخوانید.

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

کاتلین

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

کاتلین

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

کاتلین

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

کاتلین

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

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

برای سریال‌سازی محتوا، وابستگی‌هایی را برای سریال‌سازی «بافرهای پروتکل» یا 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")
    }
    

سریال‌سازی 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")
                }
            }
        }
    }
    

کاتلین

    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 منتشر شده است. نسخه ۱.۳.۰ حاوی این ارسال‌ها است.

تغییرات مهم از نسخه ۱.۲.۰:

ویژگی‌های جدید

  • پشتیبانی از فضای ذخیره‌سازی وب: گزینه‌های فضای ذخیره‌سازی وب KMP معرفی شد که امکان پایداری داده‌های انعطاف‌پذیر را در اهداف وب فراهم می‌کند:

    • sessionStorage (WebSessionStorage): امکان پایداری موقت داده‌ها را در یک برگه مرورگر فراهم می‌کند.
    • localStorage (WebLocalStorage): فضای ذخیره‌سازی دائمی را با اعلان‌های رویداد بین‌برگه‌ای و همگام‌سازی فعال می‌کند.
    • سیستم فایل خصوصی مبدأ (WebOpfsStorage): پشتیبانی از سیستم فایل را ازطریق OPFS ارائه می‌دهد، که دارای ورودی/خروجی فایل ناهمگام و اعلان‌های بین‌برگه‌ای است.
  • پشتیبانی از رمزگذاری (datastore-tink): مصنوع جدید androidx.datastore:datastore-tink اضافه شد که بااستفاده از کتابخانه Tink از رمزگذاری پشتیبانی می‌کند. این codelab‏ AeadSerializer را برای رمزگذاری و رمزگشایی کردن داده‌ها بااستفاده از «رمزگذاری اصالت‌سنجی‌شده با داده‌های مرتبط» (AEAD) معرفی می‌کند.

  • پشتیبانی از ردیابی: پشتیبانی از androidx.tracing در پلاتفرم هدف Android اضافه شد.

  • میانای برنامه‌سازی کاربردی DataStore.Builder: DataStore.Builder<T> به‌عنوان جایگزین مدرن و مقیاس‌پذیر برای DataStoreFactory معرفی شد. برای هم‌روندی ساختاریافته بهبودیافته، به‌جای CoroutineScope به CoroutineContext نیاز دارد.

  • نمایه‌های مبنا: نمایه‌های مبنا به datastore اضافه شد تا عملکرد راه‌اندازی بهبود یابد.

تغییرات میانای برنامه‌سازی کاربردی

  • میاناهای برنامه‌سازی کاربردی DataStore.Builder، ReThrowCorruptionHandler، و InterProcessCoordinator به public به‌روزرسانی شده‌اند.

رفع اشکال‌ها و بهبودها

  • اطلاعات مسیر فایل اصلی به پیام‌های CorruptionException اضافه شد تا اشکال‌زدایی درطول خرابی‌های تجزیه بهبود یابد.

  • با اعمال ترتیب سخت‌گیرانه «خروج به‌ترتیب ورود» (FIFO) برای به‌روزرسانی‌ها، ازدست رفتن احتمالی داده‌ها در GuavaDataStore اصلاح شد.

نسخه 1.3.0-rc01

‫۱۲ اکتبر ۲۰۲۶

‫androidx.datastore:datastore-*:1.3.0-rc01 منتشر شده است. نسخه 1.3.0-rc01 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • استفاده از WindowCompat#enableEdgeToEdge(Window) به‌جای EdgeToEdge#enable() (Ibff3e)

رفع اشکال‌ها

  • وابستگی androidx.lifecycle:lifecycle-runtime به نسخه ۲.۱۰.۰ به‌روز شد. این نسخه برای اجرای بررسی‌های lint زمان اجرای چرخه حیات بسته‌بندی‌شده با AGP نسخه 9.5.0-alpha04 یا جدیدتر لازم است. (I99bfd, b/556807521)

نسخه 1.3.0-alpha11

‫۹ سپتامبر ۲۰۲۶

‫androidx.datastore:datastore-*:1.3.0-alpha11 منتشر شده است. نسخه 1.3.0-alpha11 حاوی این موارد ثبت است.

رفع اشکال‌ها

  • مسیر فایل اصلی در پیام‌های CorruptionException که درطول خطاهای تجزیه اولویت DataStore ایجاد می‌شوند گنجانده نشده است. (Ia9e8f)

نسخه 1.3.0-alpha10

‫۲۹ ژوئیه ۲۰۲۶

‫androidx.datastore:datastore-*:1.3.0-alpha10 منتشر شده است. نسخه 1.3.0-alpha10 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

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

نسخه 1.3.0-alpha09

‫۶ مه ۲۰۲۶

‫androidx.datastore:datastore-*:1.3.0-alpha09 منتشر شده است. نسخه 1.3.0-alpha09 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ReThrowCorruptionHandler را عمومی کنید. (I137bb، b/427722902)
  • چرخه حیات ردیابی را با ردیابی سیستم سازگار کنید. (Ib391b)

نسخه 1.3.0-alpha08

‫۲۲ آوریل ۲۰۲۶

‫androidx.datastore:datastore-*:1.3.0-alpha08 منتشر شده است. نسخه 1.3.0-alpha08 حاوی این ارسال‌ها است.

ویژگی‌های جدید

  • پشتیبانی از Origin Private File System (OPFS) در DataStore برای پلاتفرم‌های وب اضافه شد. این پیاده‌سازی WebOpfsStorage را معرفی می‌کند و شامل پشتیبانی معماری برای ورودی/خروجی فایل ناهمگام، اعلان‌های بین‌برگه‌ای بااستفاده از BroadcastChannel API، و قفل کردن توزیع‌شده ازطریق Web Locks API بومی برای دسترسی نوشتن انحصاری است. Id7f5807 b/316376114

تغییرات میانای برنامه‌سازی کاربردی

  • میاناهای برنامه‌سازی کاربردی WebLocalStorage و WebSessionStorage را برای مدیریت صریح نوع فضای ذخیره‌سازی در محیط‌های وب معرفی کردیم. 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> را پیاده‌سازی می‌کند و از «رمزگذاری اصالت‌سنجی‌شده با داده‌های مرتبط» (AEAD) در Tink برای رمزگذاری و رمزگشایی داده‌ها استفاده می‌کند. AeadSerializer برای استفاده در پلاتفرم‌های هدف JVM و Android دردسترس است.
  • DataStore Builder API جدید: DataStore.Builder<T> به‌عنوان جایگزین مقیاس‌پذیر برای DataStoreFactory معرفی شد. با این میانای برنامه‌سازی کاربردی جدید، کاربران اکنون می‌توانند منطق خرابی خود را ازطریق setCorruptionHandler ارائه دهند. علاوه‌براین، Builder API نیاز دارد که DataStore بااستفاده از CoroutineContext به‌جای CoroutineScope مقداردهی اولیه شود، که این بهبودی برای همزمانی ساختاریافته است، زیرا به فراخوانندگان اجازه می‌دهد رفتار اجرا (مانند Dispatchers خاص) را بدون مجبور کردن DataStore به مدیریت نامناسب یا محدود شدن توسط چرخه عمر محدوده فراخواننده تعریف کنند.

    توجه: توصیه می‌کنیم همه کاربران از DataStoreFactory به میاناهای برنامه‌سازی کاربردی جدید DataStore.Builder منتقل شوند. با الزام CoroutineContext به‌جای CoroutineScope، میانای برنامه‌سازی کاربردی همزمانی ساختاریافته بهتری را اعمال می‌کند. این کار تضمین می‌کند که عملیات DataStore به چرخه‌های حیات کوتاه UI (مثلاً viewModelScope) محدود نمی‌شوند و از لغو زودهنگام و ازدست رفتن احتمالی داده‌ها جلوگیری می‌کند.

    هشدار: مطمئن شوید که CoroutineContext ارائه‌شده به Builder دارای Job باشد و در محدوده برنامه باشد. اگر زمینه لغو شود، عملیات داخلی DataStore پیش‌از موعد خاتمه می‌یابد.

تغییرات میانای برنامه‌سازی کاربردی

  • خروجی ساختاریافته جدید androidx.datastore:datastore-tink برای پشتیبانی از رمزگذاری DataStore معرفی شد. (Ic106d، b/167697691)

    برای رمزگذاری داده‌ها بااستفاده از Tink، این مراحل را دنبال کنید:

    1. ایجاد کلید بااستفاده از Tink APIs:

      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. هنگام ایجاد نمونه datastore، از این aeadSerializer به‌جای serializer خود استفاده کنید:

      val dataStore = dataStore(
          fileName = "settings.json",
          serializer = aeadSerializer,
          scope = scope,
      )
      
  • ‫DataStore.Builder<T> به‌عنوان جایگزین مدرن و مقیاس‌پذیر برای DataStoreFactory معرفی شد. (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 در پلاتفرم هدف Android پشتیبانی می‌کند. می‌توانید با ارائه نمونه androidx.tracing.Tracer به تابع DataStoreFactory.createWithTracing()، یک DataStore با ردیابی ایجاد کنید. (I71bc2، b/427722902)

نسخه 1.3.0-alpha05

‫۲۸ ژانویه ۲۰۲۶

‫androidx.datastore:datastore-*:1.3.0-alpha05 منتشر شده است. نسخه 1.3.0-alpha05 حاوی این ارسال‌ها است.

ویژگی‌های جدید

  • نمایه‌های مبنا به پایگاه داده اضافه شد. (3916245,b/469127532).
  • Implement WASM/JS support in DataStore via localStorage. این امر با فعال کردن اعلان‌های رویداد و همگام‌سازی بین‌برگه‌ای، مزیت متمایزی نسبت‌به پیاده‌سازی 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 رخ دهد و باعث شود جمع‌آورنده مقدار جدید را ازدست بدهد. (I6a427، b/431787506)

نسخه 1.3.0-alpha02

‫۳ دسامبر ۲۰۲۵

‫androidx.datastore:datastore-*:1.3.0-alpha02 منتشر شده است. نسخه 1.3.0-alpha02 حاوی این موارد ثبت است.

رفع اشکال‌ها

  • افزودن هدف js()‎ به androidx.datastore. (I1f62b، b/441511612)
  • ترتیب «خروج به‌ترتیب ورود» را در به‌روزرسانی‌های GuavaDataStore اعمال کنید. (I6fd00،‏ b/451491257)

نسخه 1.3.0-alpha01

‫۱۹ نوامبر ۲۰۲۵

‫androidx.datastore:datastore-*:1.3.0-alpha01 منتشر شده است. نسخه 1.3.0-alpha01 حاوی این ارسال‌ها است.

ویژگی‌های جدید

  • پشتیبانی از KMP Web در DataStore بااستفاده از sessionStorage API اضافه شد. این ویژگی به DataStore اجازه می‌دهد داده‌ها را به‌طور موقت در یک برگه مرورگر حفظ کند. (I60fad، b/316376114)

نسخه ۱.۲

نسخه ۱.۲.۱

‫۱۱ مارس ۲۰۲۶

‫androidx.datastore:datastore-*:1.2.1 منتشر شده است. نسخه ۱.۲.۱ حاوی این ارسال‌ها است.

بدون تغییر

  • این نسخهٔ پخش شامل رفع اشکال‌های جزئی زیرساخت است و هیچ تغییر رفتاری یا میانای برنامه‌سازی کاربردی DataStore نسبت‌به نسخه ۱.۲.۰ ندارد.

نسخه ۱.۲.۰

‫۱۹ نوامبر ۲۰۲۵

‫androidx.datastore:datastore-*:1.2.0 منتشر شده است. نسخه ۱.۲.۰ حاوی این ثبت‌ها است.

تغییرات عمده از زمان انتشار نسخه ۱.۱.۰

پشتیبانی Java/Guava:

  • ماژول جدید datastore-guava را برای نمایش میاناهای برنامه‌سازی کاربردی سازگار با کاربران Java و Guava ListenableFuture ازطریق GuavaDataStore اضافه کردیم.
  • پشتیبانی چندفرایندی در GuavaDataStore اضافه شد.
  • یک سربارگذاری برای GuavaDataStore.from اضافه شد که Executor جاوا (به‌جای CoroutineContext) را می‌پذیرد و از androidx.core.util.Function استفاده می‌کند.

پشتیبانی از راه‌اندازی مستقیم:

  • اکنون استفاده از DataStore درحین حالت «راه‌اندازی مستقیم» پشتیبانی می‌شود. میاناهای برنامه‌سازی کاربردی جدیدی مثل createInDeviceProtectedStorage() در DataStoreFactory و deviceProtectedDataStore() در DataStoreDelegate امکان ایجاد DataStore را در فضای ذخیره‌سازی «محافظت‌شده دستگاه» فراهم می‌کنند.

تغییرات فضای ذخیره‌سازی و میانای برنامه‌سازی کاربردی:

  • ‫PreferencesFileSerializer اضافه شد که androidx.datastore.core.Serializer را برای استفاده با FileStorage پیاده‌سازی می‌کند.
  • سازنده پیش‌فرض برای ReplaceFileCorruptionHandler را برای استفاده از کد مشترک تعریف کرد.

رفع اشکال‌ها:

  • java.lang.UnsatisfiedLinkError هنگام استفاده از DataStore در برنامه‌ای که با R8 بهینه‌سازی شده است اما از فایل ProGuard استاندارد استفاده نمی‌کند برطرف شد.
  • مشکلی که باعث می‌شد عملیات GuavaDataStore به‌جای توزیع‌کننده IO مشخص‌شده، به‌اشتباه در رشته تماس (مثلاً رشته اصلی) اجرا شود برطرف شد.
  • مشکل FileNotFoundException در OkioStorage هنگام راه‌اندازی با افزودن تلاش دوم برای خواندن داده‌ها درصورت وجود شرایط رقابتی برطرف شد.

نسخه 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)
  • استفاده از androidx.core.util.Function در GuavaDataStore. (I71eae، b/448563999)
  • یک سربارگذاری برای GuavaDataStore.from اضافه کنید که به‌جای CoroutineContext، یک Executor دریافت کند. (I989fa، b/448563183)

رفع اشکال‌ها

  • رفع java.lang.UnsatisfiedLinkError هنگام استفاده از DataStore در برنامه‌ای که با R8 بهینه‌سازی شده است، اما از getDefaultProguardFile('android-proguard-optimize.txt') استفاده نمی‌کند. (I27d0d، b/434696293)
  • مشکلی که باعث می‌شد عملیات GuavaDataStore به‌جای توزیع‌کننده ورودی/خروجی مشخص‌شده، به‌اشتباه در رشته فراخوان (مثلاً رشته اصلی) اجرا شود برطرف شد. (Ic91ea،‏ b/441801112)

نسخه 1.2.0-alpha02

۷ مه ۲۰۲۵

‫androidx.datastore:datastore-*:1.2.0-alpha02 منتشر شده است. نسخه 1.2.0-alpha02 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • پشتیبانی چندفرایندی در GuavaDataStore اضافه شده است. (e0d608a).
  • روش کمکی برای ایجاد GuavaDataStore از DataStore اضافه شد. (9af26f4)
  • پروژه‌های منتشرشده با Kotlin 2.0 برای استفاده به KGP 2.0.0 یا جدیدتر نیاز دارند. (Idb6b5)
  • سرریز datastore موجود را با روش نماینده جایگزین کنید تا DataStore را برای استفاده درحین راه‌اندازی مستقیم مقداردهی اولیه کند. (If71b9)

نسخه 1.2.0-alpha01

‫۲۶ مارس ۲۰۲۵

‫androidx.datastore:datastore-*:1.2.0-alpha01 منتشر شده است. نسخه 1.2.0-alpha01 حاوی این commitها است.

ویژگی‌های جدید

  • ماژول datastore-guava برای نمایش میاناهای برنامه‌سازی کاربردی سازگار با کاربران Java و Guava ListenableFuture ازطریق GuavaDataStore اضافه شد. (Iadd5e0)
  • اکنون استفاده از DataStore درحین حالت DirectBoot پشتیبانی می‌شود. برای ایجاد یک پایگاه داده که درطول حالت راه‌اندازی مستقیم استفاده شود، باید آن را در فضای ذخیره‌سازی «محافظت‌شده دستگاه» ایجاد کنید. این کار را می‌توان با میاناهای برنامه‌سازی کاربردی جدید DataStore زیر انجام داد: createInDeviceProtectedStorage() در DataStoreFactory و deviceProtectedDataStore() در DataStoreDelegate. (Ib90e56)

تغییرات میانای برنامه‌سازی کاربردی

  • ‫PreferencesFileSerializer اضافه شد که میانای androidx.datastore.core.Serializer را برای استفاده با FileStorage پیاده‌سازی می‌کند. (I4c71f3)

رفع اشکال‌ها

  • مشکل FileNotFoundException در OkioStorage هنگام راه‌اندازی با افزودن تلاش دوم برای خواندن داده‌ها در شرایط رقابتی برطرف شد. (I43b3fb، b/337870543)
  • سازنده پیش‌فرض برای ReplaceFileCorruptionHandler برای استفاده از کد مشترک تعریف شده است. (I795b05،‏ b/358138957)

نسخه ۱.۱

نسخه ۱.۱.۷

‫۲۰ مه ۲۰۲۵

‫androidx.datastore:datastore-*:1.1.7 منتشر شده است. نسخه ۱.۱.۷ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • مشکل نبود قوانین Proguard در مصنوع Android datastore-preferences-core برطرف شد. (3f3f6e، b/413078297)

نسخه ۱.۱.۶

۷ مه ۲۰۲۵

‫androidx.datastore:datastore-*:1.1.6 منتشر شده است. نسخه ۱.۱.۶ حاوی این ارسال‌ها است.

رفع اشکال‌ها

  • مشکلی که در آن فراداده Gradle در نسخه 1.1.5 خراب بود برطرف شد. این مشکل به‌دلیل وجود اشکالی در DSL افزونه AGP KMP جدید بود که مانع از گنجاندن خودکار فراداده برای همه پلاتفرم‌های هدف می‌شد. این اشکال باعث می‌شود برخی‌از روش‌های DataStore Android دیگر در نسخه‌های ساخت مشتریان قابل‌مشاهده نباشد. این اصلاح شامل استفاده از DSL قدیمی‌تر android در build.gradle به‌جای androidLibrary است. (7801abf)

نسخه ۱.۱.۵

‫۲۳ آوریل ۲۰۲۵

‫androidx.datastore:datastore-*:1.1.5 منتشر شده است. نسخه ۱.۱.۵ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • برای کاهش مشکلات CorruptionException در PreferencesDataStore، «فضای ذخیره‌سازی» پیش‌فرض از OkioStorage به FileStorage تغییر کرده است. این تغییر با معرفی PreferencesFileSerializer اعمال شد. b/346197747

نسخه ۱.۱.۴

‫۲۶ مارس ۲۰۲۵

‫androidx.datastore:datastore-*:1.1.4 منتشر شده است. نسخه ۱.۱.۴ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • فضای ذخیره‌سازی پیش‌فرض را از OkioStorage به FileStorage تغییر دهید تا با کاهش CorruptionException، قابلیت اطمینان بهبود یابد. (I71181، b/346197747)

نسخه ۱.۱.۳

‫۲۶ فوریه ۲۰۲۵

‫androidx.datastore:datastore-*:1.1.3 منتشر شده است. نسخه ۱.۱.۳ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • مشکل FileNotFoundException در OkioStorage که هنگام راه‌اندازی برنامه پیش می‌آمد برطرف شد. اگر تلاش اولیه برای خواندن فایل ناموفق باشد، تلاش دومی انجام خواهد شد تا درصورت وقوع شرایط رقابتی به‌دلیل ایجاد فایل توسط فرایند دیگری درطول خواندن اولیه، مشکل برطرف شود. (I43b3f، b/337870543)

نسخه ۱.۱.۲

‫۱۵ ژانویه ۲۰۲۵

‫androidx.datastore:datastore-*:1.1.2 منتشر شده است. نسخه ۱.۱.۲ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • تأخیر خواندن گرم (DataStore.data.first()) را ۸ برابر بهبود دهید. (22b8a40)
  • ReplaceFileCorruptionHandler را می‌توان از کد مشترک KMP ایجاد کرد. (7632e839)

نسخه ۱.۱.۱

‫۱ مه ۲۰۲۴

‫androidx.datastore:datastore-*:1.1.1 منتشر شده است. نسخه ۱.۱.۱ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • هشدار کاذب Linux درباره خطای «بن‌بست منبع رخ خواهد داد» در یک مورد خاص که چند نمونه DataStore تلاش می‌کنند از فرایندهای مختلف با عقب‌نشینی از قفل فایل بنویسند، کاهش یافت.

نسخه ۱.۱.۰

‫۱۷ آوریل ۲۰۲۴

‫androidx.datastore:datastore-*:1.1.0 منتشر شده است. نسخه ۱.۱.۰ حاوی این ثبت‌ها است.

تغییرات عمده از زمان انتشار نسخه ۱.۰.۰

برای اطلاعات بیشتر، لطفاً یادداشت‌های انتشار نسخه‌های آلفا و بتای 1.1.0 را مرور کنید. برخی‌از به‌روزرسانی‌های اصلی در 1.1.0 عبارتند از:

  • DataStore اکنون از چندین فرایند که به یک فایل دسترسی دارند پشتیبانی می‌کند و از قابلیت مشاهده در سراسر فرایندها پشتیبانی می‌کند.
  • میانای جدید «فضای ذخیره‌سازی» به شما امکان می‌دهد نحوه ذخیره یا سریال‌سازی مدل‌های داده‌تان را سفارشی‌سازی کنید.
  • اکنون می‌توانید از DataStore در پروژه‌های Kotlin Multiplatform استفاده کنید.

نسخه 1.1.0-rc01

‫۳ آوریل ۲۰۲۴

‫androidx.datastore:datastore-*:1.1.0-rc01 منتشر شده است. نسخه 1.1.0-rc01 حاوی این commitها است.

رفع اشکال‌ها

  • افت عملکردی که در آن اگر داده‌های جدید با داده‌های قدیمی یکسان بود، فراخوانی‌های updateData در نوشتن‌های دیسک بهینه‌سازی نمی‌شد برطرف شد (d64cfb5)
  • مشکل شرایط رقابتی که در آن 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)
  • DataStore را طوری ساختیم که اگر حذف SharedPreferences درطول انتقال ناموفق بود، دیگر IOExceptions را نشان ندهد. (b/195553816)
  • مشکلی که باعث می‌شد تغییر نام فایل درطول updateData در محیط‌های JVM غیرAndroid ناموفق باشد برطرف شد. (b/203087070)
  • مشکلی که باعث می‌شد CorruptionException پس‌از مقداردهی اولیه DataStore مدیریت نشود برطرف شد. (b/289582516)

نسخه 1.1.0-beta01

‫۱۰ ژانویه ۲۰۲۴

androidx.datastore:datastore-*:1.1.0-beta01 بدون هیچ تغییری از 1.1.0-alpha07 منتشر شده است. نسخه 1.1.0-beta01 حاوی این commit-ها است.

نسخه 1.1.0-alpha07

۲۹ نوامبر ۲۰۲۳

‫androidx.datastore:datastore-*:1.1.0-alpha07 منتشر شده است. نسخه 1.1.0-alpha07 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • روش‌های MultiProcessDataStoreFactory دیگر آزمایشی نیستند.حاشیه‌نویسی @ExperimentalMultiProcessDataStore به‌طور کامل برداشته شده است. (Ieee54،‏ I8e607)

رفع اشکال‌ها

  • Rollout the removal of @ExperimentalMultiProcessDataStore annotations to 1.1.0-alpha07. (I8e607)

نسخه 1.1.0-alpha06

۱ نوامبر ۲۰۲۳

‫androidx.datastore:datastore-*:1.1.0-alpha06 منتشر شده است. نسخه 1.1.0-alpha06 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • روش کارخانه createSingleProcessCoordinator اکنون مسیر فایل (String، java.io.File، و okio.Path) را دریافت می‌کند تا با createMultiProcessCoordinator سازگار باشد. (I211c8، b/305755935)

نسخه 1.1.0-alpha05

‫۶ سپتامبر ۲۰۲۳

‫androidx.datastore:datastore-*:1.1.0-alpha05 منتشر شده است. نسخه 1.1.0-alpha05 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • Datastore FileStorage اکنون به‌طور عمومی دردسترس است، بنابراین مشتریان می‌توانند پارامترهای سفارشی ارائه دهند. (Icb985)
  • سازنده OkioStorage تغییر کرد تا InterProcessCoordinator را بپذیرد تا بتوان از آن در Android با MultiProcessCoordinator استفاده کرد. (Iecea3)

رفع اشکال‌ها

  • رفع مشکل MultiProcessCoordinator که نمی‌تواند چندین فایل را در یک دایرکتوری نظارت کند.
  • اگر مسیرهای فایل نرمال‌سازی نشده باشد، مشکل عدم شناسایی فایل‌های تکراری برطرف می‌شود.
  • مقادیر اشتباه برگردانده‌شده از RxDataStore#isDisposed را اصلاح کنید.
  • پیکربندی proguard ناموجود برای مصنوع datstore-preferences-core را برطرف کنید.

نسخه 1.1.0-alpha04

۵ آوریل ۲۰۲۳

‫androidx.datastore:datastore-*:1.1.0-alpha04 منتشر شده است. نسخه 1.1.0-alpha04 حاوی این commit-ها است.

رفع اشکال‌ها

  • پیاده‌سازی داخلی را بهبود دهید تا از شرایط مسابقه که در آن جریان داده DataStore ممکن است پس‌از به‌روزرسانی مقدار قدیمی‌تری را منتشر کند جلوگیری شود.

نسخه 1.1.0-alpha03

۲۴ مارس ۲۰۲۳

‫androidx.datastore:datastore-*:1.1.0-alpha03 منتشر شده است.

رفع اشکال‌ها

  • محدودیت‌های وابستگی از خروجی‌های ساختاریافته Maven برداشته شد تا مشکل ساخت در Kotlin Native Targets (b/274786186،‏ KT-57531) برطرف شود.

نسخه 1.1.0-alpha02

۲۲ مارس ۲۰۲۳

‫androidx.datastore:datastore-*:1.1.0-alpha02 منتشر شده است. نسخه 1.1.0-alpha02 حاوی این commit-ها است.

توجه

توجه داشته باشید که این نسخه شامل یک بازسازی کد داخلی مهم است که پیاده‌سازی‌های DataStore تک‌فرایندی و چندفرایندی را ادغام می‌کند. لطفاً مراقب تغییرات رفتاری ناخواسته احتمالی (مثلاً زمان‌بندی اعلان‌های به‌روزرسانی) باشید. می‌توانید از مؤلفه ردیاب مشکل برای گزارش کردن چنین تغییراتی استفاده کنید.

ویژگی‌های جدید

  • اکنون می‌توانید از DataStore در پروژه‌های KMM استفاده کنید. توجه داشته باشید که هدف‌های غیرAndroid مربوط به DataStore هنوز آزمایشی هستند اما تصمیم گرفتیم نسخه‌ها را ادغام کنیم تا توسعه‌دهندگان راحت‌تر بتوانند آن‌ها را امتحان کنند.
  • ویژگی‌های چندفرایندی از androidx.datastore.multiprocess به androidx.datastore.core منتقل شده‌اند.
  • روش کارخانه جدیدی در androidx.datastore.core.MultiProcessDataStoreFactory اضافه کنید تا نمونه‌های DataStore با اشیای Storage برای عملیات فایل ایجاد شود.
  • افزودن میانای جدید InterProcessCoordinator که به چندین نمونه DataStore کمک می‌کند در سراسر فرایندها ارتباط برقرار کنند. توجه داشته باشید که پیاده‌سازی چندفرایندی InterProcessCoordinator فقط در Android دردسترس است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫InterProcessCoordinator به StorageConnection در میانای datastore-core اضافه شد (I555bb)
  • تغییر میاناهای برنامه‌سازی کاربردی در datastore-core MultiProcessDataStoreFactory برای استفاده از «فضای ذخیره‌سازی». (Iac02f)
  • انتقال میاناهای برنامه‌سازی کاربردی عمومی در datastore-multiprocess به datastore-core‏ (I76d7c)
  • Exposed PreferencesSerializer from datastore-preferences-core (I4b788)
  • درحال افزودن حاشیه‌نویسی @JvmDefaultWithCompatibility (I8f206)

نسخه 1.1.0-alpha01

‫۹ نوامبر ۲۰۲۲

‫androidx.datastore:datastore-*:1.1.0-alpha01 منتشر شده است. نسخه 1.1.0-alpha01 حاوی این commitها است.

ویژگی‌های جدید

  • پشتیبانی از موارد استفاده چندفرایندی که در آن سازگاری داده‌ها بین نمونه‌های DataStore در سراسر فرایندها تضمین می‌شود. MultiProcessDataStoreFactory#create را اضافه کنید تا چنین نمونه‌های DataStore ایجاد شود.
  • میانای جدید «فضای ذخیره‌سازی» که امکان تعویض سازوکار فضای ذخیره‌سازی زیربنایی را برای Datastore فراهم می‌کند. پیاده‌سازی‌های java.io و okio ارائه شده است. کارخانه‌های DataStore روش‌های جدیدی دارند که این شیء «فضای ذخیره‌سازی» را می‌پذیرند.

تغییرات میانای برنامه‌سازی کاربردی

  • تغییر میاناهای برنامه‌سازی کاربردی در datastore-core MultiProcessDataStoreFactory برای استفاده از «فضای ذخیره‌سازی». (Iac02f)
  • انتقال میاناهای برنامه‌سازی کاربردی عمومی در datastore-multiprocess به datastore-core‏ (I76d7c)
  • Exposed PreferencesSerializer from datastore-preferences-core (I4b788)

نسخه ۱.۰.۰

نسخه ۱.۰.۰

‫۴ اوت ۲۰۲۱

‫androidx.datastore:datastore-*:1.0.0 منتشر شده است. نسخه ۱.۰.۰ حاوی این ارسال‌ها است.

ویژگی‌های اصلی نسخه ۱.۰.۰

Jetpack DataStore یک راه‌حل ذخیره‌سازی داده است که به شما امکان می‌دهد جفت‌های کلید-مقدار یا اشیاء تایپ‌شده را با میان‌گیری پروتکل ذخیره کنید. DataStore از روال‌های هم‌زمان Kotlin و Flow برای ذخیره داده‌ها به‌صورت ناهمگام، سازگار، و تراکنشی استفاده می‌کند.

نسخه 1.0.0-rc02

‫۲۱ ژوئیه ۲۰۲۱

‫androidx.datastore:datastore-*:1.0.0-rc02 منتشر شده است. نسخه 1.0.0-rc02 حاوی این commit-ها است.

رفع اشکال‌ها

  • Clarify that SharedPreferencesMigration does not run if there are no keys. (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 حاوی این commitها است.

رفع اشکال‌ها

  • اشکالی را برطرف می‌کند که در آن فایل java .به‌طور ناخواسته به jar نهایی اضافه می‌شد (I65d96، b/188985637)

نسخه 1.0.0-beta02

‫۱۶ ژوئن ۲۰۲۱

‫androidx.datastore:datastore-*:1.0.0-beta02 منتشر شده است. نسخه 1.0.0-beta02 شامل این commit-ها است.

رفع اشکال‌ها

  • رفع اشکال ClassVerificationFailure (b/187450483)

نسخه 1.0.0-beta01

‫۲۱ آوریل ۲۰۲۱

‫androidx.datastore:datastore-*:1.0.0-beta01 منتشر شده است. نسخه 1.0.0-beta01 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • Remove JVM overloads for kotlin only methods (I2adc7)

رفع اشکال‌ها

  • اشکالی که در آن نمایندگان datastore می‌توانستند منجر به نشت زمینه‌ها شوند برطرف شد (Ie96fc، b/184415662)

نسخه 1.0.0-alpha08

‫۱۰ مارس ۲۰۲۱

‫androidx.datastore:datastore-*:1.0.0-alpha08 منتشر شده است. نسخه 1.0.0-alpha08 شامل این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • اکنون می‌توانید انتقالی را که به بافت بستگی دارد به نماینده دارایی dataStore و preferencesDataStore خود اضافه کنید. (I4ef69، b/173726702)
  • توابع کمکی را برای دریافت نام فایل اضافه می‌کند، اگر دیگر از نماینده datastore یا context.createDataStore استفاده نمی‌کنید (I60f9a)
  • ‫Serializer writeTo و readFrom اکنون تعلیق می‌شوند. اگر «سریال‌ساز» را پیاده‌سازی کرده‌اید، باید توابع خود را به‌روز کنید تا به توابع تعلیق تبدیل شوند. (I1e58e)
  • نمایندگان ویژگی برای کاربران RxDataStore اضافه شد. (Ied768، b/173726702)

رفع اشکال‌ها

نسخه 1.0.0-alpha07

‫۲۴ فوریه ۲۰۲۱

‫androidx.datastore:datastore-*:1.0.0-alpha07 منتشر شده است. نسخه 1.0.0-alpha07 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • تابع افزونه Context.createDataStore برداشته شده است و نماینده ویژگی globalDataStore جایگزین آن شده است. globalDataStore را یک‌بار در سطح بالا در فایل kotlin خود فراخوانی کنید. برای مثال:

    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)
  • Fix cancellation behavior when caller scope is cancelled. (I2c7b3)

نسخه 1.0.0-alpha06

‫۱۳ ژانویه ۲۰۲۱

‫androidx.datastore:datastore-*:1.0.0-alpha06 منتشر شده است. نسخه 1.0.0-alpha06 حاوی این commit-ها است.

ویژگی‌های جدید

  • پوشاننده‌های RxJava برای DataStore اضافه شد. مصنوعات datastore-rxjava2/3 حاوی پوشاننده‌های میاناهای برنامه‌سازی کاربردی DataStore اصلی (RxDataStore، RxDataStoreBuilder، و RxDataMigration) هستند. مصنوعات datastore-preferences-rxjava2/3 حاوی سازنده‌ای برای ساختن Preferences DataStore هستند.

تغییرات میانای برنامه‌سازی کاربردی

  • پنهان کردن میانای CorruptionHandler. دلیلی برای عمومی بودن آن وجود نداشت زیرا کارخانه DataStore فقط ReplaceFileCorruptionHandler را می‌پذیرد. (I0b3b3، b/176032264)
  • روش preferencesKey<T>(name: String): Key<T> برداشته شده است و با روش‌های مختص هر نوع پشتیبانی‌شده جایگزین شده است، برای مثال preferencesKey<Int>("int") اکنون intPreferencesKey("int") است (Ibcfac، b/170311106)

رفع اشکال‌ها

  • اسناد DataStoreFactory را که این واقعیت را که فایل datastore در زیرفهرست راهنمای «datastore/» ایجاد می‌شود حذف کرده بود اصلاح می‌کند. (Ica222)

نسخه 1.0.0-alpha05

‫۲ دسامبر ۲۰۲۰ (۱۲ آذر ۱۳۹۹)

‫androidx.datastore:datastore-*:1.0.0-alpha05 منتشر شده است. نسخه 1.0.0-alpha05 شامل این commit-ها است.

رفع اشکال‌ها

  • افزودن مستندات و استثناهای بهتر درباره نوشتن هم‌زمان از انباره‌های داده. (Ia98a2، b/173522155، b/173726702)
  • اکنون اجازه می‌دهیم (اما الزامی نمی‌کنیم) OutputStream ارسال‌شده به Serializer.writeTo() بسته شود. (I5c9bf، b/173037611)

نسخه 1.0.0-alpha04

‫۱۷ نوامبر ۲۰۲۰

‫androidx.datastore:datastore-*:1.0.0-alpha04 منتشر شده است. نسخه 1.0.0-alpha04 شامل این commit-ها است.

رفع اشکال‌ها

  • مشکل بسته‌بندی که باعث ازکارافتادن زیر در Preference Datastore 1.0.0-alpha03 می‌شد برطرف شد: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

نسخه 1.0.0-alpha03

‫۱۱ نوامبر ۲۰۲۰

‫androidx.datastore:datastore-*:1.0.0-alpha03 منتشر شده است. نسخه 1.0.0-alpha03 حاوی این commit-ها است.

ویژگی‌های جدید

  • «اولویت‌ها» اکنون از مقادیر دوگانه پشتیبانی می‌کند (که اگر به دقت بیشتری نسبت به مقادیر اعشاری نیاز داشته باشید مفید است) (I5be8f، b/169471808)

تغییرات میانای برنامه‌سازی کاربردی

  • وابستگی kotlin خالص برای datastore ایجاد شد تا کامپایل سریع‌تر انجام شود. androidx.datastore:datastore-core contains the core kotlin only APIs and androidx.datastore:datastore contains the APIs that depend on android (including the SharedPreferencesMigration and the Context.createDataStore constructor.)(I42d75, b/168512698)
  • Splitting out targets for preferences data store for faster kotlin compilation (Ia3c19)
  • اکنون سریال‌سازها به ویژگی جدیدی برای مقدار پیش‌فرض نیاز دارند که درصورت نبود داده در دیسک استفاده خواهد شد. این کار پیاده‌سازی سریال‌سازهای سفارشی را آسان‌تر می‌کند تا کاربران مجبور نباشند جریان‌های ورودی خالی را به‌طور ویژه مدیریت کنند (جریان‌های ورودی خالی با json تجزیه نمی‌شوند).

    • همچنین اکنون بررسی‌ای وجود دارد تا تأیید کند که جریان خروجی ارائه‌شده به writeTo()‎ بسته نشده است، و اگر بسته شده باشد، استثناهایی را ایجاد می‌کند (I16e29)
  • Making the constructor for SharedPreferencesView internal. در ابتدا برای آزمایش عمومی بود. آزمایش‌ها باید SharedPreferencesMigration را بسازند و درمقابل آن آزمایش کنند. (I93891)

رفع اشکال‌ها

  • پارامتر produceFile در DataStoreFactory و PreferenceDataStoreFactory اکنون آخرین پارامتر در فهرست است، بنابراین به شما امکان می‌دهد از نحو لامبدا دنباله‌دار kotlin استفاده کنید. (Ibe7f1، b/169425442)
  • Following the new explicit API requirements for kotlin (I5ae1e)

مشکلات شناخته‌شده

  • Preference Datastore با 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 حاوی این commit-ها است.

رفع اشکال‌ها

  • یک محافظ دربرابر جهش در datastore-core اضافه شد. جهش باعث می‌شود استفاده از datastore برای افرادی که از datastore با انواع غیرپروتو/غیرترجیحی استفاده می‌کنند مختل شود (I6aa84)
  • Added a toString method to Preferences.kt to make current state easy to debug (I96006)
  • Added an exception to safeguard against misuse of 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 حاوی این commit-ها است.

ویژگی‌های جدید

Jetpack DataStore راهکار جدید و بهبودیافته‌ای برای ذخیره‌سازی داده است که هدف آن جایگزینی SharedPreferences است. DataStore که بر روال‌های مشترک Kotlin و Flow ساخته شده است، دو پیاده‌سازی مختلف ارائه می‌دهد:

  • Proto DataStore که به شما امکان می‌دهد اشیای تایپ‌شده را ذخیره کنید (با پشتیبانی میان‌گیرهای پروتکل)
  • Preferences DataStore که جفت‌های کلید-مقدار را ذخیره می‌کند

داده‌ها به‌صورت ناهمگام، سازگار، و تراکنشی ذخیره می‌شوند و بر اکثر معایب SharedPreferences غلبه می‌کنند.