DataStore
| جدیدترین بهروزرسانی | نسخه پایدار | نامزد انتشار | انتشار نسخه بتا | نسخه آلفا |
|---|---|---|---|---|
| ۱۲ اکتبر ۲۰۲۶ | ۱.۲.۱ | 1.3.0-rc01 | - | - |
اعلام وابستگیها
برای افزودن وابستگی به DataStore، باید مخزن Google Maven را به پروژهتان اضافه کنید. برای اطلاعات بیشتر، مخزن Maven در Google را بخوانید.
DataStore گزینههای مختلفی برای سریالسازی ارائه میدهد، یکی از آنها را انتخاب کنید. همچنین میتوانید وابستگیهای بدون Android را به هریک از پیادهسازیها اضافه کنید.
وابستگیهای پیادهسازی موردنیازتان را در فایل build.gradle
برای برنامه یا مدول خود اضافه کنید:
Preferences DataStore
خطوط زیر را به بخش وابستگیهای فایل gradle خود اضافه کنید:
شیک
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.1" }
کاتلین
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") }
DataStore
خطوط زیر را به بخش وابستگیهای فایل gradle خود اضافه کنید:
شیک
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.1" }
کاتلین
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") }
سریالسازی 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 را ببینید.
نسخه ۱.۳
نسخه 1.3.0-rc01
۱۲ اکتبر ۲۰۲۶
androidx.datastore:datastore-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 حاوی این موارد ثبت است.
تغییرات میانای برنامهسازی کاربردی
- بهجای
EdgeToEdge#enable()ازWindowCompat#enableEdgeToEdge(Window)استفاده کنید (Ibff3e)
رفع اشکالها
-
androidx.lifecycle:lifecycle-runtimeپیشنیاز به نسخه ۲.۱۰.۰ بهروزرسانی شد. این نسخه برای اجرای بررسیهای لینت زمان اجرای چرخه حیات دستهای با AGP نسخه ۹.۵.۰-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را معرفی میکند و شامل پشتیبانی معماری برای ورودی/خروجی فایل ناهمزمان، اعلانهای بین برگهای بااستفاده ازBroadcastChannelAPI، و قفلگذاری توزیعشده ازطریق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 دردسترس است. DataStoreBuilder API جدید:DataStore.Builder<T>بهعنوان جایگزین مقیاسپذیر برایDataStoreFactoryمعرفی شد. با این میانای برنامهسازی کاربردی جدید، کاربران اکنون میتوانند منطق خرابی خود را ازطریقsetCorruptionHandlerارائه دهند. علاوهبراین،BuilderAPI ملزم میکند کهDataStoreبااستفاده ازCoroutineContextبهجایCoroutineScopeمقداردهی اولیه شود، که این بهبود برای همزمانسازی ساختاری است، زیرا به فراخوانندگان اجازه میدهد عملکرد اجرا (مانند «توزیعکنندگان» خاص) را بدون اجبارDataStoreبرای مدیریت نامناسب یا محدود شدن توسط چرخه حیات محدوده فراخواننده تعریف کنند.توجه: توصیه میکنیم همه کاربران از
DataStoreFactoryبه میاناهای برنامهسازی کاربردی جدیدDataStore.Builderمنتقل شوند. با الزامCoroutineContextبهجایCoroutineScope، میانای برنامهسازی کاربردی همزمانی ساختاریافته بهتری را اعمال میکند. این کار تضمین میکند که عملیات DataStore به چرخههای عمر رابط کاربری کوتاهمدت (مثلاًviewModelScope) محدود نشود و از لغو زودهنگام و ازدست رفتن احتمالی دادهها جلوگیری میکند.هشدار: مطمئن شوید که
CoroutineContextارائهشده به Builder دارایJobباشد و در محدوده برنامه باشد. اگر زمینه لغو شود، عملیات داخلیDataStoreپیشاز موعد خاتمه مییابد.
تغییرات میانای برنامهسازی کاربردی
مصنوع جدید
androidx.datastore:datastore-tinkبرای پشتیبانی از رمزگذاریDataStoreمعرفی شد. (Ic106d، b/167697691)برای رمزگذاری دادهها بااستفاده از Tink، این مراحل را دنبال کنید:
بااستفاده از میاناهای برنامهسازی کاربردی Tink، کلید ایجاد کنید:
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleAeadSerializerایجاد کنید که سریالساز موجود را دربرگیرد: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(), )هنگام ایجاد نمونه datastore، از این
aeadSerializerبهجای سریالسازتان استفاده کنید: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 حاوی این ارسالها است.
ویژگیهای جدید
- نمایههای مبنا به datastore اضافه شد. (3916245،b/469127532).
- پیادهسازی پشتیبانی WASM/JS در DataStore ازطریق
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) - ترتیب FIFO را در
GuavaDataStoreبهروزرسانی اعمال کنید. (I6fd00,b/451491257)
نسخه 1.3.0-alpha01
۱۹ نوامبر ۲۰۲۵
androidx.datastore:datastore-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این ارسالها است.
ویژگیهای جدید
- بااستفاده از
sessionStorageAPI، پشتیبانی از KMP Web درDataStoreاضافه شد. این ویژگی بهDataStoreاجازه میدهد دادهها را بهطور موقت در یک برگه مرورگر حفظ کند. (I60fad، b/316376114)
نسخه ۱.۲
نسخه ۱.۲.۱
۱۱ مارس ۲۰۲۶
androidx.datastore:datastore-*:1.2.1 منتشر شد. نسخه ۱.۲.۱ حاوی این ارسالها است.
بدون تغییر
- این نسخه رفع اشکالهای جزئی زیرساخت را معرفی میکند و شامل هیچگونه تغییرات رفتار یا DataStore API از نسخه ۱.۲.۰ نیست.
نسخه ۱.۲.۰
۱۹ نوامبر ۲۰۲۵
androidx.datastore:datastore-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ حاوی این ثبتها است.
تغییرات عمده از زمان انتشار نسخه ۱.۱.۰
پشتیبانی Java/Guava:
- ماژول جدید
datastore-guavaرا برای نمایش میاناهای برنامهسازی کاربردی سازگار با کاربران Java و GuavaListenableFutureازطریق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بهاشتباه در رشته فراخوان (برای نمونه، رشته اصلی) بهجای توزیعکننده ورودی/خروجی مشخصشده اجرا شود. - مشکل
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، یک «اجراکننده» را دریافت کند. (I989fa، b/448563183)
رفع اشکالها
- رفع
java.lang.UnsatisfiedLinkErrorهنگام استفاده ازDataStoreدر برنامهای که با R8 بهینهسازی شده است، اما ازgetDefaultProguardFile('android-proguard-optimize.txt')استفاده نمیکند. (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). - یک روش کمکی برای ایجاد
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 شامل این تعهدات است.
ویژگیهای جدید
-
datastore-guavaواحد اضافه شد تا میاناهای برنامهسازی کاربردی سازگار با کاربران Java و GuavaListenableFutureرا ازطریق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خراب بود برطرف شد. این مشکل بهدلیل اشکالی در افزایه جدید AGP KMP DSL ایجاد شده بود که از اضافه شدن خودکار فراداده برای همه پلاتفرمهای هدف جلوگیری میکرد. این اشکال باعث میشود برخیاز روشهای DataStore Android دیگر در ساختهای مشتریان قابلمشاهده نباشد. اصلاح شامل استفاده ازandroidDSL قدیمیتر درbuild.gradleبهجایandroidLibraryاست. (7801abf)
نسخه ۱.۱.۵
۲۳ آوریل ۲۰۲۵
androidx.datastore:datastore-*:1.1.5 منتشر شد. نسخه ۱.۱.۵ شامل این تعهدات است.
رفع اشکالها
- برای کاهش مشکلات
CorruptionExceptionدرPreferencesDataStore، «فضای ذخیرهسازی» پیشفرض ازOkioStorageبهFileStorageتغییر کرده است. این تغییر با معرفیPreferencesFileSerializerاعمال شد. b/346197747
نسخه ۱.۱.۴
۲۶ مارس ۲۰۲۵
androidx.datastore:datastore-*:1.1.4 منتشر شد. نسخه ۱.۱.۴ شامل این تعهدها است.
رفع اشکالها
- برای بهبود قابلیت اطمینان با کاهش
CorruptionException، فضای ذخیرهسازی پیشفرض را ازOkioStorageبهFileStorageتغییر دهید. (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 منتشر شد. نسخه ۱.۱.۰ شامل این تعهدات است.
تغییرات عمده از زمان انتشار نسخه ۱.۰.۰
برای اطلاعات بیشتر، لطفاً یادداشتهای انتشار نسخههای آلفا و بتای ۱.۱.۰ را مرور کنید. برخیاز بهروزرسانیهای اصلی در ۱.۱.۰ عبارتاند از:
- DataStore اکنون از چندین فرایند که به یک فایل دسترسی دارند پشتیبانی میکند و از قابلیت مشاهده در سراسر فرایندها پشتیبانی میکند.
- میانای جدید «فضای ذخیرهسازی» به شما امکان میدهد نحوه ذخیره یا سریالسازی مدلهای دادهتان را سفارشیسازی کنید.
- اکنون میتوانید از DataStore در پروژههای Kotlin Multiplatform استفاده کنید.
نسخه 1.1.0-rc01
۳ آوریل ۲۰۲۴
androidx.datastore:datastore-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 حاوی این ارسالها است.
رفع اشکالها
- افت عملکردی که در آن فراخوانیهای
updateDataدرصورت یکسان بودن دادههای جدید با دادههای قدیمی در نوشتنهای دیسک بهینهسازی نمیشد برطرف شد (d64cfb5) - مشکل شرایط رقابتی که در آن
MultiProcessDataStoreممکن بود درطول مقداردهی اولیه، ابطالها را ازدست بدهد برطرف شد. ((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را ارسال میکنید تا از این مشکل جلوگیری شود.
- توجه داشته باشید که اگر از کتابخانه آزمایشی Coroutines استفاده میکنید، این تغییر ممکن است باعث راهاندازی
- مشکل بنبست تماسهای
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 شامل این ارسالها است.
نسخه 1.1.0-alpha07
۲۹ نوامبر ۲۰۲۳
androidx.datastore:datastore-*:1.1.0-alpha07 منتشر شد. نسخه 1.1.0-alpha07 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- روشهای
MultiProcessDataStoreFactoryدیگر آزمایشی نیستند.حاشیهنویسی@ExperimentalMultiProcessDataStoreبهطور کامل برداشته شده است. (Ieee54، I8e607)
رفع اشکالها
- حذف حاشیهنویسیهای
@ExperimentalMultiProcessDataStoreرا به نسخه 1.1.0-alpha07 عرضه کنید. (I8e607)
نسخه 1.1.0-alpha06
۱ نوامبر ۲۰۲۳
androidx.datastore:datastore-*:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- روش کارخانه
createSingleProcessCoordinatorاکنون مسیر فایلی (String،java.io.File، وokio.Path) را دریافت میکند تا باcreateMultiProcessCoordinatorسازگار باشد. (I211c8، b/305755935)
نسخه 1.1.0-alpha05
۶ سپتامبر ۲۰۲۳
androidx.datastore:datastore-*:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- 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 شامل این تعهدات است.
رفع اشکالها
- پیادهسازی داخلی را بهبود دهید تا از شرایط مسابقه که در آن جریان داده
DataStoreممکن است پساز بهروزرسانی مقدار قدیمیتری را منتشر کند جلوگیری شود.
نسخه 1.1.0-alpha03
۲۴ مارس ۲۰۲۳
androidx.datastore:datastore-*:1.1.0-alpha03 منتشر شد.
رفع اشکالها
- محدودیتهای وابستگی از عناصر Maven برداشته شد تا مشکل ساخت در «هدفهای بومی Kotlin» دور زده شود (b/274786186، KT-57531).
نسخه 1.1.0-alpha02
۲۲ مارس ۲۰۲۳
androidx.datastore:datastore-*:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 شامل این تعهدها است.
توجه
توجه داشته باشید که این نسخه شامل یک بازسازی کد داخلی مهم است که پیادهسازیهای DataStore تکفرایندی و چندفرایندی را ادغام میکند. لطفاً مراقب تغییرات احتمالی در رفتار ناخواسته باشید (برای نمونه، زمانبندی اعلانهای بهروزرسانی). میتوانید از عنصر سامانه پیگیری مشکل برای گزارش دادن چنین تغییراتی استفاده کنید.
ویژگیهای جدید
- اکنون میتوانید از
DataStoreدر پروژههای KMM استفاده کنید. توجه داشته باشید که هدفهای غیرAndroid مربوط به DataStore هنوز آزمایشی هستند اما تصمیم گرفتیم نسخهها را ادغام کنیم تا امتحان کردن آنها برای توسعهدهندگان آسانتر شود. - ویژگیهای چندفرایندی از
androidx.datastore.multiprocessبهandroidx.datastore.coreمنتقل شدهاند. - روش کارخانه جدیدی در
androidx.datastore.core.MultiProcessDataStoreFactoryاضافه کنید تا نمونههای DataStore را باStorageشیء برای عملیات فایل ایجاد کنید. - افزودن میانای جدید
InterProcessCoordinatorکه به چندین نمونه DataStore کمک میکند در سراسر فرایندها ارتباط برقرار کنند. توجه داشته باشید که پیادهسازی چندفرایندیInterProcessCoordinatorفقط در Android دردسترس است.
تغییرات میانای برنامهسازی کاربردی
- Add
InterProcessCoordinatortoStorageConnectionin datastore-core interface (I555bb) - تغییر میاناهای برنامهسازی کاربردی در datastore-core
MultiProcessDataStoreFactoryبرای استفاده از «فضای ذخیرهسازی». (Iac02f) - انتقال میاناهای برنامهسازی کاربردی عمومی در datastore-multiprocess به datastore-core (I76d7c)
- Exposed
PreferencesSerializerfrom 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) - انتقال APIهای عمومی در datastore-multiprocess به datastore-core (I76d7c)
- Exposed
PreferencesSerializerfrom 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 حاوی این تعهدها است.
رفع اشکالها
- Clarify that
SharedPreferencesMigrationdoes 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 حاوی این تعهدات است.
رفع اشکالها
- اشکالی را برطرف میکند که در آن فایل 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 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- برداشتن سربارهای JVM برای روشهای فقط Kotlin (I2adc7)
رفع اشکالها
- اشکالی برطرف شد که در آن نمایندگان مخزن داده میتوانستند منجر به نشت زمینهها شوند (Ie96fc، b/184415662)
نسخه 1.0.0-alpha08
۱۰ مارس ۲۰۲۱
androidx.datastore:datastore-*:1.0.0-alpha08 منتشر شد. نسخه 1.0.0-alpha08 شامل این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
- اکنون میتوانید انتقالی را که به بافت بستگی دارد به نماینده دارایی
dataStoreوpreferencesDataStoreخود اضافه کنید. (I4ef69، b/173726702) - توابع کمکی را برای دریافت نام فایل اضافه میکند اگر دیگر از نماینده یا زمینه انبار داده استفاده نمیکنید.createDataStore (I60f9a)
- Serializer 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 شامل این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
تابع افزونه
Context.createDataStoreبرداشته شده است و نماینده ویژگی globalDataStore جایگزین آن شده است. globalDataStore را یکبار در سطح بالا در فایل kotlin خود فراخوانی کنید. برای مثال:val Context.myDataStore by dataStore(...)این را در سطح بالای فایل kotlin خود قرار دهید تا فقط یک نمونه از آن وجود داشته باشد. (I57215، b/173726702)
کارکردهای RxDataStore اکنون در کلاس RxDataStore قرار دارند، نه در کارکردهای افزونه در DataStore. (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 شامل این تعهدات است.
رفع اشکالها
- افزودن مستندات و استثناهای بهتر درباره نوشتن همزمان از پایگاههای داده. (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 شامل این تعهدات است.
رفع اشکالها
- مشکل بستهبندی که باعث ازکارافتادن برنامه در «انبار داده اولویت»
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 حاوی این commit-ها است.
ویژگیهای جدید
- «اولویتها» اکنون از مقادیر دوگانه پشتیبانی میکند (که اگر به دقت بیشتری نسبت به مقادیر اعشاری نیاز داشته باشید مفید است) (I5be8f، b/169471808)
تغییرات میانای برنامهسازی کاربردی
- وابستگی خالص kotlin برای datastore ایجاد شد تا امکان گردآوری سریعتر فراهم شود.
androidx.datastore:datastore-coreفقط حاوی میاناهای برنامهسازی کاربردی اصلی Kotlin است وandroidx.datastore:datastoreحاوی میاناهای برنامهسازی کاربردی است که به Android وابسته است (ازجملهSharedPreferencesMigrationو سازندهContext.createDataStore).(I42d75، b/168512698) - هدفهای تقسیمشده برای فروشگاه دادههای اولویت برای کامپایل سریعتر کاتلین (Ia3c19)
اکنون سریالسازها به دارایی جدیدی برای مقدار پیشفرض نیاز دارند که درصورت نبود داده در دیسک استفاده خواهد شد. این کار پیادهسازی سریالسازهای سفارشی را آسانتر میکند تا کاربران مجبور نباشند جریانهای ورودی خالی را بهطور ویژه مدیریت کنند (جریانهای ورودی خالی با json تجزیه نمیشوند).
- همچنین اکنون بررسی میشود که جاریسازی برونداد ارائهشده به writeTo() بسته نباشد، و اگر بسته باشد استثناهایی ایجاد میکند (I16e29)
درحال داخلی کردن سازنده SharedPreferencesView. این برنامه در ابتدا برای آزمایش عمومی بود. آزمایشها باید بهجای آن SharedPreferencesMigration را بسازند و درمقابل آن آزمایش کنند. (I93891)
رفع اشکالها
- پارامتر
produceFileدرDataStoreFactoryوPreferenceDataStoreFactoryاکنون آخرین پارامتر در فهرست است، بنابراین به شما امکان میدهد از دستورگان لامبدای پایانی Kotlin استفاده کنید. (Ibe7f1، b/169425442) - پساز الزامات جدید «میانای برنامهسازی کاربردی صریح» برای 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 اضافه شد. تغییر باعث میشود استفاده از مخزن داده برای افرادی که از مخزن داده با انواع غیرپروتکل/غیرترجیحات استفاده میکنند مختل شود (I6aa84)
- روش
toStringبه Preferences.kt اضافه شد تا اشکالزدایی وضعیت فعلی آسان شود (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 غلبه میکنند.