DataStore
آخر تعديل | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | الإصدار الأولي |
---|---|---|---|---|
29 تشرين الثاني (نوفمبر) 2023 | 1.0.0 | - | - | 1.1.0-alpha07 |
تعريف التبعيات
لإضافة تبعية على DataStore، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven الذي يضم أدوات Google للحصول على مزيد من المعلومات.
هناك نوعان من عمليات تنفيذ DataStore: الإعدادات المفضّلة والنموذج الأوّلي. اختَر أحد الخيارَين. يمكنك أيضًا إضافة تبعيات خالية من Android إلى أي من التنفيذ.
أضِف التبعيات للتنفيذ الذي تحتاجه في ملف build.gradle
لتطبيقك أو الوحدة:
الإعدادات المفضّلة DataStore
رائع
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation "androidx.datastore:datastore-preferences:1.0.0" // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.0.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.0.0" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-preferences-core:1.0.0" }
Kotlin
// Preferences DataStore (SharedPreferences like APIs) dependencies { implementation("androidx.datastore:datastore-preferences:1.0.0") // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.0.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.0.0") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-preferences-core:1.0.0") }
Proto DataStore
رائع
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation "androidx.datastore:datastore:1.0.0" // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.0.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.0.0" } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation "androidx.datastore:datastore-core:1.0.0" }
Kotlin
// Typed DataStore (Typed API surface, such as Proto) dependencies { implementation("androidx.datastore:datastore:1.0.0") // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.0.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.0.0") } // Alternatively - use the following artifact without an Android dependency. dependencies { implementation("androidx.datastore:datastore-core:1.0.0") }
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
راجع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.
الإصدار 1.1
الإصدار 1.1.0-alpha07
29 تشرين الثاني (نوفمبر) 2023
تم إصدار "androidx.datastore:datastore-*:1.1.0-alpha07
". يحتوي الإصدار 1.1.0-alpha07 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- عليك إزالة تعليقات
@ExperimentalMultiProcessDataStore
التوضيحية للتأكّد من أنّ طُرقMultiProcessDataStoreFactory
لم تعُد تجريبية. (Ieee54)
إصلاح الأخطاء
- طرح خيار إزالة تعليقات
@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 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- أصبح مخزن البيانات
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
في مشاريع KMM. تجدر الإشارة إلى أنّ استهدافات DataStore التي لا تعمل بنظام التشغيل Android ما زالت في مرحلة تجريبية، ولكنّنا قرّرنا دمج الإصدارات لتسهيل تجربة المطوّرين عليها. - تم نقل الميزات المتعددة العمليات من
androidx.datastore.multiprocess
إلىandroidx.datastore.core
. - يمكنك إضافة طريقة جديدة على الإعدادات الأصلية في
androidx.datastore.core.MultiProcessDataStoreFactory
لإنشاء مثيلات DataStore باستخدام عناصرStorage
لمعالجة الملفات. - يمكنك إضافة واجهة
InterProcessCoordinator
جديدة تساعد مثيلات DataStore متعددة في التواصل عبر العمليات. يُرجى العلم أنّ تنفيذInterProcessCoordinator
في عمليات متعددة متوفّرة على نظام التشغيل Android فقط.
تغييرات واجهة برمجة التطبيقات
- إضافة
InterProcessCoordinator
إلىStorageConnection
في واجهة مخزن البيانات الأساسية (I555bb) - عليك تغيير واجهات برمجة التطبيقات في
MultiProcessDataStoreFactory
الخاص بمخزن البيانات الأساسي لاستخدام مساحة التخزين. (Iac02f) - نقل واجهات برمجة التطبيقات العامة في عملية تخزين البيانات المتعددة العمليات إلى وحدة مخزن البيانات الأساسية (I76d7c)
- تم الكشف عن
PreferencesSerializer
من datastore-preferences-core (I4b788). - إضافة تعليق
@JvmDefaultWithCompatibility
التوضيحي (I8f206)
الإصدار 1.1.0-alpha01
تشرين الثاني (نوفمبر) 2022
تم إصدار "androidx.datastore:datastore-*:1.1.0-alpha01
". يحتوي الإصدار 1.1.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
- دعم حالات الاستخدام متعدد العمليات التي يتم فيها ضمان اتساق البيانات بين
DataStore
مثيل في جميع العمليات يُرجى إضافةMultiProcessDataStoreFactory#create
لإنشاءDataStore
مثيل. - واجهة مساحة تخزين جديدة تسمح بالتبديل إلى آلية التخزين الأساسية لـ
Datastore
يتم توفير عمليات تنفيذ لـ java.io وokio. تتضمن مصانعDataStore
طرقًا جديدة تقبل عنصر التخزين هذا.
تغييرات واجهة برمجة التطبيقات
- عليك تغيير واجهات برمجة التطبيقات في
MultiProcessDataStoreFactory
الخاص بمخزن البيانات الأساسي لاستخدام مساحة التخزين. (Iac02f) - نقل واجهات برمجة التطبيقات العامة في عملية تخزين البيانات المتعددة العمليات إلى وحدة مخزن البيانات الأساسية (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 لتخزين البيانات بشكلٍ غير متزامن ومتسق وإجراء المعاملات.
الإصدار 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 عن غير قصد إلى الوعاء النهائي (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 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- إزالة أعباء JavaScript الإضافية لطرق 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).
- يتم التعليق الآن في Serializer writeTo وreadFrom. إذا تم تنفيذ 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 (أو "التمهيد المشترك للأدلّة المشتركة") إلى DataStore، يمكنك الآن إجراء ذلك باستخدام الدالة الإنشائية الجديدة لـ SharedPreferencesMigrate التي تتيح لك إدخال "SharedPreferences". (I8e04e، b/177278510)
إصلاح الأخطاء
- سيطرح DataStore الآن استثناء إذا كان هناك العديد من مستودعات البيانات النشطة للملف نفسه. إذا لم تكن تدير DataStore على أنّه مفرد أو لم تكن تضمن عدم تنشيط أي مثيلين من DataStore في آنٍ واحد لملف، قد تظهر لك الآن استثناءات عند القراءة أو الكتابة إلى DataStore. ويمكن حلّ هذه المشاكل من خلال إدارة DataStore على أنّه كائن مفرد. (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 API الأساسية (RxDataStore
وRxDataStoreBuilder
وRxDataMigration
). تحتوي عناصرdatastore-preferences-rxjava2/3
على أداة إنشاء لإنشاء واجهة برمجة تطبيقات الإعدادات المفضّلة.
تغييرات واجهة برمجة التطبيقات
- إخفاء واجهة CorruptionHandler. لم يكن هناك سبب ليكون متاحًا للجميع لأنّ مصنع DataStore لا يقبل إلا نوعReplaceFileCorruptionHandler. (I0b3b3، b/176032264)
- تمت إزالة طريقة
preferencesKey<T>(name: String): Key<T>
واستبدالها بطرق خاصة بكل نوع متوافق، على سبيل المثالpreferencesKey<Int>("int")
أصبح الآنintPreferencesKey("int")
(Ibcfac، b/170311106).
إصلاح الأخطاء
- إصلاح المستندات الموجودة في 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)
- نسمح الآن (ولكن لا نطلب ذلك) بإغلاق OUTStream التي تم تمريرها إلى
Serializer.writeTo()
. (I5c9bf، b/173037611)
الإصدار 1.0.0-alpha04
17 تشرين الثاني (نوفمبر) 2020
تم إصدار "androidx.datastore:datastore-*:1.0.0-alpha04
". يحتوي الإصدار 1.0.0-alpha04 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة في حزم البيانات تؤدي إلى حدوث العطل التالي في التفضيلات في مخزن البيانات
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 الداخلية. وقد كان متاحًا للجميع في الأصل للسماح بالاختبار. بدلاً من ذلك، يجب على الاختبارات إنشاء SharedPreferences Migration وإجراء اختبار وفقًا لذلك. (I93891)
إصلاح الأخطاء
- المعلمة
produceFile
فيDataStoreFactory
وPreferenceDataStoreFactory
هي الآن المعلمة الأخيرة في القائمة، لذلك فهي تتيح لك استخدام بنية lambda اللاحقة kotlin. (Ibe7f1، b/169425442) - اتّباع المتطلبات الصريحة الجديدة لواجهة برمجة التطبيقات في لغة kotlin (I5ae1e)
المشاكل المعروفة
- تعطُّل التفضيلات في مخزن البيانات في
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 على هذه الالتزامات.
إصلاح الأخطاء
- تمت إضافة حماية من التغيير في البيانات الأساسية لمخزن البيانات. تغيير يعطّل استخدام مخزن البيانات للأشخاص الذين يستخدمون مخزن البيانات بأنواع غير أولية/غير تفضيلات (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 هو حلّ جديد ومحسّن لتخزين البيانات يهدف إلى استبدال "الإعدادات المفضّلة المشتركة". ويستند DataStore إلى الكوروتينات والتدفق في لغة Kotlin، ويقدّم تطبيقَين مختلفَين:
- Proto DataStore، الذي يتيح لك تخزين الكائنات المكتوبة (بتنسيق مخازن مؤقتة للبروتوكول)
- التفضيلات DataStore، الذي يخزِّن أزواج المفتاح/القيمة
يتم تخزين البيانات على نحو غير متزامن وبشكل متسق ومعاملي، مما يؤدي إلى التغلب على معظم عيوب SharedPreferences.