DataStore

تخزين البيانات بشكل غير متزامن ومتسق ومعاملاتي، والتغلب على بعض عيوب SharedPreferences
آخر تحديث الإصدار المستقر إصدار محتمل الإصدار التجريبي الإصدار الأولي
‫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، اتّبِع الخطوات التالية:

    1. أنشئ مفتاحًا باستخدام واجهات برمجة تطبيقات Tink:

      val keysetHandle =
          AndroidKeysetManager.Builder()
              .withSharedPref(applicationContext, "keyset", "keyset_prefs")
              .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM))
              .withMasterKeyUri("android-keystore://master_key")
              .build()
              .keysetHandle
      
    2. أنشئ 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(),
      )
      
    3. استخدِم 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 وGuava ListenableFuture من خلال GuavaDataStore.
  • تمت إضافة إمكانية استخدام عمليات متعددة ضمن GuavaDataStore.
  • تمت إضافة تحميل زائد لـ GuavaDataStore.from يقبل Java Executor (بدلاً من CoroutineContext) ويستخدم androidx.core.util.Function.

التوافق مع ميزة "التشغيل المباشر":

  • أصبح استخدام DataStore متاحًا الآن أثناء وضع "التشغيل المباشر". تتيح واجهات برمجة التطبيقات الجديدة، مثل createInDeviceProtectedStorage() في DataStoreFactory وdeviceProtectedDataStore() في DataStoreDelegate، إنشاء DataStore ضمن مساحة التخزين المحمية على الجهاز.

التغييرات في مساحة التخزين وواجهة برمجة التطبيقات:

  • تمت إضافة PreferencesFileSerializer الذي ينفّذ androidx.datastore.core.Serializer لاستخدامه مع FileStorage.
  • تم تحديد الدالة الإنشائية التلقائية لـ ReplaceFileCorruptionHandler لاستخدام الرمز الشائع.

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

  • تم إصلاح الخطأ java.lang.UnsatisfiedLinkError عند استخدام DataStore في تطبيق تم تحسينه باستخدام R8 ولكن بدون استخدام ملف ProGuard العادي.
  • تم إصلاح مشكلة تؤدي إلى تشغيل عمليات GuavaDataStore بشكل غير صحيح على سلسلة التعليمات التي يتم استدعاؤها (مثل سلسلة التعليمات الرئيسية) بدلاً من مُرسِل 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 و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 في إصدارات العملاء. يتضمن الإصلاح استخدام لغة android DSL القديمة في 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)
  • تم إصلاح حالة سباق حيث قد يفوت 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)
  • تم تعديل 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 هذه التعديلات.

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

الإصدار ‎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

الإصدار ‎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.