DataStore

تخزين البيانات بشكل غير متزامن ومتّسق ومعاملاتي، ما يتيح التغلّب على بعض عيوب SharedPreferences
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫22 أكتوبر 2025 1.1.7 - 1.2.0-beta01 -

تحديد الاعتماديات

لإضافة اعتمادية على DataStore، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

هناك طريقتان لتنفيذ DataStore: Preferences وProto. اختَر إمّا حملات التطبيقات أو نوع حملة آخر. يمكنك أيضًا إضافة تبعيات لا تتضمّن Android إلى أي من عمليات التنفيذ.

أضِف الاعتماديات الخاصة بالتنفيذ الذي تحتاج إليه في ملف build.gradle لتطبيقك أو وحدتك:

Preferences DataStore

Groovy

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation "androidx.datastore:datastore-preferences:1.1.7"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-preferences-rxjava3:1.1.7"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-preferences-core:1.1.7"
    }
    

Kotlin

    // Preferences DataStore (SharedPreferences like APIs)
    dependencies {
        implementation("androidx.datastore:datastore-preferences:1.1.7")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-preferences-rxjava2:1.1.7")

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

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-preferences-core:1.1.7")
    }
    

Proto DataStore

Groovy

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation "androidx.datastore:datastore:1.1.7"

        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.1.7"

        // optional - RxJava3 support
        implementation "androidx.datastore:datastore-rxjava3:1.1.7"
    }

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation "androidx.datastore:datastore-core:1.1.7"
    }
    

Kotlin

    // Typed DataStore (Typed API surface, such as Proto)
    dependencies {
        implementation("androidx.datastore:datastore:1.1.7")

        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.1.7")

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

    // Alternatively - use the following artifact without an Android dependency.
    dependencies {
        implementation("androidx.datastore:datastore-core:1.1.7")
    }
    

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.2

الإصدار 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 وGuava ListenableFuture من خلال GuavaDataStore. (Iadd5e0)
  • أصبح من الممكن الآن استخدام DataStore أثناء وضع DirectBoot. لإنشاء مخزن بيانات سيتم استخدامه أثناء وضع "التشغيل المباشر"، يجب إنشاؤه في مساحة التخزين المحمية على الجهاز. يمكن تحقيق ذلك من خلال واجهات برمجة التطبيقات الجديدة التالية DataStore: createInDeviceProtectedStorage() في DataStoreFactory وdeviceProtectedDataStore() في DataStoreDelegate. (Ib90e56)

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة PreferencesFileSerializer التي تنفّذ واجهة androidx.datastore.core.Serializer لاستخدامها مع FileStorage. (I4c71f3)

إصلاح الأخطاء

  • تم حلّ المشكلة FileNotFoundException في OkioStorage عند بدء التشغيل من خلال إضافة محاولة ثانية لقراءة البيانات في حال حدوث حالة تزامن. (I43b3fb، b/337870543)
  • تم تحديد الدالة الإنشائية التلقائية لـ ReplaceFileCorruptionHandler من أجل الاستخدام الشائع للرموز. (I795b05، b/358138957)

الإصدار 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 في إصدارات العملاء. تتضمّن الخطوة استخدام لغة DSL القديمة android في 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 الآن إمكانية وصول عمليات متعددة إلى الملف نفسه، مع إتاحة إمكانية المراقبة على مستوى العمليات.
  • تتيح لك واجهة التخزين الجديدة تخصيص طريقة تخزين نماذج البيانات أو تسلسلها.
  • يمكنك الآن استخدام DataStore في مشاريع Kotlin Multiplatform.

الإصدار 1.1.0-rc01

‫3 أبريل 2024

تم طرح androidx.datastore:datastore-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة انخفاض الأداء حيث لم يتم تحسين عمليات الكتابة على القرص في استدعاءات updateData إذا كانت البيانات الجديدة هي نفسها البيانات القديمة (d64cfb5)
  • تم إصلاح مشكلة التزامن التي قد تؤدي إلى عدم رصد عمليات الإبطال أثناء عملية الإعداد في MultiProcess DataStore. ((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)
  • لم يعُد الأمر Made يعرض الخطأ IOExceptions في حال تعذّر حذف SharedPreferences أثناء نقل البيانات.DataStore (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)

إصلاح الأخطاء

  • طرح إزالة تعليقات @ExperimentalMultiProcessDataStore التوضيحية في الإصدار 1.1.0-alpha07 (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 ذات العمليات المتعدّدة. يُرجى الانتباه إلى أي تغييرات محتملة في السلوك غير المقصود (مثل توقيت إشعارات التحديث). يمكنك استخدام مكوّن "أداة تتبُّع المشاكل" للإبلاغ عن هذه التغييرات.

الميزات الجديدة

  • يمكنك الآن استخدام 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 هو حل لتخزين البيانات يتيح لك تخزين أزواج المفتاح/القيمة أو العناصر المكتوبة باستخدام مخازن البروتوكول. تستخدم DataStore إجراءات Kotlin الفرعية و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)
  • إضافة دوال مساعدة للحصول على اسم الملف إذا لم تعُد تستخدم وكيل مساحة تخزين البيانات أو 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 property delegate. استدعِ globalDataStore مرة واحدة على مستوى أعلى في ملف Kotlin. مثلاً:

    val Context.myDataStore by dataStore(...)
    

    ضَع هذا الرمز في المستوى الأعلى من ملف Kotlin ليكون هناك مثيل واحد فقط منه. (I57215، b/173726702)

  • أصبحت دوال RxDataStore الآن في فئة RxDataStore بدلاً من دوال الإضافة في DataStore. (Idccdb، b/177691248)

  • إذا أردت نقل EncryptedSharedPreferences (أو direct boot 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

الإصدار 1.0.0-alpha03

‫11 نوفمبر 2020

تم طرح androidx.datastore:datastore-*:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.

الميزات الجديدة

  • تتيح الإعدادات المفضّلة الآن استخدام قيم مضاعفة (وهو أمر مفيد إذا كنت بحاجة إلى دقة أكبر من الأرقام العشرية) (I5be8f، b/169471808)

تغييرات واجهة برمجة التطبيقات

  • تم إنشاء تبعية Kotlin خالصة لـ DataStore للسماح بالتجميع بشكل أسرع. يحتوي 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 الفرعية وFlow، طريقتَي تنفيذ مختلفتَين:

  • ‫Proto DataStore، الذي يتيح لك تخزين عناصر مكتوبة (مدعومة بواسطة مخازن البروتوكول)
  • ‫Preferences DataStore، الذي يخزّن أزواج المفتاح/القيمة

يتم تخزين البيانات بشكل غير متزامن ومتّسق ومعاملاتي، ما يؤدي إلى التغلّب على معظم عيوب SharedPreferences.