DataStore

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

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

لإضافة اعتمادية على 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.0"

        // Alternatively - without an Android dependency.
        implementation "androidx.datastore:datastore-preferences-core:1.2.0"
    }
    

Kotlin

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

        // Alternatively - without an Android dependency.
        implementation("androidx.datastore:datastore-preferences-core:1.2.0")
    }
    

لإضافة دعم اختياري لـ RxJava، أضِف التبعيات التالية:

Groovy

    dependencies {
        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.0"

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

Kotlin

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

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

DataStore

أضِف الأسطر التالية إلى جزء التبعيات في ملف Gradle:

Groovy

    dependencies {
        // Typed DataStore for custom data objects (for example, using Proto or JSON).
        implementation "androidx.datastore:datastore:1.2.0"

        // Alternatively - without an Android dependency.
        implementation "androidx.datastore:datastore-core:1.2.0"
    }
    

Kotlin

    dependencies {
        // Typed DataStore for custom data objects (for example, using Proto or JSON).
        implementation("androidx.datastore:datastore:1.2.0")

        // Alternatively - without an Android dependency.
        implementation("androidx.datastore:datastore-core:1.2.0")
    }
    

أضِف التبعيات الاختيارية التالية لتوفير دعم RxJava:

Groovy

    dependencies {
        // optional - RxJava2 support
        implementation "androidx.datastore:datastore-rxjava2:1.2.0"

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

Kotlin

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

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.2.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-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.0

‫19 نوفمبر 2025

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

التغييرات الرئيسية منذ طرح الإصدار 1.1.0

دعم Java/Guava:

  • تمت إضافة الوحدة الجديدة datastore-guava لعرض واجهات برمجة التطبيقات المتوافقة مع مستخدمي Java وGuava ListenableFuture من خلال GuavaDataStore.
  • تمت إضافة إمكانية استخدام عمليات متعددة في GuavaDataStore.
  • تمت إضافة تحميل زائد للدالة GuavaDataStore.from يقبل Executor Java (بدلاً من 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

‫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 و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 هذه التعديلات.

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

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

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

  • طرح إزالة تعليقات @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)
  • إضافة دوال مساعدة للحصول على اسم الملف إذا لم تعُد تستخدم وكيل 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 (أو 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.