DataStore
| آخر تحديث | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
|---|---|---|---|---|
| 12 أكتوبر 2026 | 1.2.1 | 1.3.0-rc01 | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على 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.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.1" }
Kotlin
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، أضِف التبعيات التالية:
Groovy
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" }
Kotlin
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:
Groovy
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" }
Kotlin
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:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.1") }
لتسلسل المحتوى، أضِف الاعتماديات لتسلسل 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-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. - واجهة برمجة التطبيقات الجديدة
DataStoreBuilder API: تم طرح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 هذه التعديلات.
الميزات الجديدة
- تمت إضافة الملفات الشخصية للمرجع إلى مخزن البيانات. (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 ذات العملية الواحدة وعمليات تنفيذ 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 في الدليل الفرعي "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. تؤدي عملية التعديل إلى إيقاف استخدام Datastore للمستخدمين الذين يستخدمون Datastore مع أنواع غير أولية أو غير مفضّلة (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، المستنِد إلى دوال Kotlin coroutines وFlow، طريقتين مختلفتين للتنفيذ:
- Proto DataStore، الذي يتيح لك تخزين عناصر مكتوبة (مدعومة بواسطة Protocol Buffers)
- Preferences DataStore، الذي يخزّن أزواج المفتاح/القيمة
يتم تخزين البيانات بشكل غير متزامن ومتسق ومعاملاتي، ما يتغلب على معظم عيوب SharedPreferences.