DataStore
| آخر تحديث | الإصدار المستقر | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
|---|---|---|---|---|
| 21 أكتوبر 2026 | 1.3.0 | - | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على DataStore، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
يوفّر DataStore خيارات مختلفة للتسلسل ، ويمكنك اختيار أحدها. يمكنك أيضًا إضافة تبعيات خالية من Android إلى أي من التنفيذ.
أضِف الاعتماديات الخاصة بالتنفيذ الذي تحتاج إليه في ملف build.gradle لتطبيقك أو وحدتك:
Preferences DataStore
أضِف الأسطر التالية إلى جزء التبعيات في ملف Gradle:
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.3.0" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.3.0") }
لإضافة دعم اختياري لـ RxJava، أضِف التبعيات التالية:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.3.0") }
DataStore
أضِف الأسطر التالية إلى جزء التبعيات في ملف Gradle:
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.3.0" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.3.0") }
أضِف التبعيات الاختيارية التالية لتوفير دعم RxJava:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.3.0") }
لتسلسل المحتوى، أضِف الاعتماديات لتسلسل Protocol Buffers أو JSON.
تسلسل JSON
لاستخدام تسلسل JSON، أضِف ما يلي إلى ملف Gradle:
Groovy
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" }
Kotlin
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") }
نشر Protobuf على نحو متسلسِل
لاستخدام تسلسل Protobuf، أضِف ما يلي إلى ملف Gradle:
Groovy
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation "com.google.protobuf:protobuf-kotlin-lite:4.32.1" } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
Kotlin
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation("com.google.protobuf:protobuf-kotlin-lite:4.32.1") } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker لمزيد من المعلومات.
الإصدار 1.3
الإصدار 1.3.0
21 أكتوبر 2026
تم طرح androidx.datastore:datastore-*:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.2.0:
الميزات الجديدة
إتاحة التخزين على الويب: تم تقديم خيارات التخزين على الويب في KMP، ما يتيح الاحتفاظ بالبيانات بمرونة على جميع أهداف الويب:
-
sessionStorage(WebSessionStorage): تتيح هذه السياسة الاحتفاظ بالبيانات مؤقتًا ضمن علامة تبويب متصفّح واحدة. -
localStorage(WebLocalStorage): تتيح هذه السياسة استخدام مساحة تخزين دائمة مع إشعارات برصد حدث والمزامنة على مستوى علامات التبويب. - نظام الملفات الخاص بالمصدر (
WebOpfsStorage): يوفّر هذا الإعداد إمكانية استخدام نظام الملفات من خلال OPFS، ويتميّز بإدخال/إخراج الملفات بشكل غير متزامن وإشعارات على مستوى علامات التبويب.
-
إتاحة التشفير (
datastore-tink): تمت إضافة العنصر الجديدandroidx.datastore:datastore-tinkالذي يتيح التشفير باستخدام مكتبة Tink. وتقدّمAeadSerializerلتشفير البيانات وفك تشفيرها باستخدام ميزة "التشفير المصادَق عليه مع البيانات المرتبطة" (AEAD).تتبُّع الأداء: تمت إضافة ميزة تتبُّع الأداء في
androidx.tracingعلى نظام Android الأساسي المستهدَف.واجهة برمجة التطبيقات
DataStore.Builder: تم طرحDataStore.Builder<T>كبديل حديث وقابل للتوسّع لـDataStoreFactory. يتطلّب ذلك استخدامCoroutineContextبدلاً منCoroutineScopeلتحسين التزامن المنظَّم.الملفات الشخصية للمرجع: تمت إضافة الملفات الشخصية للمرجع إلى
datastoreلتحسين أداء بدء التشغيل.
التغييرات في واجهة برمجة التطبيقات
- تم تعديل واجهات برمجة التطبيقات
DataStore.BuilderوReThrowCorruptionHandlerوInterProcessCoordinatorإلىpublic.
إصلاح الأخطاء وإجراء تحسينات
تمت إضافة معلومات مسار الملف الأساسي إلى رسائل
CorruptionExceptionلتحسين إمكانية تصحيح الأخطاء أثناء حالات تعذُّر التحليل.تم تصحيح احتمال فقدان البيانات في
GuavaDataStoreمن خلال فرض ترتيب صارم للتحديثات وفقًا لمبدأ "الوارد أولاً يُباع أولاً" (FIFO).
الإصدار 1.3.0-rc01
12 أكتوبر 2026
تم طرح androidx.datastore:datastore-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- استخدام
WindowCompat#enableEdgeToEdge(Window)بدلاً منEdgeToEdge#enable()(Ibff3e)
إصلاح الأخطاء
- تم تحديث تبعية
androidx.lifecycle:lifecycle-runtimeإلى الإصدار 2.10.0. هذا الإصدار مطلوب لتشغيل عمليات فحص lint المجمّعة لوقت تشغيل مراحل النشاط مع الإصدار 9.5.0-alpha04 من AGP أو الإصدارات الأحدث. (I99bfd، b/556807521)
الإصدار 1.3.0-alpha11
9 سبتمبر 2026
تم طرح androidx.datastore:datastore-*:1.3.0-alpha11. يتضمّن الإصدار 1.3.0-alpha11 هذه التعديلات.
إصلاح الأخطاء
- لا يتم تضمين مسار الملف الأساسي في رسائل
CorruptionExceptionالتي تظهر أثناء حالات تعذُّر تحليل الإعدادات المفضّلة فيDataStore. (Ia9e8f)
الإصدار 1.3.0-alpha10
29 يوليو 2026
تم طرح 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
6 مايو 2026
تم طرح androidx.datastore:datastore-*:1.3.0-alpha09. يتضمّن الإصدار 1.3.0-alpha09 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- ضبط "
ReThrowCorruptionHandler" على "علني" (I137bb، b/427722902) - اجعل مراحل النشاط متسقة مع تتبّع النظام. (Ib391b)
الإصدار 1.3.0-alpha08
22 أبريل 2026
تم طرح androidx.datastore:datastore-*:1.3.0-alpha08. يتضمّن الإصدار 1.3.0-alpha08 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية استخدام نظام الملفات الخاص بالمصدر (OPFS) في DataStore لمنصات الويب. يقدّم هذا التنفيذ
WebOpfsStorageويتضمّن دعمًا معماريًا لوحدات الإدخال والإخراج للملفات غير المتزامن، والإشعارات على مستوى علامات التبويب باستخدام واجهة برمجة التطبيقاتBroadcastChannel، والقفل الموزَّع من خلالWeb Locks APIالأصلي للوصول الحصري إلى الكتابة. Id7f5807 b/316376114
التغييرات في واجهة برمجة التطبيقات
- تم تقديم واجهتَي برمجة التطبيقات
WebLocalStorageوWebSessionStorageلإدارة نوع مساحة التخزين بشكل صريح في بيئات الويب. I35fa259b b/316376114
الإصدار 1.3.0-alpha07
11 مارس 2026
تم طرح 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: تم طرحDataStore.Builder<T>كبديل قابل للتوسّع لـDataStoreFactory. باستخدام واجهة برمجة التطبيقات الجديدة هذه، أصبح لدى المستخدمين الآن طريقة لتقديم منطق التلف الخاص بهم من خلالsetCorruptionHandler. بالإضافة إلى ذلك، تتطلّب واجهة برمجة التطبيقاتBuilderأن يتم إعدادDataStoreباستخدامCoroutineContextبدلاً منCoroutineScope، وهو تحسين للتزامن المنظَّم، لأنّه يسمح للمتصلين بتحديد سلوك التنفيذ (مثل Dispatchers محدّدة) بدون فرض إدارةDataStoreبشكل غير مناسب أو الالتزام بمراحل نشاط نطاق المتصل.ملاحظة: ننصح جميع المستخدمين بالانتقال من
DataStoreFactoryإلى واجهات برمجة التطبيقات الجديدة فيDataStore.Builder. من خلال طلبCoroutineContextبدلاً منCoroutineScope، تفرض واجهة برمجة التطبيقات تزامنًا أفضل من حيث البنية. يضمن ذلك عدم ربط عمليات DataStore بمراحل نشاط واجهة المستخدم القصيرة الأجل (مثلviewModelScope)، ما يمنع الإلغاء المبكر وفقدان البيانات المحتمل.تحذير: تأكَّد من أنّ
CoroutineContextالمقدَّم إلى "أداة الإنشاء" يحتوي على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() .keysetHandleأنشئ
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(), )استخدِم
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
25 فبراير 2026
تم طرح androidx.datastore:datastore-*:1.3.0-alpha06. يتضمّن الإصدار 1.3.0-alpha06 هذه التعديلات.
الميزات الجديدة
- يتيح
DataStoreالآن استخدامandroidx.tracingعلى نظام Android الأساسي المستهدَف. يمكنك إنشاءDataStoreمع التتبُّع من خلال تقديم مثيلandroidx.tracing.TracerللدالةDataStoreFactory.createWithTracing(). (I71bc2، b/427722902)
الإصدار 1.3.0-alpha05
28 يناير 2026
تم طرح androidx.datastore:datastore-*:1.3.0-alpha05. يتضمّن الإصدار 1.3.0-alpha05 هذه التعديلات.
الميزات الجديدة
- تمت إضافة ملفات Baseline الشخصية إلى مخزن البيانات. (3916245,b/469127532).
- تنفيذ دعم WASM/JS في DataStore من خلال
localStorageويوفّر ذلك ميزة واضحة مقارنةً بتنفيذsessionStorageالحالي من خلال تفعيل إشعار برصد حدث والمزامنة على مستوى علامات التبويب. (I67246، b/441511612)
الإصدار 1.3.0-alpha04
14 يناير 2026
تم طرح 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
17 ديسمبر 2025
تم طرح androidx.datastore:datastore-*:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات
إصلاح الأخطاء
- تم إصلاح المشكلة المتعلّقة بتعذُّر إعادة تسمية ملف مخزن البيانات المؤقت. (I94f89، b/203087070)
- تم إصلاح مشكلة لمنع تجاهل التحديثات أثناء القراءة/الكتابة المتزامنة. قد تحدث حالة سباق بين جامع بيانات جديد على
DataStore.dataومكالمةupdateDataمتزامنة، ما يؤدي إلى عدم حصول جامع البيانات على القيمة الجديدة. (I6a427، b/431787506)
الإصدار 1.3.0-alpha02
3 ديسمبر 2025
تم طرح 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
19 نوفمبر 2025
تم طرح androidx.datastore:datastore-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تمّت إضافة ميزة KMP Web في
DataStoreباستخدام واجهة برمجة التطبيقاتsessionStorage. تتيح هذه الميزة لـ "DataStore" الاحتفاظ بالبيانات مؤقتًا ضمن علامة تبويب متصفّح واحدة. (I60fad، b/316376114)
الإصدار 1.2
الإصدار 1.2.1
11 مارس 2026
تم طرح androidx.datastore:datastore-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.
لا تغييرات
- يقدّم هذا الإصدار إصلاحات بسيطة للأخطاء في البنية الأساسية ولا يتضمّن أي تغييرات في واجهة برمجة التطبيقات DataStore API أو في السلوك مقارنةً بالإصدار 1.2.0.
الإصدار 1.2.0
19 نوفمبر 2025
تم طرح androidx.datastore:datastore-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.
التغييرات الرئيسية منذ طرح الإصدار 1.1.0
دعم Java/Guava:
- تمت إضافة وحدة
datastore-guavaالجديدة لعرض واجهات برمجة التطبيقات المتوافقة مع مستخدمي Java وGuavaListenableFutureمن خلالGuavaDataStore. - تمت إضافة إمكانية استخدام عمليات متعددة ضمن
GuavaDataStore. - تمت إضافة تحميل زائد لـ
GuavaDataStore.fromيقبل JavaExecutor(بدلاً من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
5 نوفمبر 2025
تم طرح androidx.datastore:datastore-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
الإصدار 1.2.0-beta01
22 أكتوبر 2025
تم طرح 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يأخذ Executor بدلاً منCoroutineContext. (I989fa، b/448563183)
إصلاح الأخطاء
- تم إصلاح الخطأ
java.lang.UnsatisfiedLinkErrorعند استخدامDataStoreفي تطبيق تم تحسينه باستخدام R8، ولكنّه لا يستخدمgetDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d، b/434696293) - تم إصلاح مشكلة حيث يمكن تشغيل عمليات
GuavaDataStoreبشكل غير صحيح على سلسلة التعليمات التي يتم استدعاؤها (مثل سلسلة التعليمات الرئيسية) بدلاً من وحدة إرسال الإدخال/الإخراج المحدّدة. (Ic91ea،b/441801112)
الإصدار 1.2.0-alpha02
7 مايو 2025
تم طرح androidx.datastore:datastore-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة ميزة "دعم العمليات المتعددة" في
GuavaDataStore. (e0d608a). - تمت إضافة طريقة مساعِدة لإنشاء
GuavaDataStoreمنDataStore. (9af26f4) - تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 من KGP أو إصدار أحدث. (Idb6b5)
- استبدِل طريقة التحميل الزائد الحالية
datastoreبطريقة تفويض لتهيئة DataStore لاستخدامه أثناء التشغيل المباشر. (If71b9)
الإصدار 1.2.0-alpha01
26 مارس 2025
تم طرح 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)
الإصدار 1.1
الإصدار 1.1.7
20 مايو 2025
تم طرح androidx.datastore:datastore-*:1.1.7. يتضمّن الإصدار 1.1.7 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم توفّر قواعد Proguard في ملف Android في
datastore-preferences-core. (3f3f6e، b/413078297)
الإصدار 1.1.6
7 مايو 2025
تم طرح androidx.datastore:datastore-*:1.1.6. يتضمّن الإصدار 1.1.6 هذه التعديلات.
إصلاح الأخطاء
- تم حلّ مشكلة تعطُّل البيانات الوصفية في Gradle في الإصدار
1.1.5. حدثت هذه المشكلة بسبب خطأ في لغة DSL الجديدة للمكوّن الإضافي AGP KMP، ما منع تضمين البيانات الوصفية لجميع الأنظمة الأساسية المستهدَفة تلقائيًا. يؤدي هذا الخطأ إلى عدم ظهور بعض طرق DataStore Android في إصدارات العملاء. يتضمن الإصلاح استخدام لغةandroidDSL القديمة فيbuild.gradleبدلاً منandroidLibrary. (7801abf)
الإصدار 1.1.5
23 أبريل 2025
تم طرح androidx.datastore:datastore-*:1.1.5. يتضمّن الإصدار 1.1.5 هذه التعديلات.
إصلاح الأخطاء
- للحدّ من مشاكل
CorruptionExceptionفيPreferencesDataStore، تم تغيير مساحة التخزين التلقائية منOkioStorageإلىFileStorage. تم تنفيذ هذا التغيير من خلال تقديمPreferencesFileSerializer. b/346197747
الإصدار 1.1.4
26 مارس 2025
تم طرح androidx.datastore:datastore-*:1.1.4. يتضمّن الإصدار 1.1.4 هذه التعديلات.
إصلاح الأخطاء
- استبدِل مساحة التخزين التلقائية من
OkioStorageإلىFileStorageلتحسين الموثوقية من خلال تقليلCorruptionException. (I71181، b/346197747)
الإصدار 1.1.3
26 فبراير 2025
تم طرح androidx.datastore:datastore-*:1.1.3. يتضمّن الإصدار 1.1.3 هذه التعديلات.
إصلاح الأخطاء
- تم حلّ مشكلة
FileNotFoundExceptionفيOkioStorageالتي حدثت عند بدء تشغيل التطبيق. إذا لم تنجح المحاولة الأولى لقراءة الملف، سيتم إجراء محاولة ثانية في حال حدوث حالة سباق بسبب إنشاء الملف من خلال عملية مختلفة أثناء القراءة الأولية. (I43b3f، b/337870543)
الإصدار 1.1.2
15 يناير 2025
تم طرح androidx.datastore:datastore-*:1.1.2. يتضمّن الإصدار 1.1.2 هذه التعديلات.
إصلاح الأخطاء
- تحسين وقت استجابة القراءة الدافئة (
DataStore.data.first()) بمقدار 8 أضعاف (22b8a40) - يمكن إنشاء
ReplaceFileCorruptionHandlerمن رمز KMP المشترك. (7632e839)
الإصدار 1.1.1
1 مايو 2024
تم طرح androidx.datastore:datastore-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.
إصلاح الأخطاء
- تم تخفيف الإنذار الخاطئ في Linux بشأن الخطأ "سيحدث توقف تام للموارد" في حالة استثنائية تحاول فيها مثيلات
DataStoreمتعددة الكتابة من عمليات مختلفة عن طريق التراجع عن قفل الملف.
الإصدار 1.1.0
17 أبريل 2024
تم طرح androidx.datastore:datastore-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
التغييرات الرئيسية منذ طرح الإصدار 1.0.0
يُرجى مراجعة ملاحظات الإصدار من الإصدارات الأولية والتجريبية من 1.1.0 لمزيد من المعلومات. في ما يلي بعض التحديثات الرئيسية في الإصدار 1.1.0:
- تتيح DataStore الآن لعمليات متعددة الوصول إلى الملف نفسه، مع إمكانية تتبّع البيانات في جميع العمليات.
- تتيح لك واجهة Storage الجديدة تخصيص كيفية تخزين نماذج البيانات أو تسلسلها.
- يمكنك الآن استخدام DataStore في مشاريع Kotlin Multiplatform.
الإصدار 1.1.0-rc01
3 أبريل 2024
تم طرح androidx.datastore:datastore-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة انخفاض الأداء حيث لم يتم تحسين طلبات
updateDataفي عمليات الكتابة على القرص إذا كانت البيانات الجديدة هي نفسها البيانات القديمة (d64cfb5) - تم إصلاح حالة سباق حيث قد يفوت
MultiProcessDataStoreعمليات الإبطال أثناء الإعداد. ((b/326141553),(094c2dd))
الإصدار 1.1.0-beta02
6 آذار (مارس) 2024
تم طرح androidx.datastore:datastore-*:1.1.0-beta02. يتضمّن الإصدار 1.1.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- لا يجمع تحسين الأداء على
DataStoreسوى إشعارات التحديثات عند رصدها. (b/267792241)- يُرجى العِلم أنّ هذا التغيير قد يؤدي إلى ظهور
UncompletedCoroutinesErrorفي اختباراتك إذا كنت تستخدم مكتبة اختبار Coroutines. احرص على تمريرTestScope.backgroundScopeعند إعدادDataStoreفي الاختبارات لتجنُّب هذه المشكلة.
- يُرجى العِلم أنّ هذا التغيير قد يؤدي إلى ظهور
- تم إصلاح مشكلة توقُّف طلبات
updateDataالمتداخلة في المثيل نفسه. (b/241760537) - تم تعديل
DataStoreلكي لا يعرضIOExceptionsإذا تعذّر حذفSharedPreferencesأثناء نقل البيانات. (b/195553816) - تم إصلاح المشكلة المتمثلة في تعذُّر إعادة تسمية الملف أثناء
updateDataفي بيئات JVM غير Android. (b/203087070) - تم إصلاح المشكلة المتمثّلة في عدم معالجة
CorruptionExceptionبعد إعدادDataStore. (b/289582516)
الإصدار 1.1.0-beta01
10 يناير 2024
تم إصدار androidx.datastore:datastore-*:1.1.0-beta01 بدون أي تغييرات منذ 1.1.0-alpha07. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
الإصدار 1.1.0-alpha07
29 نوفمبر 2023
تم طرح androidx.datastore:datastore-*:1.1.0-alpha07. يتضمّن الإصدار 1.1.0-alpha07 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- لم تعُد طرق
MultiProcessDataStoreFactoryتجريبية، وتمت إزالة التعليق التوضيحي@ExperimentalMultiProcessDataStoreبالكامل. (Ieee54، I8e607)
إصلاح الأخطاء
- طرحنا الإصدار 1.1.0-alpha07 الذي لا يتضمّن تعليقات
@ExperimentalMultiProcessDataStoreالتوضيحية. (I8e607)
الإصدار 1.1.0-alpha06
1 تشرين الثاني (نوفمبر) 2023
تم طرح 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
6 سبتمبر 2023
تم طرح 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
5 أبريل 2023
تم طرح androidx.datastore:datastore-*:1.1.0-alpha04. يتضمّن الإصدار 1.1.0-alpha04 هذه التعديلات.
إصلاح الأخطاء
- تحسين التنفيذ الداخلي لتجنُّب حالة تضارب البيانات التي قد يؤدي فيها تدفق بيانات "
DataStore" إلى إصدار قيمة قديمة بعد إجراء تحديث
الإصدار 1.1.0-alpha03
24 مارس 2023
تم طرح androidx.datastore:datastore-*:1.1.0-alpha03.
إصلاح الأخطاء
- تمت إزالة قيود التبعية من عناصر Maven لحلّ مشكلة في عملية الإنشاء في Kotlin Native Targets (b/274786186، KT-57531).
الإصدار 1.1.0-alpha02
22 مارس 2023
تم طرح androidx.datastore:datastore-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
ملاحظة
يُرجى العِلم أنّ هذا الإصدار يتضمّن إعادة هيكلة داخلية مهمة تدمج عمليات تنفيذ DataStore ذات العملية الواحدة والعمليات المتعددة. يُرجى الانتباه إلى التغييرات المحتملة في السلوك غير المقصود (مثل توقيت إشعارات التحديث). يمكنك استخدام مكوّن Issue Tracker للإبلاغ عن هذه التغييرات.
الميزات الجديدة
- يمكنك الآن استخدام
DataStoreفي مشاريع KMM. يُرجى العِلم أنّ أهداف DataStore غير المتوافقة مع Android لا تزال تجريبية، ولكننا قرّرنا دمج الإصدارات لتسهيل تجربتها على المطوّرين. - تم نقل ميزات العمليات المتعددة من
androidx.datastore.multiprocessإلىandroidx.datastore.core. - أضِف طريقة مصنع جديدة في
androidx.datastore.core.MultiProcessDataStoreFactoryلإنشاء نُسخ DataStore باستخدام عناصرStorageلعمليات الملفات. - إضافة واجهة جديدة
InterProcessCoordinatorتساعد نُسخ DataStore المتعدّدة على التواصل على مستوى العمليات يُرجى العِلم أنّ تنفيذ ميزة "InterProcessCoordinator" على مستوى عمليات متعدّدة متاح على أجهزة Android فقط.
التغييرات في واجهة برمجة التطبيقات
- إضافة
InterProcessCoordinatorإلىStorageConnectionفي واجهة datastore-core (I555bb) - تغيير واجهات برمجة التطبيقات في datastore-core
MultiProcessDataStoreFactoryلاستخدام Storage (Iac02f) - نقل واجهات برمجة التطبيقات العامة في datastore-multiprocess إلى datastore-core (I76d7c)
- تم عرض
PreferencesSerializerمن datastore-preferences-core (I4b788). - جارٍ إضافة التعليق التوضيحي
@JvmDefaultWithCompatibility (I8f206)
الإصدار 1.1.0-alpha01
9 نوفمبر 2022
تم طرح androidx.datastore:datastore-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تتيح حالات الاستخدام المتعدّدة العمليات التي يتم فيها ضمان اتساق البيانات بين نُسخ
DataStoreفي جميع العمليات. أضِفMultiProcessDataStoreFactory#createلإنشاء مثيلاتDataStoreهذه. - واجهة تخزين جديدة تتيح تبديل آلية التخزين الأساسية لـ "
Datastore" يتم توفير عمليات التنفيذ لـ java.io وokio. تتضمّن مصانعDataStoreطرقًا جديدة تقبل عنصر Storage هذا.
التغييرات في واجهة برمجة التطبيقات
- تغيير واجهات برمجة التطبيقات في datastore-core
MultiProcessDataStoreFactoryلاستخدام Storage (Iac02f) - نقل واجهات برمجة التطبيقات العامة في datastore-multiprocess إلى datastore-core (I76d7c)
- تم عرض
PreferencesSerializerمن datastore-preferences-core (I4b788).
الإصدار 1.0.0
الإصدار 1.0.0
4 أغسطس 2021
تم طرح androidx.datastore:datastore-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.
الميزات الرئيسية في الإصدار 1.0.0
Jetpack DataStore هو حلّ لتخزين البيانات يتيح لك تخزين أزواج المفتاح/القيمة أو العناصر المكتوبة باستخدام Protocol Buffers. يستخدم DataStore دوال Kotlin coroutines وFlow لتخزين البيانات بشكل غير متزامن ومتسق ومعاملاتي.
الإصدار 1.0.0-rc02
21 يوليو 2021
تم طرح androidx.datastore:datastore-*:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- توضيح أنّ
SharedPreferencesMigrationلا يعمل في حال عدم توفّر مفاتيح (Icfa32، b/192824325) - تم إصلاح الخطأ الذي يتسبب في ظهور استثناء عند إنشاء
SharedPreferencesMigrationباستخدامMIGRATE_ALL_KEYSإذا لم يكن المفتاح المطلوب موجودًا بعد. (Ie318a، b/192824325)
الإصدار 1.0.0-rc01
30 يونيو 2021
تم طرح androidx.datastore:datastore-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تسبّب في إضافة ملف .java عن غير قصد إلى ملف jar النهائي (I65d96، b/188985637)
الإصدار 1.0.0-beta02
16 يونيو 2021
تم طرح androidx.datastore:datastore-*:1.0.0-beta02. يتضمّن الإصدار 1.0.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- إصلاح
ClassVerificationFailure(b/187450483)
الإصدار 1.0.0-beta01
21 أبريل 2021
تم طرح androidx.datastore:datastore-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- إزالة أحمال JVM الزائدة لطُرق Kotlin فقط (I2adc7)
إصلاح الأخطاء
- تم إصلاح خطأ حيث يمكن أن تؤدي تفويضات مخزن البيانات إلى تسرُّب السياقات (Ie96fc، b/184415662)
الإصدار 1.0.0-alpha08
10 آذار (مارس) 2021
تم طرح androidx.datastore:datastore-*:1.0.0-alpha08. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- يمكنك الآن إضافة عملية نقل بيانات تعتمد على السياق إلى المفوَّض عن السمتَين
dataStoreوpreferencesDataStore. (I4ef69، b/173726702) - تمت إضافة دوال مساعِدة للحصول على اسم الملف إذا لم تعُد تستخدم المفوَّض datastore أو context.createDataStore (I60f9a)
- أصبحت دالتا writeTo وreadFrom في Serializer معلّقتَين الآن. إذا كنت قد نفّذت Serializer، عليك تعديل الدوال لتصبح دوال تعليق. (I1e58e)
- تمت إضافة مفوّضي المواقع لمستخدمي RxDataStore. (Ied768، b/173726702)
إصلاح الأخطاء
- فرض قيود على الاستخدام العام لواجهات برمجة التطبيقات التجريبية (I6aa29، b/174531520)
الإصدار 1.0.0-alpha07
24 فبراير 2021
تم طرح androidx.datastore:datastore-*:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
تمت إزالة دالة الإضافة
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)
- تم إصلاح سلوك الإلغاء عند إلغاء نطاق المتصل. (I2c7b3)
الإصدار 1.0.0-alpha06
13 يناير 2021
تم طرح androidx.datastore:datastore-*:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
الميزات الجديدة
- تمت إضافة برامج تضمين 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/". (Ica222)
الإصدار 1.0.0-alpha05
2 ديسمبر 2020
تم طرح 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
17 نوفمبر 2020
تم طرح 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
11 تشرين الثاني (نوفمبر)، 2020
تم طرح androidx.datastore:datastore-*:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تتيح الإعدادات المفضّلة الآن استخدام القيم المزدوجة (وهو أمر مفيد إذا كنت بحاجة إلى دقة أكبر من القيم العشرية) (I5be8f، b/169471808)
التغييرات في واجهة برمجة التطبيقات
- تم إنشاء تبعية Kotlin خالصة لمخزن البيانات للسماح بتجميع أسرع. يحتوي
androidx.datastore:datastore-coreعلى واجهات برمجة التطبيقات الأساسية في Kotlin فقط، بينما يحتويandroidx.datastore:datastoreعلى واجهات برمجة التطبيقات التي تعتمد على Android (بما في ذلكSharedPreferencesMigrationومُنشئContext.createDataStore). (I42d75، b/168512698) - تقسيم الأهداف لمخزن بيانات الإعدادات المفضّلة من أجل تجميع Kotlin بشكل أسرع (Ia3c19)
تتطلّب أدوات التسلسل الآن سمة جديدة للقيمة التلقائية التي سيتم استخدامها في حال عدم توفّر بيانات على القرص. يسهّل ذلك تنفيذ أدوات تسلسل مخصّصة، وبالتالي لا يحتاج المستخدمون إلى استخدام حالات خاصة لتدفقات الإدخال الفارغة (لا يتم تحليل تدفقات الإدخال الفارغة باستخدام JSON).
- هناك أيضًا عملية تحقّق للتأكّد من أنّ مصدر الإخراج المقدَّم إلى writeTo() ليس مغلقًا، وإذا كان مغلقًا، فسيتم عرض استثناءات (I16e29).
جعل الدالة الإنشائية لـ SharedPreferencesView داخلية وكانت في الأصل علنية للسماح بإجراء الاختبارات. بدلاً من ذلك، يجب أن تنشئ الاختبارات SharedPreferencesMigration وتختبره. (I93891)
إصلاح الأخطاء
- أصبحت المَعلمة
produceFileفيDataStoreFactoryوPreferenceDataStoreFactoryالآن المَعلمة الأخيرة في القائمة، ما يتيح لك استخدام بنية lambda اللاحقة في Kotlin. (Ibe7f1، b/169425442) - اتّباع متطلبات واجهة برمجة التطبيقات الصريحة الجديدة للغة Kotlin (I5ae1e)
المشاكل المعروفة
- يتعطّل Preference Datastore عند استخدام
java.lang.NoClassDefFoundError. (b/173036843)
الإصدار 1.0.0-alpha02
14 أكتوبر 2020
تم طرح androidx.datastore:datastore-core:1.0.0-alpha02 وandroidx.datastore:datastore-preferences:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة إجراء وقائي ضد التغيير في datastore-core. يؤدي التغيير إلى إيقاف استخدام مخزن البيانات للمستخدمين الذين يستخدمون مخزن البيانات مع أنواع غير بروتوكولية أو غير مفضّلة (I6aa84)
- تمت إضافة طريقة
toStringإلى Preferences.kt لتسهيل تصحيح أخطاء الحالة الحالية (I96006) - تمت إضافة استثناء للحماية من إساءة استخدام
DataStore.Preferences(I1134d) - تم إصلاح خطأ كان يتسبب في تعطُّل التطبيق عند بدء التشغيل (I69237، b/168580258)
الإصدار 1.0.0-alpha01
2 سبتمبر 2020
تم طرح androidx.datastore:datastore-core:1.0.0-alpha01 وandroidx.datastore:datastore-preferences:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الميزات الجديدة
Jetpack DataStore هو حلّ جديد ومحسّن لتخزين البيانات يهدف إلى استبدال SharedPreferences. يستند DataStore إلى أنماط "كوروتين" وFlow في Kotlin، ويوفّر طريقتين مختلفتين للتنفيذ:
- Proto DataStore، الذي يتيح لك تخزين عناصر مكتوبة (مدعومة من Protocol Buffers)
- Preferences DataStore، الذي يخزّن أزواج المفتاح/القيمة
يتم تخزين البيانات بشكل غير متزامن ومتسق ومعاملاتي، ما يتغلب على معظم عيوب SharedPreferences.