Room
آخر تعديل | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | الإصدار الأولي |
---|---|---|---|---|
29 تشرين الثاني (نوفمبر) 2023 | 2.6.1 | - | - | - |
تعريف التبعيات
لإضافة تبعية إلى Room، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven الذي يضم أدوات Google للحصول على مزيد من المعلومات.
تشمل تبعيات الغرفة عمليات نقل بيانات غرفة الاختبار وRoom RxJava
أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle
لتطبيقك أو وحدتك:
رائع
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbol Processing (KSP) ksp "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
للحصول على معلومات حول استخدام مكوّن KAPT الإضافي، يُرجى الاطّلاع على مستندات KAPT.
للحصول على معلومات حول استخدام المكوّن الإضافي لبرنامج KSP، يُرجى الاطلاع على وثائق البدء السريع لبرنامج KSP.
للحصول على معلومات عن استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.
للمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على مقالة إضافة تبعيات الإصدار.
بالنسبة إلى المكتبات التي لا تعمل بنظام التشغيل Android (أي وحدات Gradle فقط بلغة Java أو Kotlin فقط)، يمكنك الاعتماد على androidx.room:room-common
لاستخدام التعليقات التوضيحية للغرفة.
تهيئة خيارات برنامج التحويل البرمجي
تتوفّر في Room خيارات معالجة التعليقات التوضيحية التالية:
room.schemaLocation
: تتيح هذه السياسة تصدير مخططات قواعد البيانات وتفعيلها إلى ملفات JSON في الدليل المحدد. يُرجى الاطّلاع على صفحة عمليات نقل بيانات الغرف للحصول على مزيد من المعلومات.room.incremental
: لتفعيل معالج التعليقات التوضيحية المتزايدة في Gradle
يوضّح مقتطف الرمز التالي مثالاً على كيفية ضبط هذه الخيارات:
رائع
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "room.schemaLocation":"$projectDir/schemas".toString(), "room.incremental":"true" ] } } } }
Kotlin
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "room.schemaLocation" to "$projectDir/schemas", "room.incremental" to "true" ) } } } }
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
راجع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.
الإصدار 2.6
الإصدار 2.6.1
29 تشرين الثاني (نوفمبر) 2023
تم إصدار "androidx.room:room-*:2.6.1
". يتضمّن الإصدار 2.6.1 هذه الالتزامات.
إصلاح الأخطاء
- تم حلّ المشكلة في الرمز الذي تم إنشاؤه حيث كان يتم ضبط القيمة التلقائية للأعمدة المزدوجة في
EntityCursorConverter
على 0 بدلاً من 0.0. تم أيضًا تضمين إصلاح محتمل لحالة حافة مشابهة لأعمدة نوع التعويم. (Id75f5، b/304584179) - سيتم الآن نشر الاستثناءات التي تم طرحها من عمليات تحميل
PagingSource
باعتبارهاLoadStateUpdate
منLoadResult.Error
التي تحتوي على العنصر القابل للعرض. يمكن ملاحظة حالة الخطأ هذه من خلالPagingDataAdapter.loadStateFlow(Views)
أوLazyPagingItems.loadState(Compose)
. تجدر الإشارة إلى أنّ هذا يمثّل تغييرًا في السلوك، حيث ستظهر فقاعة تفسيرية في أخطاء التحميل السابقة كاستثناء تم طرحه باستخدام طريقة dao التي أدت إلى بدء التحميل. (I93887، b/302708983)
الإصدار 2.6.0
18 تشرين الأول (أكتوبر) 2023
تم إصدار "androidx.room:room-*:2.6.0
". يتضمّن الإصدار 2.6.0 هذه الالتزامات.
تغييرات مهمة منذ الإصدار 2.5.0
- يتوفّر الآن خيار تفعيل ميزة إنشاء رمز Kotlin (أو "Kotlin CodeGen") في Room KSP. (4297ec0). لتفعيل أداة Kotlin CodeGen في الغرفة، يمكنك إضافة اسم الخيار
room.generateKotlin
إلى خيارات المعالج في خدمة KSP. للاطّلاع على مزيد من التفاصيل حول كيفية تمرير خيارات المعالجات في برنامج مشاركة المعلومات (KSP)، يُرجى الاطّلاع على مستندات برنامج مشاركة البيانات (KSP).
ملاحظة: عند استخدام Kotlin CodeGen، من المهم الإشارة إلى أنّ هناك قيودًا إضافية تمت إضافتها. غير مسموح بالخصائص المجرّدة كأحرف DAO أو طلبات بحث DAO في لغة البرمجة Kotlin، ويُتوقّع أن تتم إعادة كتابتها كدوال بدلاً من ذلك لتجنب الفكرة الخاطئة بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. تمت إضافة قيد آخر وهو أنّ أنواع عرض المجموعات "Nullable" (Nullable) لم تعد مسموحًا بها في Room for Kotlin CodeGen.
تحذير: عند استخدام Kotlin CodeGen، قد تجد أنّ مشاريعك أكثر صرامة من حيث إمكانية القيم الفارغة. في لغة Kotlin CodeGen، تُعد قابلية إبطال وسيطات النوع أمرًا مهمًا، ويتم تجاهل هذا في الغالب في Java. على سبيل المثال، لنفترض أن لديك نوع الرجوع `Flow<foo\>` والجدول فارغ. في Java CodeGen، لن يؤدي ذلك إلى حدوث أي مشاكل، ولكن في Kotlin CodeGen، ستظهر لك رسالة خطأ. لتجنب ذلك، ستحتاج إلى استخدام `Flow<foo?\>`، بافتراض انبعاث قيمة فارغة. </foo?\></foo\>
- تمت إضافة العنصر الجديد للمكوّن الإضافي Room Gradle إلى الغرفة باستخدام المعرّف
androidx.room
، ما يحلّ العديد من المشاكل الحالية في Room المتعلقة بتضمين مدخلات ومخرجات المخططات من خلال خيارات معالج تعليقات Gradle التوضيحية. لمعرفة مزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات إصدار الغرفة 2.6.0-alpha02. - أصبحت فئات القيمة في "كيانات الغرفة" متاحة الآن في برنامج KSP. (4194095)
- تتوفّر الآن أنواع إرجاع الخريطة المتداخلة في دوال DAO في الغرفة. (I13f48، 203008711)
الإصدار 2.6.0-rc01
20 أيلول (سبتمبر) 2023
تم إصدار "androidx.room:room-*:2.6.0-rc01
". يحتوي الإصدار 2.6.0-rc01 على هذه الالتزامات.
الإصدار 2.6.0-beta01
23 آب (أغسطس) 2023
تم إصدار "androidx.room:room-*:2.6.0-beta01
". يتضمّن الإصدار 2.6.0-beta01 هذه الالتزامات.
إصلاح الأخطاء
- عند التعامل مع استثناء
SQLite
أثناء عملية إعادة الضبط، يتم طرح استثناء2067 SQLITE_CONSTRAINT_UNIQUE
أثناء عملية رفع أعلى، ويجب أن ينفِّذ upsert عملية تحديث. (If2849، b/243039555)
الإصدار 2.6.0-alpha03
9 آب (أغسطس) 2023
تم إصدار "androidx.room:room-*:2.6.0-alpha03
". يحتوي الإصدار 2.6.0-alpha03 على هذه الالتزامات.
الميزات الجديدة
تغييرات واجهة برمجة التطبيقات
- تم إنشاء تعليق توضيحي من النوع الجديد يُسمى
@MapColumn
ليحل محل@MapInfo
، وقد تم إيقافه نهائيًا الآن. بالنسبة إلى كل اسم عمود (keyColumnName
أوvalueColumnName
أو كليهما) تم تقديمه في التعليق التوضيحي@MapInfo
، عليك الإعلان عن تعليق توضيحي بشأن@MapColumn
باستخدامcolumnName
فقط واستخدام التعليق التوضيحي على وسيطة النوع المحدّد الذي تتم الإشارة إليه (المفتاح أو قيمة الخريطة) في نوع عرض دالة DAO. وذلك لأن التعليق التوضيحي@MapColumn
يتم استخدامه مباشرةً في وسيطة النوع ضمن النوع المعروض لدالة DAO، بدلاً من الدالة نفسها مثل@MapInfo
. لمزيد من المعلومات، يُرجى الرجوع إلى مستندات@MapColumn
. (Ib0305، b/203008711) - تعديل ملفات واجهة برمجة التطبيقات لإضافة تعليقات توضيحية بشأن إلغاء التوافق (I8e87a، b/287516207)
- تم تحديث واجهات برمجة تطبيقات المكوّن الإضافي Room Gradle بحيث لا تتطلّب دائمًا عمليات ضبط لكل خيار. وهذا يعني أن المكوِّن الإضافي يمكنه قبول موقع عام لجميع المتغيرات بدون إنشاء أدلة متعددة، مما يوفر عمليات نقل أكثر سلاسة، إلا أنه يتميز أيضًا بالمرونة بما يكفي لإعداد النكهات أو مخططات نوع الإصدار يدويًا مع الاحتفاظ بمزايا المكون الإضافي (إصدارات قابلة لإعادة الإنتاج وقابلة للتخزين المؤقت). (I09d6f، b/278266663)
إصلاح الأخطاء
- تم إصلاح الثغرة الأمنية المحتملة لتسرّب الذاكرة في
QueryInterceptorStatement
. (I193d1) - تم إصلاح السلوك غير الصحيح في دالة
QueryInterceptorDatabase execSQL()
. (Iefdc8)
الإصدار 2.6.0-alpha02
21 حزيران (يونيو) 2023
تم إصدار "androidx.room:room-*:2.6.0-alpha02
". يحتوي الإصدار 2.6.0-alpha02 على هذه الالتزامات.
المكوّن الإضافي Room Gradle
يحتوي هذا الإصدار الجديد على أداة جديدة للمكوّن الإضافي Room Gradle الذي يحمل المُعرّف androidx.room
، والذي يحلّ العديد من المشاكل الحالية في Room بشأن تضمين مدخلات ومخرجات المخطّطات من خلال خيارات معالِج تعليقات Gradle التوضيحية. يضبط المكوّن الإضافي لـ Room Gradle المشروع على أنّه يتم إنشاء مخططات يتم استهلاكها من أجل عمليات نقل البيانات التلقائية ويتم إخراجها من مهام التجميع بشكل صحيح بحيث تحتوي على إصدارات قابلة لإعادة الإنتاج وقابلة للتخزين المؤقت. يوفّر المكوّن الإضافي خدمة DSL لضبط موقع المخطط الأساسي:
room {
schemaDirectory("$projectDir/schemas/")
}
بعد ذلك، سيُعدّ المكوّن الإضافي برنامج التحويل البرمجي للغرفة ومهام التجميع المتنوعة وخلفياته (javac وKAPT وKSP) لإخراج ملفات المخطط في مجلدات ذات تنسيق خاص، مثل schemas/flavorOneDebug/com.package.MyDatabase/1.json
. وكالعادة، يتم تسجيل هذه الملفات في المستودع لاستخدامها في التحقق من الصحة والنقل التلقائي للبيانات. عند الانتقال إلى استخدام المكوِّن الإضافي بدلاً من خيارات معالج التعليقات التوضيحية، يجب نسخ ملفات المخطط الحالية إلى أدلة النكهة التي تم إنشاؤها بواسطة المكوّن الإضافي، وسيتم إجراء هذه العملية مرة واحدة فقط ويجب إجراؤها يدويًا. سيتم تحديث وثائق المخططات في developers.android.com في المستقبل بعد معالجة التعليقات ووصول المكوّن الإضافي إلى مستقر، لذا يُرجى تجربة ذلك.
تغييرات واجهة برمجة التطبيقات
- تم تعريف
RoomDatabase.QueryCallback
كواجهة تعمل للسماح باستخدامات الإحالات الناجحة من النوع SAM. (Iab8ea، b/281008549)
إصلاح الأخطاء
- حلّ المشكلة التي تنشأ عند إنشاء مثيل لقاعدة البيانات في Robolectric بعد نقل مصادر Room من Java إلى Kotlin. (Ic053c، b/274924903)
الإصدار 2.6.0-alpha01
22 آذار (مارس) 2023
تم إصدار "androidx.room:room-*:2.6.0-alpha01
". يحتوي الإصدار 2.6.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
- دعم فئات القيم في Room for KSP يمكن الآن لغرفة Room إتاحة فئات القيم في "الكيانات". (4194095)
- يمكن الآن تفعيل ميزة إنشاء رمز Kotlin(أو "Kotlin CodeGen") في الغرفة (4297ec0). لتفعيل أداة Kotlin CodeGen في الغرفة، يمكنك إضافة اسم الخيار
room.generateKotlin
إلى خيارات المعالج في خدمة KSP. للاطّلاع على مزيد من التفاصيل حول كيفية تمرير خيارات المعالجات في برنامج مشاركة المعلومات (KSP)، يُرجى الاطّلاع على مستندات برنامج مشاركة البيانات (KSP).
ملاحظة: عند استخدام Kotlin CodeGen، من المهم الإشارة إلى أنّ هناك قيودًا إضافية تمت إضافتها. غير مسموح بالخصائص المجرّدة كأحرف DAO أو طلبات بحث DAO في لغة البرمجة Kotlin، ويُتوقّع أن تتم إعادة كتابتها كدوال بدلاً من ذلك لتجنب الفكرة الخاطئة بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. تمت إضافة قيد آخر وهو أنّ أنواع عرض المجموعات "Nullable" (Nullable) لم تعد مسموحًا بها في Room for Kotlin CodeGen.
تحذير: عند استخدام Kotlin CodeGen، قد تجد أنّ مشاريعك أكثر صرامة من حيث إمكانية القيم الفارغة. في لغة Kotlin CodeGen، تُعد قابلية إبطال وسيطات النوع أمرًا مهمًا، ويتم تجاهل هذا في الغالب في Java. على سبيل المثال، لنفترض أن لديك نوع الرجوع `Flow<foo\>` والجدول فارغ. في Java CodeGen، لن يؤدي ذلك إلى حدوث أي مشاكل، ولكن في Kotlin CodeGen، ستظهر لك رسالة خطأ. لتجنب ذلك، ستحتاج إلى استخدام `Flow<foo?\>`، بافتراض انبعاث قيمة فارغة. </foo?\></foo\>
تغييرات واجهة برمجة التطبيقات
- الحماية من الاستخدام غير المفيد للمجموعات القابلة للقيم في أنواع البيانات التي يتم إرجاعها في طريقة DAO. (I777dc، b/253271782، b/259426907)
- أضِف واجهة برمجة تطبيقات لإنشاء تدفق ينبعث منه تغييرات أداة تتبُّع الإبطال. تُعد واجهة برمجة التطبيقات مفيدة لإنشاء مجموعات بيانات تحتاج إلى التفاعل مع تغييرات قاعدة البيانات. (I8c790، b/252899305)
إصلاح الأخطاء
- عدم السماح بالخصائص المجردة كأحرف DAO أو طلبات بحث DAO في برنامج Codegen بلغة Kotlin، وبدلاً من ذلك يجب إعادة كتابتها كدوال لتجنُّب الفكرة الخاطئة بأنّ قيمة السمة غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. (If6a13 وb/127483380 وb/257967987)
الإصدار 2.5.2
الإصدار 2.5.2
21 حزيران (يونيو) 2023
تم إصدار "androidx.room:room-*:2.5.2
". يتضمّن الإصدار 2.5.2 هذه الالتزامات.
إصلاح الأخطاء
- حلّ مشكلة عدم التوافق في kotlinx-metadata-jvm. (386d5c)
- يجب حل المشكلة التي تتسبب في عرض تطبيق Room لخطأ عند استخدامه في اختبار Robolectric. (f79bea، b/274924903)
الإصدار 2.5.1
الإصدار 2.5.1
22 آذار (مارس) 2023
تم إصدار "androidx.room:room-*:2.5.1
". يتضمّن الإصدار 2.5.1 هذه الالتزامات.
إصلاح الأخطاء
- تجنَّب التحقّق من الدليل الرئيسي لقاعدة البيانات في
FrameworkSQLiteHelper
إذا كانت قاعدة البيانات مفتوحة حاليًا. (5de86b8) - يمكنك استخدام عملية تحقُّق
isOpenInternal
عند التحقُّق ممّا إذا كانت قاعدة البيانات مفتوحة من قبل أم لا. (e91fb35) - تتوفّر الآن معالجة أفضل لطلب المستخدم الجديد في
acquireTransactionThread()
للغرفة. (219f98b). أثناء تعليق العملية، تستخدم الغرفة سلسلة محادثات من الجهة التنفيذية للعمليات وتبدأ حلقة حدث فيها وترسل إليها تعليق عمليات قاعدة البيانات حتى يتم تضمينها جميعًا في كوروتيين المعاملة. من المتوقّع عادةً أن تكون سلسلة المحادثات مختلفة عن تلك التي تبدأ المعاملة، ولكن في بعض الحالات تكون متطابقة. للتعامل مع حالات إعادة التوجيه هذه، تمت إعادة تنظيمwithTransaction()
بحيث لا يعتمد على مهمة التحكّم، وسيتم بدلاً من ذلك تنفيذ حظر تعليق المعاملات من داخلrunBlocking
في سلسلة المعاملات.
الإصدار 2.5.0
الإصدار 2.5.0
22 شباط (فبراير) 2023
تم إصدار androidx.room:room-paging-guava:2.5.0
وandroidx.room:room-paging-rxjava2:2.5.0
وandroidx.room:room-paging-rxjava3:2.5.0
. يحتوي الإصدار 2.5.0 على هذه الالتزامات.
الإصدار 2.5.0
11 كانون الثاني (يناير) 2023
تم إصدار "androidx.room:room-*:2.5.0
". يحتوي الإصدار 2.5.0 على هذه الالتزامات.
تغييرات مهمة منذ الإصدار 2.4.0
- تم تحويل جميع مصادر
room-runtime
من Java إلى لغة Kotlin. تجدر الإشارة إلى أنّك قد تواجه مشاكل عدم توافق المصدر إذا كان الرمز البرمجي في Kotlin بسبب تحويل المكتبة إلى Kotlin. على سبيل المثال، من التغيير غير المتوافق المصدر المعروف أنّ عليك الآن فيInvalidationTracker
الإعلان عنonInvalidate()
فيObserver
لاستخدام مَعلمة من النوعSet
وليسMutableSet
. علاوة على ذلك، تم تحويل بعض طرق الاستلام إلى خصائص تتطلب بناء جملة الوصول إلى الخاصية في ملفات Kotlin. يُرجى الإبلاغ عن الخطأ إذا كان هناك أي حالات عدم توافق كبيرة. - تمت إضافة تعليق توضيحي جديد للاختصار "
@Upsert
"، يحاول إدراج كيان عندما لا يكون هناك تعارض في العناصر الفريدة، أو تعديل العنصر في حال وجود تعارض. (I7aaab، b/241964353) - تمت إضافة عناصر جديدة لتسجيل الدخول إلى الغرف، مثل
room-paging-rxjava2
وroom-paging-rxjava3
وroom-paging-guava
، وذلك لتوفير الدعم في ميزة "تتبُّع أسعار الغرف". - تمت إضافة واجهات برمجة تطبيقات لتوفير أسماء جداول القيم الأساسية والقيم لتوضيحها في
@MapInfo
(Icc4b5).
الإصدار 2.5.0-rc01
7 كانون الأول (ديسمبر) 2022
تم إصدار "androidx.room:room-*:2.5.0-rc01
". يحتوي الإصدار 2.5.0-rc01 على هذه الالتزامات.
- هذا الإصدار مماثل للإصدار
2.5.0-beta02
.
الإصدار 2.5.0-beta02
تشرين الثاني (نوفمبر) 2022
تم إصدار "androidx.room:room-*:2.5.0-beta02
". يتضمّن الإصدار 2.5.0-beta02 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- أصلِح العديد من واجهات برمجة التطبيقات التي تستخدم وسيطات طلب البحث من قيمة غير ثابتة (
Array<Any?>
) إلى متعارضة (Array<out Any?>
) لمطابقة سلوك مصفوفة لغة Java. (b/253531073)
الإصدار 2.5.0-beta01
5 تشرين الأول (أكتوبر) 2022
تم إصدار "androidx.room:room-*:2.5.0-beta01
". يتضمّن الإصدار 2.5.0-beta01 هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- يجب تقييد الإصدار الأدنى من الإصدار المتوافق مع
@Upsert
ليكون واجهة برمجة التطبيقات الإصدار 16. ويرجع ذلك إلى عدم القدرة على تحديد تعارض أحد القيود الأساسية على المفتاح الأساسي في واجهات برمجة التطبيقات الأقدم. (I5f67f، b/243039555)
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في تصدير جداول الظل بشكل غير صحيح إلى ملفات
.json
المخطط، ما أدى إلى إتلافها. (I4f83b، b/246751839)
الإصدار 2.5.0-alpha03
24 آب (أغسطس) 2022
تم إصدار "androidx.room:room-*:2.5.0-alpha03
". يحتوي الإصدار 2.5.0-alpha03 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة تعليق توضيحي جديد للاختصار "
@Upsert
"، يحاول إدراج كيان عندما لا يكون هناك تعارض في العناصر الفريدة، أو تعديل العنصر في حال وجود تعارض. (I7aaab، b/241964353)
إصلاح الأخطاء
- ستعرض الغرفة الآن الخطأ
SQLiteConstraintException
بدلاً منIllegalStateException
أثناء التحقق من قيد المفتاح الخارجي للنقل التلقائي. (I328dd) - إصلاح تغيير غير متوافق مع مصدر Kotlin لسمات getter / السمات
getOpenHelper
وgetQueryExecutor
وgetTransactionExecutor
. (Iad0ac)
الإصدار 2.5.0-alpha02
1 حزيران (يونيو) 2022
تم إصدار "androidx.room:room-*:2.5.0-alpha02
". يحتوي الإصدار 2.5.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة عناصر
room-paging
جديدةroom-paging-rxjava2
وroom-paging-rxjava3
وroom-paging-guava
للحصول على الدعم في ميزة "تتبُّع أداء الغرف".(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,{146666906)
تغييرات واجهة برمجة التطبيقات
- تم تحويل كل
room-runtime
من لغة Java إلى لغة Kotlin. (If2069 وb/206859668),(Ie4b55 وb/206859668) و(I697ee وb/206859668) و(I96c25) و{1685b/206859668ملاحظة: قد تواجه مشاكل عدم توافق المصادر بسبب تحويل المكتبة إلى Kotlin. إذا كان رمزك في Kotlin وكان جارٍ الاتصال بالإصدار القديم من Room، سيحتاج الإصدار الجديد إلى معالجة هذه الحالات. على سبيل المثال، من التغيير غير المتوافق المصدر المعروف أنّ عليك الآن في
InvalidationTracker
الإعلان عنonInvalidate()
فيObserver
لاستخدام مَعلمة من النوعSet
وليسMutableSet
. - تمت إضافة واجهات برمجة تطبيقات لتوفير أسماء جداول القيم الأساسية والقيم لتوضيحها في
@MapInfo
(Icc4b5). - يجب حلّ إحدى مشاكل توافق المصدر لإعادة السماح بسياسة
@Ignore
في أدوات الحصول على المواقع الإلكترونية. (Ifc2fb)
إصلاح الأخطاء
- تكرار الخوارزمية الإرشادية لدقة العمود. ستحاول الغرفة الآن حل الأعمدة الغامضة في طلب بحث متعدد الخرائط. يسمح هذا بتعيين عبارات JOIN ذات الجداول التي تحتوي على جداول ذات الاسم نفسه بشكل صحيح إلى كائن بيانات النتيجة. (I4b444 وb/201306012 وb/212279118)
الإصدار 2.5.0-alpha01
23 شباط (فبراير) 2022
تم إصدار "androidx.room:room-*:2.5.0-alpha01
". يحتوي الإصدار 2.5.0-alpha01 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح المشكلة المتمثلة في عدم فرض استخدام الغرفة
@IntDef
في مصادر Kotlin. (I75f41، b/217951311) - تم إصلاح مشكلة توافق المصدر لإعادة السماح لـ
@Query
في أدوات الحصول على المواقع. (I0a09b) - تم تحويل ترميز الغرفة الشائع من لغة Java إلى لغة Kotlin. (I69c48، b/206858235)
ملاحظة: قد تواجه مشاكل في عدم توافق المصادر، لأنّه تم نقل بعض المواقع إلى العناصر المصاحبة أثناء تحويل المكتبة إلى Kotlin. إذا كان رمزك بلغة Kotlin ويستدعي الإصدار القديم من Room، سيحتاج الإصدار الجديد إلى اللاحقة ".Companion" عند الوصول إلى هذه السمات.
- نقل بيانات الغرفة من Java إلى لغة Kotlin (I2724b، b/206858622)
- تم تحويل
paging
ملف ذي صلة فيroom-runtime
من Java إلى Kotlin. (I82fc8، b/206859668) - تمت إضافة واجهة برمجة التطبيقات لقفل العمليات المتعددة واستخدامها على مستوى FrameworkSQLite*، لحماية عملية إنشاء قاعدة البيانات المتعددة العمليات ونقلها للمرة الأولى. (Ied267، b/193182592)
إصلاح الأخطاء
- تمت إضافة توافق المواقع الداخلية في مصادر لغة البرمجة Kotlin.
هذا تغيير بسيط في السلوك في Room حيث سيستخدم اسم المصدر للدوال أثناء مطابقتها مع الخصائص مثل getters/setters
(كان في السابق يستخدم اسم JVM للدالة يختلف عن الدوال/الخصائص الداخلية).
إذا كنت تستخدم تعليقات
@JvmName
التوضيحية المخصّصة لمطابقة قيم getter/seters مع الخصائص الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التعديل (If6531، b/205289020)
الإصدار 2.4.3
الإصدار 2.4.3
27 تموز (يوليو) 2022
تم إصدار "androidx.room:room-*:2.4.3
". يتضمّن الإصدار 2.4.3 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة قد تتسبب في عدم التعرّف على دوال التعليق في Kotlin 1.7 (b/236612358).
الإصدار 2.4.2
الإصدار 2.4.2
23 شباط (فبراير) 2022
تم إصدار "androidx.room:room-*:2.4.2
". يتضمّن الإصدار 2.4.2 عمليات الالتزام هذه.
إصلاح الأخطاء
- يمكنك إصلاح مشكلة إنشاء رمز لدالة Dao
@Transaction
التي تعلّق مع نص ينشئ طريقة واجهة تلقائية بسبب التجميع باستخدام-Xjvm-default=all
أو ما يعادله. (Ia4ce5) - حل خطأ ينشئ الغرفة رمزًا لطريقة طلب البحث من النوع
Array<ByteArray>
(If086e، b/213789489)
الإصدار 2.4.1
الإصدار 2.4.1
12 كانون الثاني (يناير) 2022
تم إصدار "androidx.room:room-*:2.4.1
". يتضمّن الإصدار 2.4.1 هذه الالتزامات.
إصلاح الأخطاء
- تمت إضافة توافق المواقع الداخلية في مصادر لغة البرمجة Kotlin.
هذا تغيير بسيط في السلوك في Room حيث سيستخدم اسم المصدر للدوال أثناء مطابقتها مع الخصائص مثل getters/setters
(كان في السابق يستخدم اسم JVM للدالة يختلف عن الدوال/الخصائص الداخلية).
إذا كنت تستخدم تعليقات
@JvmName
التوضيحية المخصّصة لمطابقة قيم getter/seters مع الخصائص الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التعديل (If6531، b/205289020)
الإصدار 2.4.0
الإصدار 2.4.0
15 كانون الأول (ديسمبر) 2021
تم إصدار "androidx.room:room-*:2.4.0
". يحتوي الإصدار 2.4.0 على هذه الالتزامات.
تغييرات مهمة منذ الإصدار 2.3.0
- عمليات نقل البيانات التلقائية: توفّر Room الآن واجهة برمجة تطبيقات لإنشاء عمليات نقل البيانات تلقائيًا ما دام يتم تصدير المخططات. للسماح لـ Room بمعرفة أنه يجب أن يؤدي إلى إنشاء نقل تلقائي لنقل بيانات موقع جديد، يمكن استخدام
@Database#autoMigrations
للإعلان عن الإصدارات التي سيتم النقل التلقائي منها وإليها. عندما تحتاج غرفة إلى معلومات إضافية بشأن الجداول وعمليات إعادة تسمية الأعمدة أو حذفها، يمكن أن يذكر التعليق التوضيحي@AutoMigration
فئة المواصفات التي تحتوي على هذه الإدخالات. يمكنك الاطّلاع على مستندات@AutoMigration
للحصول على مزيد من التفاصيل. - إدخال التبعية في عمليات النقل التلقائية: تُعد
@ProvidedAutoMigrationSpec
واجهة برمجة تطبيقات جديدة للإقرار بأنه سيتم توفيرAutoMigrationSpec
في وقت التشغيل عبرRoomDatabase.Builder#addAutoMigrationSpec()
. ويسمح هذا لإطار عمل حقن التبعية بتوفير مثل هذه المواصفات عندما تحتاج إلى تبعيات معقدة. - دعم مساعد اختبار نقل البيانات لعمليات النقل التلقائي: تم تحديث
MigrationTestHelper
في الغرفة لدعم عمليات النقل التلقائي من خلال توفير واجهة برمجة تطبيقات إنشائية جديدة تتلقّى فئة قاعدة البيانات قيد الاختبار. يتيح ذلك للمساعد إضافة عمليات النقل التلقائية تلقائيًا بالطريقة نفسها أثناءrunMigrationsAndValidate
. - دعم تقسيم صفحات الغرف: تم إطلاق
androidx.room:room-paging
لتوفير الدعم المحلي للإصدار 3.0 من صفحة النتائج وطلبات بحث الغرف التي تعرضandroidx.paging.PagingSource
. - طرق طلب البحث الارتباطي: تتيح الغرفة الآن استخدام طرق
@Dao
لأنواع إرجاع الخرائط المتعددة، وهي مفيدة لعبارات JOIN. الأنواع المتوافقة للخرائط المتعددة هيMap
وSparseArray
وLongSparseArray
، بالإضافة إلىImmutableMap
وImmutableSetMultimap
وImmutableListMultimap
من Guava.
الإصدار 2.4.0-rc01
1 كانون الأول (ديسمبر) 2021
تم إصدار "androidx.room:room-*:2.4.0-rc01
". يحتوي الإصدار 2.4.0-rc01 على هذه الالتزامات.
الميزات الجديدة
- تحديث تبعية الغرفة على KSP إلى
1.6.0-1.0.1
للتوافق مع لغة Kotlin 1.6
الإصدار 2.4.0-beta02
17 تشرين الثاني (نوفمبر) 2021
تم إصدار "androidx.room:room-*:2.4.0-beta02
". يتضمّن الإصدار 2.4.0-beta02 هذه الالتزامات.
الميزات الجديدة
- لقد وفّرنا إمكانية استخدام SparseArray وlongSparseArray في @MapInfo. (Ic91a2b/138910317)
إصلاح الأخطاء
- لقد أضفنا أداة تحليل Typeconversioner جديدة تأخذ معلومات قابلية القيم الفارغة في الاعتبار في الأنواع. ولأنّ هذه المعلومات لا تتوفّر إلا في برنامج KSP، يتم تفعيلها تلقائيًا في برنامج مشاركة المعلومات (KSP) فقط. وإذا تسببت في أي مشاكل، يمكنك إيقافها من خلال تمرير room.useNullAwareTypeAnalysis=false إلى معالج التعليقات التوضيحية. إذا حدث ذلك، يُرجى الإبلاغ عن خطأ في الملف لأنّه ستتم إزالة هذه العلامة في المستقبل. باستخدام أداة تحليل Typeconversioner الجديدة هذه، نقترح عليك فقط توفير أدوات تُستقبل قيم غير فارغة، حيث إن أداة التحليل الجديدة لديها القدرة على لفّها بفحص فارغ. تجدر الإشارة إلى أنّ هذا الإجراء لا يؤثر في المستخدمين الذين يستخدمون KAPT أو Java باعتبارهما معالجات التعليقات التوضيحية (على عكس KSP)، وليس لديهم معلومات حول القيم الفارغة في الأنواع. (Ia88f9، b/193437407)
- إصلاح خطأ يتسبّب في تعذّر تطبيق Room في التجميع مع ظهور خطأ SQL عندما يتم تعريف كيان FTS باستخدام أداة إنشاء الرموز المميّزة لوحدة ICU (I00db9، b/201753224)
- تم حل مشكلة في عمليات نقل البيانات التلقائية بخصوص عمود جديد تمت إضافته إلى كيان مضمّن بين الإصدارات. (I5fcb1b/193798291)
- لقد حللنا مشكلة تتعلق بأنواع إرجاع طريقة الاستعلام الارتباطية في استعلامات LEFT JOIN. مع هذه التغييرات، وفي حالة وجود تعيين متعدد 1، لن تشتمل المجموعة المعروضة لمفتاح على كائن القيمة غير الصالح إذا لم يتم العثور عليه في المؤشر. إذا لم يتم العثور على قيم صالحة، فسيتم ربط مفتاح بمجموعة فارغة. (Id5552b/201946438)
- تم حل مشكلة النقل التلقائي المتمثلة في تعذّر تخطي الكلمات الرئيسية SQLite في أسماء الأعمدة. (Idbed4b/197133152)
الإصدار 2.4.0-beta01
13 تشرين الأول (أكتوبر) 2021
تم إصدار "androidx.room:room-*:2.4.0-beta01
". يتضمّن الإصدار 2.4.0-beta01 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إضافة أعمدة جديدة في عمليات النقل التلقائي التي كان هناك جدول آخر ضمن عملية النقل التلقائي نفسها يحتوي أيضًا على عمود جديد بالاسم نفسه. (Ia5db5، b/200818663)
- إنّ تنفيذ PagingSource الذي تم إنشاؤه من خلال تقسيم صفحة الغرف يستخدم الآن
queryExecutor
الذي تم تمريره عبرRoomDatabase.Builder
، لذا يمكن إلغاؤه بدلاً منDispatchers.IO
في السابق. (Iae259)
الإصدار 2.4.0-alpha05
29 أيلول (سبتمبر) 2021
تم إصدار "androidx.room:room-*:2.4.0-alpha05
". يحتوي الإصدار 2.4.0-alpha05 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة محوِّل نوع مدمج لـ UUID. (I671e8، b/73132006)
تغييرات واجهة برمجة التطبيقات
تمت إضافة سمة جديدة إلى التعليق التوضيحي Typeconversioners للسماح للمطوّرين بإيقاف محوّلي Enum وUUID المضمنين. وتكون هذه البرامج مفعَّلة تلقائيًا، ولكن يمكنك إيقافها لنطاق معيَّن أو لقاعدة البيانات بأكملها. راجع وثائق Typeconversioners للحصول على التفاصيل. (36ae9e، b/195413406)
إتاحة استخدام المفاتيح/القيم التي لا تتبع POJO لأنواع النتائج المعروضة في "الخرائط المتعددة" في DAO من خلال التعليق التوضيحي
@MapInfo
. (I4d704)
ستكون @MapInfo
مطلوبة عندما يكون المفتاح أو عمود القيمة للخريطة من عمود واحد. ويمكنك الاطّلاع على المثال التالي:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- يجب جعل "
room-paging
" عنصرًا مطلوبًا عند استخدام صفحة "Paging3" مع الغرفة. (إياف)
إصلاح الأخطاء
- حل مشكلة عدم ترتيب نتائج استعلامات الخريطة المتعددة بشكل صحيح عندما يحتوي الاستعلام على عبارة ORDER BY لعمود من مفتاح الخريطة. (I6b887)
المساهمة الخارجية
- تمت إضافة واجهة برمجة تطبيقات جديدة لتحديد ترتيب الفهرس في @Index. وبفضل "نيكيتا زيلونكين". (I033fc)
الإصدار 2.4.0-alpha04
21 تموز (يوليو) 2021
تم إصدار "androidx.room:room-*:2.4.0-alpha04
". يحتوي الإصدار 2.4.0-alpha04 على هذه الالتزامات.
الميزات الجديدة
تتيح الغرفة الآن استخدام طرق
@Dao
لأنواع إرجاع الخرائط المتعددة، وهي مفيدة لعبارات JOIN. الأنواع المتوافقة من الخرائط المتعددة هيMap
إلى جانبImmutableMap
وImmutableSetMultimap
وImmutableListMultimap
من Guava.في ما يلي أمثلة على طلبات بحث الخرائط المتعدّدة:
خريطة العلاقة بين فردين
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>
خريطة العلاقة من واحد إلى متعدد (الخريطة المتعددة العادية)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>
يمكن أيضًا إدراج نتيجة الخريطة المتعدّدة في أنواع الإرجاع غير المتزامنة المتوافقة، مثل
LiveData
أوObservable
من Rx أو الكوروتيناتFlow
.
تقسيم ترتيب الغرف
تم إصدار
androidx.room:room-paging
، ما يوفّر دعمًا للإصدار 3.0 من نظام "تسجيل الصفحات" في الأصل لطلبات البحث في الغرفة التي تعرضandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
يحل هذا العنصر محل تنفيذ
androidx.paging.PagingSource
الذي تم إنشاؤه من خلال الغرفة بأداة مدمجة أعلى واجهات برمجة تطبيقات الترحيل 3.0. يحلِّل تنفيذ PagingSource المفاتيح بشكل مختلف، لذا يجب مراعاة هذا التغيير في السلوك لأي مفتاح يتم تقديمه يدويًا في PagingSource، بما في ذلك firstKey الذي تم تمريره عبر الدالة الإنشائية لـ Pager. سيبدأ تحميل الصفحات بدءًا منKey
بحيث يكونKey
أول عنصر تم تحميله. وينحرف عن السلوك الحالي، حيث يتم التعامل معLoadParams.Refresh.Key
كموضع الانتقال للمستخدم ويتم تحميل العناصر قبل المفتاح وبعده.يُعد العنصر اختياريًا، وسيؤدي إيقاف هذه الميزة إلى الرجوع إلى الدعم الحالي لميزة "نقل البيانات 3.0" التي تم توفيرها في الغرفة 2.3. ومع ذلك، لن يكون هذا العنصر اختياريًا في الإصدار المستقبلي لأولئك الذين يستخدمون Room من خلال الانتقال إلى الإصدار 3.0. للموافقة على ذلك، أضِف العنصر الجديد لنقل بيانات الغرف إلى مسار صفك. إذا كنت تستخدم Gradle، يمكنك إضافة المقتطف التالي إلى Build.gradle:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
إصلاح الأخطاء
- أصلِح مشكلة في عمليات نقل البيانات التلقائية بشأن التعامل مع انتهاكات المفاتيح الخارجية. (b/190113935)
الإصدار 2.4.0-alpha03
16 حزيران (يونيو) 2021
تم إصدار "androidx.room:room-*:2.4.0-alpha03
". يحتوي الإصدار 2.4.0-alpha03 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- عليك تحديث
MigrationTestHelper
في الغرفة لدعم عمليات النقل التلقائية من خلال توفير واجهة برمجة تطبيقات إنشائية جديدة تتلقّى فئة قاعدة البيانات قيد الاختبار. يتيح ذلك للمساعد إضافة عمليات النقل التلقائية تلقائيًا بالطريقة نفسها أثناءrunMigrationsAndValidate
.
إصلاح الأخطاء
تم إصلاح مشكلة في مكتبة SQLite الأصلية في الغرفة لدعم شرائح M1 من Apple. (b/174695268
تم إصلاح مشكلة عدم خروج الغرفة من الخطأ عندما يكون نوع إرجاع دالة @معاملة هو تدفق (I56ddd، b/190075899)
أصلِح مشكلة في عمليات نقل البيانات التلقائية بشأن الفهارس. b/177673291
تعديلات التبعية
- يعتمد دعم برنامج KSP للغرفة الآن على
1.5.10-1.0.0-beta01
في برنامج KSP. (1ecb11، b/160322705)
الإصدار 2.4.0-alpha02
5 أيار (مايو) 2021
تم إصدار "androidx.room:room-*:2.4.0-alpha02
". يحتوي الإصدار 2.4.0-alpha02 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
@ProvidedAutoMigrationSpec
هي واجهة برمجة تطبيقات جديدة للإعلان عن توفيرAutoMigrationSpec
في وقت التشغيل من خلالRoomDatabase.Builder#addAutoMigrationSpec()
. ويسمح هذا لإطار عمل حقن التبعية بتوفير مثل هذه المواصفات عندما تحتاج إلى تبعيات معقدة.
إصلاح الأخطاء
- يمكنك إصلاح مشكلة في عمليات النقل التلقائي التي لا تتم فيها إعادة إنشاء
@DatabaseView
بشكلٍ صحيح.
المساهمة الخارجية
- يمكنك إصلاح مشكلة في "
JournalMode.TRUNCATE
" بالغرفة حيث يتم أحيانًا استدعاء استدعاء "InvalidationTracker
" على نحو غير صالح أو بعد فوات الأوان أو عدم استدعاءه على الإطلاق. شكرًا لـUli Bubenheimer | bubenheimer@users.noreply.github.com
(b/154040286)
الإصدار 2.4.0-alpha01
21 نيسان (أبريل) 2021
تم إصدار "androidx.room:room-*:2.4.0-alpha01
". يحتوي الإصدار 2.4.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
- عمليات نقل البيانات التلقائية: توفّر Room الآن واجهة برمجة تطبيقات لإنشاء عمليات نقل البيانات تلقائيًا ما دام يتم تصدير المخططات. للسماح لـ Room بمعرفة أنه يجب أن يؤدي إلى إنشاء نقل تلقائي لنقل بيانات موقع جديد، يمكن استخدام
@Database#autoMigrations
للإعلان عن الإصدارات التي سيتم النقل التلقائي منها وإليها. عندما تحتاج غرفة إلى معلومات إضافية بشأن الجداول وعمليات إعادة تسمية الأعمدة أو حذفها، يمكن أن يذكر التعليق التوضيحي@AutoMigration
فئة المواصفات التي تحتوي على هذه الإدخالات. اطّلِع على مستندات@AutoMigration
لمزيد من التفاصيل.
إصلاح الأخطاء
- أصلِح المشكلة المتمثلة في التحقُّق من صحة
defaultValue
الذي يتضمن أقواسًا إضافية بشكل غير صحيح من خلال عملية التحقق من مخطط الغرفة. b/182284899
الإصدار 2.3.0
الإصدار 2.3.0
21 نيسان (أبريل) 2021
تم إصدار "androidx.room:room-*:2.3.0
". يحتوي الإصدار 2.3.0 على هذه الالتزامات.
تغييرات مهمة منذ الإصدار 2.2.0
- إتاحة التعداد المضمّن: سيتم الآن استخدام "الغرفة" تلقائيًا لاستخدام محوِّل من النوع "رقم التعداد إلى سلسلة" والعكس صحيح في حال عدم توفير أي خيار. في حال توفُّر محوّل نوع لأحد التعدادات حاليًا، ستعطي الغرفة الأولوية لاستخدامه على المحوِّل التلقائي.
- طلب معاودة الاتصال: توفّر Room الآن واجهة برمجة تطبيقات عامة لمعاودة الاتصال RoomDatabase.QueryCallback، عندما تكون طلبات البحث على وشك تنفيذ الطلبات، وهو ما يمكن أن يكون مفيدًا لتسجيل الدخول إلى إصدارات تصحيح الأخطاء. يمكن ضبط معاودة الاتصال من خلال
RoomDatabase.Builder#setQueryCallback()
. - تحسينات متوفّرة مسبقًا: تتوفّر في الغرفة الآن واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات منشورة مسبقًا. وهذا يسمح بحالات مثل ضغط قاعدة بيانات الحزمة السابقة باستخدام gzip.
- محولات الأنواع المقدَّمة: تحتوي الغرفة الآن على واجهات برمجة تطبيقات لتوفير مثيلات من محوِّلات الأنواع التي يمكن للتطبيق التحكم في إعدادها. لوضع علامة على محوِّل نوع سيتم تقديمه إلى Room، استخدِم التعليق التوضيحي الجديد تقديم @OfferdTypeconversioner.
- دعم RxJava3: تتيح الغرفة الآن أنواع RxJava3. على غرار RxJava2، يمكنك إعلان طرق DAO التي يكون نوع الإرجاع الخاص بها "Flowable" و"Single" و"ربما" و"متكامل". بالإضافة إلى ذلك، يتوفّر عنصر
androidx.room:room-rxjava3
جديد لدعم RxJava3. - دعم الانتقال من صفحة إلى 3.0: ستوفّر الغرفة الآن عمليات تنفيذ لطرق
@Query
التي تتضمّن تعليقات توضيحية يكون نوعها من النوعandroidx.paging.PagingSource
.
الإصدار 2.3.0-rc01
24 آذار (مارس) 2021
تم إصدار "androidx.room:room-*:2.3.0-rc01
". يحتوي الإصدار 2.3.0-rc01 على هذه الالتزامات.
إصلاح الأخطاء
- يمكنك حل مشكلة منعت استهلاك طلبات "تدفق Coroutine المتواصلة" التي أنشأها Room في مجموعة
withTransaction
معلَّقة. (I797bf)
الإصدار 2.3.0-beta03
10 آذار (مارس) 2021
تم إصدار "androidx.room:room-*:2.3.0-beta03
". يتضمّن الإصدار 2.3.0-beta03 هذه الالتزامات.
الميزات الجديدة
- تمت إضافة دعم متزايد إلى عملية التجميع في برنامج KSP. (I031c1، b/176453350)
إصلاح الأخطاء
- تم إصلاح خطأ تسبب في حدوث خطأ ANR أثناء إنشاء PagingSource في سلسلة التعليمات الرئيسية. (I42b74، b/181221318)
- تم إصلاح مستوى رؤية
@ExperimentalRoomApi
ليكون "علنيًا" بدلاً من "خاص" للحزمة. (b/181356119)
المساهمة الخارجية
- اسمح لغرفة بقبول نوع عرض POJO في طريقة DAO التي تتضمن تعليقات توضيحية
@Query
عندما تكون هناك أيضًا تعليقات توضيحية عليها باستخدام@SkipQueryVerification
. ستبذل Room قصارى جهدها لتحويل نتيجة الطلب إلى نوع العرض POJO بالطريقة نفسها التي يتم بها استخدام طريقة DAO ذات التعليقات التوضيحية@RawQuery
. شكرًا لـ Markus Riegel | hey@marcorei.com (I45acb)
الإصدار 2.3.0-beta02
18 شباط (فبراير) 2021
تم إصدار "androidx.room:room-*:2.3.0-beta02
". يتضمّن الإصدار 2.3.0-beta02 هذه الالتزامات.
الميزات الجديدة
تتوفّر الآن في الغرفة الدعم التجريبي لمعالجة رموز لغة البرمجة Kotlin KSP.
يحلّ KSP محلّ KAPT من أجل تشغيل معالِجات التعليقات التوضيحية في الأصل على المحول البرمجي بلغة Kotlin، ما يقلّل بشكل كبير من أوقات الإصدار.
لاستخدام Room مع KSP، يمكنك تطبيق المكوّن الإضافي KSP Gradle واستبدال الإعدادات
kapt
في ملف الإصدار بـksp
. على سبيل المثال، بدلاً منkapt 'androidx.room:room-compiler:2.3.0-beta02'
، استخدِمksp 'androidx.room:room-compiler:2.3.0-beta02'
. اطّلِع على مستندات برنامج مشاركة المعلومات (KSP) للتعرّف على مزيد من التفاصيل.لاحظ أنه نظرًا لأن KSP في مرحلة تجريبية، يوصى بمواصلة استخدام KAPT للترميز الإنتاجي. يمكن تقليل أوقات الإصدار فقط في حال عدم توفُّر معالِجات أخرى تستخدم KAPT. راجع b/160322705 للتعرّف على المشاكل المعروفة.
الإصدار 2.3.0-beta01
27 كانون الثاني (يناير) 2021
تم إصدار "androidx.room:room-*:2.3.0-beta01
". يتضمّن الإصدار 2.3.0-beta01 هذه الالتزامات.
الميزات الجديدة
- قواعد البيانات القابلة للإغلاق تلقائيًا: يمكن الآن لتطبيق Room إغلاق قواعد البيانات التي لا يتم الوصول إليها بعد فترة زمنية معيَّنة. هذه ميزة تجريبية ويمكن تفعيلها من خلال الاتصال بـ
RoomDatabase.Builder#setAutoCloseTimeout()
. هذه الميزة مفيدة للتطبيقات التي تحتوي على قواعد بيانات متعددة.
إصلاح الأخطاء
- أصلِح المشكلة التي تؤدي فيها طُرق Dao باستخدام طُرق
@Update
أو@Delete
متعددة ذات استراتيجيات تعارض مختلفة إلى إنشاء رمز باستخدام إحدى الاستراتيجيتَين فقط، مع تجاهل الاستراتيجية المحدَّدة. (/I0b90d، b/176138543)
الإصدار 2.3.0-alpha04
16 كانون الأول (ديسمبر) 2020
تم إصدار "androidx.room:room-*:2.3.0-alpha04
". يحتوي الإصدار 2.3.0-alpha04 على هذه الالتزامات.
الميزات الجديدة
- توفّر Room الآن واجهة برمجة تطبيقات عامة لمعاودة الاتصال
RoomDatabase.QueryCallback
للاستخدام عندما تكون طلبات البحث على وشك التنفيذ، ويمكن الاستفادة من هذه الواجهة في تسجيل الدخول إلى إصدارات تصحيح الأخطاء. يمكن ضبط معاودة الاتصال من خلالRoomDatabase.Builder#setQueryCallback()
. (Iaa513، b/174478034، b/74877608) - سيتم الآن استخدام الغرفة تلقائيًا لاستخدام محوِّل من النوع "رقم إلى سلسلة" والعكس صحيح في حال عدم توفير أي هدف. في حال توفُّر محوّل نوع لأحد التعدادات حاليًا، ستعطي الغرفة الأولوية لاستخدامه على المحوِّل التلقائي. (b/73132006)
مشكلة معروفة
- إذا كان هناك محوّل من نوع أحادي الاتجاه للقراءة بالفعل للعدد، فقد تستخدم Room عن طريق الخطأ السلسلة المضمنة إلى محول التعداد وهو ما قد لا يكون مرغوبًا فيه. هذه مشكلة معروفة ويمكن حلها من خلال جعلها محوّلاً ثنائي الاتجاه. يُرجى الاطّلاع على: b/175707691
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في إيقاف Room للمعالجة المتزايدة للتعليقات التوضيحية بشكلٍ غير صحيح في إصدارات JDK الجديدة. (b/171387388)
- تم إصلاح مشكلة متعلقة بالعثور على الغرفة للفئة التي تم إنشاؤها عند استخدام محمّلات متعددة للصفوف. نشكرك على إصلاح المشكلة "Serendipity | 892449346@qq.com". (b/170141113)
- تم إصلاح المشكلة المتمثلة في إنشاء غرفة لرمز غير صحيح عندما يكون لـ
@Dao
في لغة البرمجة Kotlin فئة أساسية تكون سماتها العامة أولية في JVM. (b/160258066)
المساهمة الخارجية
- سيتم الآن استخدام "
beginTransactionNonExclusive
" تلقائيًا في الغرفة إذا كان وضع WAL مفعَّلاً وكانت واجهة برمجة التطبيقات 16 أو أكثر. بفضل "أحمد الأول". خليل | ahmedibrahimkhali@gmail.com’! (b/126258791)
الإصدار 2.3.0-alpha03
14 تشرين الأول (أكتوبر) 2020
تم إصدار "androidx.room:room-*:2.3.0-alpha03
". يحتوي الإصدار 2.3.0-alpha03 على هذه الالتزامات.
الميزات الجديدة
تحتوي الغرفة الآن على واجهات برمجة تطبيقات لتوفير مثيلات من أنواع المحولات التي يتمكن التطبيق من التحكم في إعدادها. لوضع علامة على محوِّل نوع سيتم تقديمه إلى Room، استخدِم التعليق التوضيحي الجديد
@ProvidedTypeConverter
. شكرًا لـ "mzgreen yairobbe@gmail.com". (Ie4fa5، b/121067210)تحتوي الغرفة الآن على واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات مجمعة مسبقًا للقراءة من ساحة مشاركات إدخال. وهذا يسمح بحالات مثل ضغط قاعدة بيانات الحزمة السابقة باستخدام gzip. شكرًا لـ "أحمد الحلو ahmedre@gmail.com" (3e6792، b/146911060)
تغييرات واجهة برمجة التطبيقات
تمت إضافة الهدف الناقص إلى التعليق التوضيحي
@ForeignKey
لمنع استخدامه خارج التعليق التوضيحي@Entity
. (Iced1e)أصبح الحقل
mCallbacks
فيRoomDatabase.java
مخفيًا الآن. (d576cb، b/76109329)
إصلاح الأخطاء
عدِّل المستند لتوضيح أنه لا يمكن استخدام Typeconversioners إلا لتحويل الأعمدة / الحقول وليس لتحويل الصفوف. (I07c56، b/77307836)
يُرجى تعديل وحدة معالجة البيانات (DaoProcessor) لإصلاح خطأ في برنامج تجميع البيانات في Dao من خلال نوع متميّز عام يستخدم لغة البرمجة Kotlin. (Ice6bb، b/160258066)
تعديل مستندات إضافة/إزالة طُرق المراقب لتوضيح سلسلة المحادثات (Ifd1d9، b/153948821)
حل مشكلة متعلقة بالتحقق من صحة جداول FTS بشكل غير صحيح والتي أعلنت عن عمود الصف الخاص بها (d62ebc، b/145858914)
المساهمات الخارجية
حلّ مشاكل اللغة التركية (5746e3) وb/68159494
استبدِل
ConcurrentHashMap
داخلRoomDatabase
بـCollections.synchronizedMap()
لتجنُّب المشاكل على Android Lollipop (d1cfc7، b/162431855).أضف استدعاء onOpenPrepackagedDatabase عند نسخ قاعدة بيانات مسبقة التجميع. (I1ba74، b/148934423)
الإصدار 2.3.0-alpha02
22 تموز (يوليو) 2020
تم إصدار "androidx.room:room-*:2.3.0-alpha02
". يحتوي الإصدار 2.3.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
- دعم RxJava3: تتيح الغرفة الآن أنواع RxJava3. على غرار RxJava2، يمكنك إعلان طرق DAO التي يكون نوع الإرجاع الخاص بها "Flowable" و"Single" و"ربما" و"متكامل". بالإضافة إلى ذلك، يتوفّر عنصر
androidx.room:room-rxjava3
جديد لدعم RxJava3. (b/152427884)
تغييرات واجهة برمجة التطبيقات
- أصبح تعريف
@TypeConverter
في فئة كائن Kotlin متاحًا. (b/151110764) - خيار معالجة التعليقات التوضيحية المتزايدة في الغرفة مفعَّل الآن تلقائيًا. (b/112110217)
الإصدار 2.3.0-alpha01
10 حزيران (يونيو) 2020
تم إصدار "androidx.room:room-*:2.3.0-alpha01
". يحتوي الإصدار 2.3.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
دعم الانتقال من صفحة إلى 3.0: ستوفّر الغرفة الآن عمليات تنفيذ للطرق
@Query
التي تتضمّن تعليقات توضيحية يكون نوعها من النوعandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
تغييرات واجهة برمجة التطبيقات
@RewriteQueriesToDropUnusedColumns
هو تعليق توضيحي جديد مناسب يجعل غرفة تُعيد كتابة إسقاط "*" في طلب بحث بحيث تتم إزالة الأعمدة غير المستخدمة في النتيجة.- تم إيقاف خيار المعالج
room.expandProjection
نهائيًا الآن. يمكنك استخدام@RewriteQueriesToDropUnusedColumns
كبديل لطلبات تحسين الغرفة من خلال إسقاط النجوم. تجدر الإشارة إلى أنّ@RewriteQueriesToDropUnusedColumns
لا يحلّ محلّ حل تعارض الأعمدةroom.expandProjection
المقدَّم في ما يتعلق بأنواع النتائج التي تحتوي على حقول@Embedded
.
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في عدم اكتشاف Room بشكل صحيح لإصدار JDK المستخدَم لتفعيل معالج التعليقات التوضيحية التزايدية. شكرًا لـ Blaz Solar (me@flaz.solar) (b/155215201)
- يتم الآن تضمين تبعية ANTLR مع معالج التعليقات التوضيحية لتجنب تعارض الإصدارات مع المعالجات الأخرى التي تستخدم أيضًا ANTLR. (b/150106190)
الإصدار 2.2.6
الإصدار 2.2.6
16 كانون الأول (ديسمبر) 2020
تم إصدار "androidx.room:room-*:2.2.6
". يتضمّن الإصدار 2.2.6 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في إيقاف Room للمعالجة المتزايدة للتعليقات التوضيحية بشكلٍ غير صحيح في إصدارات JDK الجديدة. (b/171387388)
الإصدار 2.2.5
الإصدار 2.2.5
18 آذار (مارس) 2020
تم إصدار "androidx.room:room-*:2.2.5
". يحتوي الإصدار 2.2.5 على هذه الالتزامات.
إصلاح الأخطاء
- إنشاء
MultiInstanceInvalidationService
directBootAware بفضل "Mygod contact-git@mygod.be" (b/148240967) - تم إصلاح خطأ قد يؤدي إلى تعطُّل عندما كانت ميزة إلغاء المثيلات المتعددة مفعَّلة وكانت قاعدة البيانات تحتوي على كيان FTS. (b/148969394)
- تم إصلاح مشكلة عند تحميل مكتبات SQLite الأصلية في معالج التعليقات التوضيحية للغرفة والتي قد تؤدي إلى تعطُّل المحول البرمجي بسبب التجميعات المتوازية. (b/146217083)
الإصدار 2.2.4
الإصدار 2.2.4
19 شباط (فبراير) 2020
تم إصدار androidx.room:room-common:2.2.4
وandroidx.room:room-compiler:2.2.4
وandroidx.room:room-guava:2.2.4
وandroidx.room:room-ktx:2.2.4
وandroidx.room:room-migration:2.2.4
وandroidx.room:room-runtime:2.2.4
وandroidx.room:room-rxjava2:2.2.4
وandroidx.room:room-testing:2.2.4
. يتضمّن الإصدار 2.2.4 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة تعليق المعاملات التي تؤدي إلى توقفها في حال تم إلغاء الكوروتين بسرعة قبل بدء المعاملة فعليًا. (b/148181325)
- تم إصلاح مشكلة استخدام @Generated بشكل خاطئ عند الإنشاء باستخدام JDK 9. (b/146538330)
- تم إصلاح المشكلة المتمثلة في إنشاء غرفة لرمز غير صحيح عندما تتضمن واجهة DAO في لغة Kotlin دالة ملموسة. (b/146825845)
الإصدار 2.2.3
الإصدار 2.2.3
18 كانون الأول (ديسمبر) 2019
تم إصدار "androidx.room:room-*:2.2.3
". يحتوي الإصدار 2.2.3 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح خطأ يفشل فيه غرفة Room في التحقق من صحة قاعدة بيانات لم تخضع لأي عملية نقل بيانات وتحتوي على تجزئة قديمة مع فهارس في مخططها. (b/139306173)
الإصدار 2.2.2
الإصدار 2.2.2
20 تشرين الثاني (نوفمبر) 2019
تم إصدار "androidx.room:room-*:2.2.2
". يحتوي الإصدار 2.2.2 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح خطأ كان سيؤدي جمع علاقة فردية تحتوي على أكثر من 999 صفًا إلى عرض الغرفة للعناصر ذات الصلة الفارغة. (b/143105450)
الإصدار 2.2.1
الإصدار 2.2.1
23 تشرين الأول (أكتوبر) 2019
تم إصدار "androidx.room:room-*:2.2.1
". يحتوي الإصدار 2.2.1 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يتسبب في ظهور تحذير لـ Room على نحو خاطئ بشأن
CURSOR_MISMATCH
عند تشغيل خيار المحول البرمجيexpandProjection
. (b/140759491) - تمت إضافة آلية إعادة محاولة للتعامل مع المكتبة الأصلية المفقودة والتي يتم استخدامها للتحقّق من طلبات البحث أثناء وقت التجميع.
الإصدار 2.2.0
الإصدار 2.2.0
9 تشرين الأول (أكتوبر) 2019
تم إصدار "androidx.room:room-*:2.2.0
". يحتوي الإصدار 2.2.0 على هذه الالتزامات.
تغييرات مهمة بعد الإصدار 2.1.0
- قاعدة بيانات تتضمّن حزمًا مسبقًا: تتوفَّر الآن واجهتا برمجة تطبيقات جديدتان في
RoomDatabase.Builder
لإنشاءRoomDatabase
وفقًا لملف قاعدة بيانات تمت تعبئته مسبقًا. تُستخدم السمةcreateFromAsset()
عندما يكون ملف قاعدة البيانات الذي تتم تعبئته تلقائيًا في مجلد "مواد العرض" لحزمة APK، بينما يُستخدم الرمزcreateFromFile()
عندما يكون الملف في موقع عشوائي. وتؤدي استخدامات واجهة برمجة التطبيقات هذه إلى تغيير سلوك عمليات نقل البيانات التخريبية، بحيث تحاول Room أثناء عملية نقل احتياطية إعادة نسخ قاعدة البيانات التي تمت تعبئتها تلقائيًا إن توفّرت، وإلا ستلجأ فقط إلى إسقاط جميع الجداول وإعادة إنشائها. b/62185732 - القيم التلقائية للمخطط: تحتوي
@ColumnInfo
الآن على سمة جديدةdefaultValue
يمكن استخدامها لتحديد القيمة التلقائية لعمود. تُعد القيم التلقائية جزءًا من مخطط قاعدة بيانات وسيتم التحقّق منها أثناء عمليات نقل البيانات في حال تحديدها. b/64088772 - علاقات كثيرة إلى كثيرة: أصبح لـ
@Relation
الآن الموقعassociateBy
الجديد الذي يضم تعليقًا توضيحيًا جديدًا@Junction
، ويُستخدَم للإشارة إلى علاقة يجب استيفاؤها من خلال جدول تقاطعات (يُعرف أيضًا باسم جدول الضم). b/69201917 - العلاقات الأحادية: تم إلغاء القيد المفروض على حقول POJO التي تم وضع تعليقات توضيحية عليها بالرمز
@Relation
لتكون من النوعList
أوSet
، ما سمح فعليًا بتمثيل العلاقات الأحادية القيمة.b/62905145 - الكيان المستهدف: تحتوي الآن تعليقات DAO التوضيحية
@Insert
و@Update
و@Delete
على خاصية جديدةtargetEntity
تسمح بتحديد الجدول المستهدف الذي من المفترض أن تتّخذ طريقة DAO عملاً عليه. ويسمح هذا بأن تكون معلمات طرق DAO هذه عناصر POJO عشوائية سيتم تفسيرها على أنها كيانات جزئية. عمليًا، يتيح ذلك عمليات الإدراج والحذف والتحديثات الجزئية. b/127549506 - تدفق الكوروتينات:
@Query
يمكن أن تكون طرق DAO الآن من نوع العرضFlow<T>
. سيعيد التدفق المعروض مجموعة جديدة من القيم إذا تم إبطال صلاحية جداول الملاحظة في طلب البحث. يعد تعريف دالة DAO بنوع عرضChannel<T>
خطأً، وبدلاً من ذلك، يشجعك Room على استخدامFlow
ثم استخدام الدوال المجاورة لتحويلFlow
إلىChannel
. b/130428884 - معالِج التعليقات التوضيحية الإضافية في Gradle: أصبحت Room الآن معالجًا للتعليقات التوضيحية من Gradle
ويمكن تفعيل ميزة زيادة التعليقات من خلال خيار
المعالج
room.incremental
. يُرجى الاطّلاع على خيارات أداة تحويل الغرف للحصول على مزيد من المعلومات. إذا واجهت أي مشاكل، يُرجى الإبلاغ عن خطأ هنا. ونحن نخطط لتفعيل إمكانية الزيادة تلقائيًا في إصدار مستقبلي وثابت. b/112110217 - توسيع التوقّعات: تمت إضافة خيار برنامج تجميع تجريبي جديد
room.expandProjection
يؤدي إلى إعادة كتابة طلب بحث باستخدام إسقاط نجمة لكي يحتوي فقط على الأعمدة في النوع المعروض POJO. على سبيل المثال، بالنسبة إلى طريقة DAO باستخدام@Query("SELECT * FROM Song")
التي تعرض طلب شراء (POJO) باسمSongIdAndTitle
مع حقلَين فقط. بعد ذلك، ستعيد شركة Room كتابة طلب البحث إلىSELECT id, title FROM Song
بحيث يتم استرجاع الحدّ الأدنى من مجموعة الأعمدة التي تلبّي نوع الإرجاع. يؤدي ذلك بشكل أساسي إلى إزالة تحذيرCURSOR_MISMATCH
الذي يظهر عندما يعرض طلب البحث أعمدة إضافية لا تتطابق مع أي حقل في نوع POJO الذي يتم عرضه.
الإصدار 2.2.0-rc01
5 أيلول (سبتمبر) 2019
تم إصدار "androidx.room:room:2.2.0-rc01
". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.
ما مِن تغييرات علنية منذ الغرفة 2.2.0-beta01
.
الإصدار 2.2.0-beta01
22 آب (أغسطس) 2019
تم إصدار "androidx.room:room-*:2.2.0-beta01
". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يتوقّف فيه طلب بحث "تدفق الكوروتين" عن إعادة إرسال قيم جديدة بعد فترة زمنية معيّنة. (b/139175786)
- تم إصلاح خطأ كان لا يقبل Room رمز تجزئة مخطط قديم أثناء فتح قاعدة بيانات لم تخضع لعملية نقل بيانات منذ الغرفة 1.0، ما تسبّب في تعطُّل وقت التشغيل بسبب مخطط غير صالح. (b/139306173)
الإصدار 2.2.0-alpha02
7 آب (أغسطس) 2019
تم إصدار "androidx.room:room-*:2.2.0-alpha02
". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.
الميزات الجديدة
- تدفق الكوروتينات:
@Query
يمكن أن تكون طرق DAO الآن من نوع العرضFlow<T>
. سيعيد التدفق المعروض مجموعة جديدة من القيم إذا تم إبطال صلاحية جداول الملاحظة في طلب البحث. يعد تعريف دالة DAO بنوع عرضChannel<T>
خطأً، وبدلاً من ذلك، يشجعك Room على استخدامFlow
ثم استخدام الدوال المجاورة لتحويلFlow
إلىChannel
. b/130428884 - توسيع التوقّعات: تمت إضافة خيار برنامج تجميع تجريبي جديد
room.expandProjection
يؤدي إلى إعادة كتابة طلب بحث باستخدام إسقاط نجمة لكي يحتوي فقط على الأعمدة في النوع المعروض POJO. على سبيل المثال، بالنسبة إلى طريقة DAO باستخدام@Query("SELECT * FROM Song")
التي تعرض طلب شراء (POJO) باسمSongIdAndTitle
مع حقلَين فقط. بعد ذلك، ستعيد شركة Room كتابة طلب البحث إلىSELECT id, title FROM Song
بحيث يتم استرجاع الحدّ الأدنى من مجموعة الأعمدة التي تلبّي نوع الإرجاع. يؤدي ذلك بشكل أساسي إلى إزالة تحذيرCURSOR_MISMATCH
الذي يظهر عندما يعرض طلب البحث أعمدة إضافية لا تتطابق مع أي حقل في نوع POJO الذي يتم عرضه. onDestructiveMigrate
هي واجهة برمجة تطبيقات جديدة لرد الاتصال تمت إضافتها إلىRoomDatabase.Callback
في الحالات التي يتم فيها نقل بيانات غرفة بيانات بشكل مدمر. b/79962330
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في إنشاء غرفة لرمز غير صحيح باستخدام طريقة كدالة ضبط الحقل عندما يكون الحقل محميًا. b/136194628
- تم إصلاح خطأ تسبب في أن يُنشئ نظام غير صالح لخطأ (NPE) في عملية ثانية عند تفعيل إبطال المثيلات المتعددة وتم إنهاء خدمة الإبطال. b/137454915
- تم إصلاح خطأ عدم تعرّف Room بشكل صحيح على نوع إرجاع
دالة التعليق المكتسبة التي تم التعليق عليها باستخدام
@RawQuery
. b/137878827 - تم تعديل الرمز الذي تم إنشاؤه لـ
@Relation
عندما يكون المفتاح المرتبط من النوع BLOB لاستخدامByteBuffer
قابل للمقارنة. b/137881998 - تم إصلاح الخطأ الذي كان يشكو فيه Room من عدم وجود قيم مجموعة البيانات في POJO
التي يتم استخدامها كمعلَمات عناصر جزئية لـ
@Insert
و@Update
و@Delete
. b/138664463 - تم إصلاح الخطأ الذي كان يشكو فيه Room من عدم وجود رموز get وseters
لعمود تم تجاهله عبر
@Entity
عند استخدام فئة الكيان في طرق DAO معينة. b/138238182 - تم إصلاح خطأ كانت فيه الغرفة لا تحوّل بشكل صحيح وسيطات الربط المُسمّاة إلى وسيطات موضعية تتسبب في استثناء وقت التشغيل عند تنفيذ طلب بحث يحتوي على معلَمات معاد استخدامها. b/137254857
الإصدار 2.2.0-alpha01
10 تموز (يوليو) 2019
الميزات الجديدة
- قاعدة بيانات تتضمّن حزمًا مسبقًا: تتوفَّر الآن واجهتا برمجة تطبيقات جديدتان في
RoomDatabase.Builder
لإنشاءRoomDatabase
وفقًا لملف قاعدة بيانات تمت تعبئته مسبقًا. تُستخدم السمةcreateFromAsset()
عندما يكون ملف قاعدة البيانات الذي تتم تعبئته تلقائيًا في مجلد "مواد العرض" لحزمة APK، بينما يُستخدم الرمزcreateFromFile()
عندما يكون الملف في موقع عشوائي. وتؤدي استخدامات واجهة برمجة التطبيقات هذه إلى تغيير سلوك عمليات نقل البيانات التخريبية، بحيث تحاول Room أثناء عملية نقل احتياطية إعادة نسخ قاعدة البيانات التي تمت تعبئتها تلقائيًا إن توفّرت، وإلا ستلجأ فقط إلى إسقاط جميع الجداول وإعادة إنشائها. b/62185732 - القيم التلقائية للمخطط: تحتوي
@ColumnInfo
الآن على سمة جديدةdefaultValue
يمكن استخدامها لتحديد القيمة التلقائية لعمود. تُعد القيم التلقائية جزءًا من مخطط قاعدة بيانات وسيتم التحقّق منها أثناء عمليات نقل البيانات في حال تحديدها. b/64088772ملاحظة: إذا كان مخطط قاعدة البيانات يحتوي على قيم تلقائية، مثل تلك التي تمت إضافتها عبر
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
، وقرّرت تحديد قيم تلقائية من خلال@ColumnInfo
إلى الأعمدة نفسها، قد تحتاج إلى إجراء عملية نقل بيانات للتحقق من صحة القيم التلقائية غير المحتسبة. يُرجى الاطّلاع على صفحة عمليات نقل بيانات الغرف للحصول على مزيد من المعلومات. - علاقات كثيرة إلى كثيرة: أصبح لـ
@Relation
الآن الموقعassociateBy
الجديد الذي يضم تعليقًا توضيحيًا جديدًا@Junction
، ويُستخدَم للإشارة إلى علاقة يجب استيفاؤها من خلال جدول تقاطعات (يُعرف أيضًا باسم جدول الضم). b/69201917 - العلاقات الأحادية: تم إلغاء القيد المفروض على حقول POJO التي تم وضع تعليقات توضيحية عليها بالرمز
@Relation
لتكون من النوعList
أوSet
، ما سمح فعليًا بتمثيل العلاقات الأحادية القيمة.b/62905145 - الكيان المستهدف: تحتوي الآن تعليقات DAO التوضيحية
@Insert
و@Update
و@Delete
على خاصية جديدةtargetEntity
تسمح بتحديد الجدول المستهدف الذي من المفترض أن تتّخذ طريقة DAO عملاً عليه. ويسمح هذا بأن تكون معلمات طرق DAO هذه عناصر POJO عشوائية سيتم تفسيرها على أنها كيانات جزئية. عمليًا، يتيح ذلك عمليات الإدراج والحذف والتحديثات الجزئية. b/127549506 - معالِج التعليقات التوضيحية الإضافية في Gradle: أصبحت Room الآن معالجًا للتعليقات التوضيحية من Gradle
ويمكن تفعيل ميزة زيادة التعليقات من خلال خيار
المعالج
room.incremental
. يُرجى الاطّلاع على خيارات أداة تحويل الغرف للحصول على مزيد من المعلومات. إذا واجهت أي مشاكل، يُرجى الإبلاغ عن خطأ هنا. ونحن نخطط لتفعيل إمكانية الزيادة تلقائيًا في إصدار مستقبلي وثابت. b/112110217
إصلاح الأخطاء
- لن تنشر الغرفة
EmptySetResultException
بعد ذلك إلى معالج الأخطاء العام عند التخلص من دفق Rx لطلب بحث قبل اكتماله.b/130257475 - تم إصلاح الخطأ المتمثل في عرض Room لرسالة خطأ غير صحيحة عندما لا يكون لدالة DAO
التعليق التوضيحية التي تم التعليق عليها باستخدام
@RawQuery
نوع عرض. b/134303897 - لن تنشئ Room محوّلات DAO بأنواع أوّلية. b/135747255
الإصدار 2.1.0
الإصدار 2.1.0
13 حزيران (يونيو) 2019
تم إلغاء حجز الغرفة 2.1.0 بدون أي تغييرات من 2.1.0-rc01
. يمكن الاطّلاع هنا على الالتزامات المضمَّنة في الإصدار.
تغييرات مهمة منذ الإصدار 2.0.0
- FTS: تتيح الغرفة الآن للكيانات التي تحتوي على جدول ربط
FTS3 أو FTS4. أصبح بالإمكان الآن إضافة تعليقات توضيحية إلى الصفوف التي أُضيفت تعليقات توضيحية باستخدام
@Entity
باستخدام@Fts3
أو@Fts4
للإعلان عن صف باستخدام جدول بحث يتضمّن نصًا كاملاً للتعيين. تتوفّر خيارات FTS لمزيد من التخصيص من خلال طرق التعليق التوضيحي. - الملفات الشخصية: تتيح الغرفة الآن الإعلان عن فئة كطلب بحث مخزَّن، وهو ما يُعرف أيضًا باسم طريقة عرض، باستخدام التعليق التوضيحي
@DatabaseView
. - الإجراءات الروتينية: يمكن الآن أن تكون طرق DAO تعليق الدوال. عليك تضمين
room-ktx
في العناصر الاعتمادية للاستفادة من هذه الوظيفة. توفر أداة ktx أيضًا دالة الإضافةRoomDatabase.withTransaction
لإجراء معاملات قاعدة البيانات داخل الكوروتين. - القيمة التلقائية: تتيح الغرفة الآن الإعلان عن فئات
AutoValue
التي تتضمن تعليقات توضيحية ككيانات وعمليات POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة
@PrimaryKey
و@ColumnInfo
و@Embedded
و@Relation
في الطرق المجرّدة للفئة التي تمت إضافة تعليقات توضيحية إليها. يُرجى العلم أنّه يجب أيضًا أن تكون هذه التعليقات التوضيحية مصاحبة@CopyAnnotations
لكي تفهمها جيدًا. - دعم إضافي غير متزامن: إن طرق DAO التي تم التعليق عليها باستخدام
@Insert
أو@Delete
أو@Update
، إلى جانب عبارات@Query
التي تحتوي على عباراتINSERT
أوDELETE
أوUPDATE
، تتوافق الآن مع أنواع عرض RxCompletable
وSingle
وMaybe
ونوع العرضListenableFuture
من Guava، ويمكن أيضًا أن تكون دوال تعليق. enableMultiInstanceInvalidation
هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لتفعيل الإلغاء عبر مثيلات متعددة من RoomDatabase باستخدام ملف قاعدة البيانات نفسه.fallbackToDestructiveMigrationOnDowngrade
هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لإعادة إنشاء قاعدة البيانات تلقائيًا في حال حدوث عملية الرجوع إلى إصدار سابق.ignoredColumns
هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي@Entity
، ويمكن استخدامها لسرد الحقول التي تم تجاهلها حسب الاسم.- ستستخدم الغرفة الآن الدالة الإنشائية الأساسية للغة Kotlin بشكل صحيح في فئات البيانات، مع تجنُّب الحاجة إلى تعريف الخصائص بصفتها
vars
.
الإصدار 2.1.0-rc01
29 أيار (مايو) 2019
إصلاح الأخطاء
- تم إصلاح خطأ إعداد الغرفة الذي قد يحدث بسبب ضبط temp_store الذي تم إعداده مسبقًا. b/132602198
- تم إصلاح تحذير استخدام الاقتباس المزدوج للمستخدمين الذين لديهم الإصدار 3.27.0 من SQLite والإصدارات الأحدث. b/131712640
- تم إصلاح الخطأ الذي يتسبّب فيه حدث إبطال حالة الأحرف في حدوث تعطُّل عند حدوث عدة عمليات تحقّق من إبطال التوازي. b/133457594
الإصدار 2.1.0-beta01
7 أيار (مايو) 2019
تم إصدار androidx.room 2.1.0-beta01
بدون أي تغييرات من الإصدار 2.1.0-alpha07. يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.
الإصدار 2.1.0-alpha07
25 نيسان (أبريل) 2019
التغييرات في واجهات برمجة التطبيقات أو السلوك
- تم تغيير دالة الامتداد
RoomDatabase.withTransaction
بحيث لا تأخذ مجموعة وظائف عندما يكونCoroutineScope
كمستلم. يمنع ذلك تخطّي برنامج تضمينcoroutineScope { }
الإضافي المطلوب لتشغيل العناصر في حظر المعاملات بشكل متزامن.
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في عدم مطابقة Room لدالة TypeAdapter لدالة Kotlin DAO التي تحتوي على مَعلمة من نوع المجموعة. b/122066791
الإصدار 2.1.0-alpha06
22 آذار (مارس) 2019
التغييرات في واجهات برمجة التطبيقات أو السلوك
- أصبحت طلبات البحث عن المعاملات غير المتزامنة الآن تسلسلية، لذلك لن تستخدم Room أكثر من سلسلة تعليمات واحدة لتنفيذ معاملات قاعدة البيانات.
تمت إضافة
RoomDatabase.Builder.setTransactionExecutor(Executor)
للسماح بإعداد جهة التنفيذ ليتم استخدامها في المعاملات. - لن يدمج
RoomDatabase.runInTransaction(Callable)
الاستثناءات المحدَّدة في RuntimeExceptions. b/128623748
إصلاح الأخطاء
- تم إصلاح خطأ سيتوقف فيه أداة تتبع الإبطال عن مراقبة جدول المحتوى إذا تمت إضافة مراقبين لكل من جدول المحتوى وجدول FTS للمحتوى الخارجي. b/128508917
- تم تحديث قواعد SQLite في الغرفة لتتناسب مع الإصدار 3.24.0 من SQLite. b/110883668
الإصدار 2.1.0-alpha05
13 آذار (مارس) 2019
الميزات الجديدة
- تسمح لك دالة الإضافة
RoomDatabase.withTransaction
بإجراء معاملات قاعدة البيانات بأمان داخل الكوروتين. تتوفّر إضافات الغرف، إلى جانب إتاحة الكوروتيين، في عنصرroom-ktx
. - يمكن الآن أن تكون طرق DAO غير المجردة التي تم التعليق عليها بـ
@Transaction
دوال تعليق. b/120241587
التغييرات في واجهات برمجة التطبيقات أو السلوك
- تمت إعادة تسمية العنصر
room-coroutines
إلىroom-ktx
بعد تسمية العناصر الأخرى المتوفّرة في Androidx. - تم إيقاف واجهات برمجة التطبيقات
beginTransaction
وsetTransactionSuccessful
وendTransaction
فيRoomDatabase
لصالحrunInTransaction
ودالة الإضافةroom-ktx
withTransaction
.
إصلاح الأخطاء
- إصلاح خطأ كان يتم فيه تجاهل وسيطات أداة إنشاء الرموز المميّزة إذا كانت أداة إنشاء الرموز المميّزة بسيطة. b/125427014
- تم إصلاح خطأ يتسبّب في عدم تمكّن Room من التعرّف بشكل صحيح على دوال التعليق التي تستخدم المعلمات التي يكون نوعها فئة داخلية. b/123767877
- تم إصلاح خطأ كان يتسبب في تأجيل طريقة DAO
@Query
باستخدام عباراتINSERT
أوUPDATE
أوDELETE
في إعداد الطلب في سلسلة التعليمات الرئيسية. b/123695593 - تم إصلاح أخطاء مختلفة حيث ينشئ Room رمزًا غير صحيح لبعض دوال التعليق. b/123466702 وb/123457323
- تم إصلاح خطأ يتمثّل في عدم منع الاستخدام المتوقف للطرق بشكل صحيح في الرمز الذي تم إنشاؤه. b/117602586
- تم تحديث تبعية الغرفة لنظام androidx.sqlite إلى الإصدار 1.0.2، والتي تحتوي على إصلاحات للتعامل مع قواعد البيانات التالفة بشكل صحيح. b/124476912
المشاكل المعروفة
- تعتمد الغرفة 2.1.0-alpha05 على عناصر
kotlinx-metadata-jvm
غير المتاحة حاليًا في Maven Central (KT-27991). ويمكن حل هذه التبعية عن طريق إضافةmaven { url "https://kotlin.bintray.com/kotlinx/" }
إلى مستودعات مشروعك.
الإصدار 2.1.0-alpha04
25 كانون الثاني (يناير) 2019
الميزات الجديدة
- يمكن الآن لطرق DAO التي تمت إضافة تعليقات توضيحية إليها باستخدام
@Query
والتي تحتوي على عباراتINSERT
أوUPDATE
أوDELETE
عرض أنواع غير متزامنةSingle
وMayble
وCompletable
وListenableFuture
. بالإضافة إلى ذلك، يمكن أن تكون دوالّ تعليق الدوال. b/120227284
التغييرات في واجهات برمجة التطبيقات أو السلوك
- ستعرض Room رسالة خطأ الآن إذا كانت طريقة DAO غير المجدية التي تم التعليق عليها باستخدام
@Transaction
تعرض نوعًا غير متزامن، مثلSingle
أوMayble
أوCompletable
أوLiveData
أوListenableFuture
. ولأنّ المعاملات تقتصر على سلسلة تعليمات، من المستحيل حاليًا أن تبدأ الغرفة معاملة وينهيها حول دالة قد تُجري طلبات بحث في سلاسل محادثات مختلفة. b/120109336 - إنّ الترميزَين
OnConflictStrategy.FAIL
وOnConflictStrategy.ROLLBACK
هما@Deprecated
بسبب عدم عملهما على النحو المطلوب مع روابط SQLite الحالية في Android. b/117266738
إصلاح الأخطاء
- تم إصلاح خطأ لا تستخدم غرفة فيه محوِّل Typeconversion من نوع الإرجاع بشكل صحيح إذا كانت طريقة DAO دالة تعليق. b/122988159
- تم إصلاح الخطأ المتمثل في تحديد Room بشكل خاطئ لوظائف التعليق الموروثة على أنها غير معلقة. b/122902595
- تم إصلاح خطأ كانت فيه غرفة ستنشئ رمزًا غير صحيح عندما يكون الحقل
@Embedded
في أحد الصفوف الرئيسية ويتم استخدامه في صفوف فرعية متعددة. b/121099048 - تم إصلاح مشكلة توقُّف قاعدة البيانات عند استدعاء دوال تعليق DAO بين
beginTransaction()
وendTransaction()
. b/120854786
الإصدار 2.1.0-alpha03
4 كانون الأول (ديسمبر) 2018
تغييرات واجهة برمجة التطبيقات
- أصبحت قيمة FTS
tokenizer
في@Fts3
/@Fts4
الآن تتخذ سلسلة بدلاً من Enum. يسمح هذا الإجراء باستخدام برامج الرموز المميّزة المخصّصة بواسطة Room. لا تزال الرموز المميّزة المضمّنة محدّدة فيFtsOptions
كثوابت السلسلة. b/119234881
الميزات الجديدة
- الإجراءات الروتينية: يمكن الآن أن تكون طرق DAO تعليق الدوال. لإتاحة تعليق الدوال في الغرفة، تم إصدار عنصر جديد،
room-coroutines
. b/69474692 - طرق DAO التي تم التعليق عليها باستخدام
@Insert
أو@Delete
أو@Update
تتيح الآن استخدامListenableFuture
كنوع عرض. b/119418331
إصلاح الأخطاء
- تم إصلاح خطأ كانت فيه محاولة Room عن طريق الخطأ للعثور على دالة إنشائية تحتوي على أعمدة في السمة
ignoredColumns
في@Entity
. b/119830714 - تم إصلاح خطأ كان لا يُدرج فيه Room علامة على معلَمات طريقة DAO كنهائية في عملية التنفيذ التي يتم إنشاؤها. b/118015483
- تم إصلاح الخطأ المتمثل في تعطل معالج الغرفة عند الإبلاغ عن خطأ في طلب بحث يحتوي على رموز خاصة. b/119520136
- تم إصلاح خطأ كان يرفض غرفة ترفض عمليات تنفيذ
Collection
المختلفة كوسيطات لتعبيرIN
. b/119884035 - تم إصلاح الخطأ المتمثل في حصول بيانات LiveData التي يتم إرجاعها من Room على بيانات غير صالحة تم جمعها عندما تتم ملاحظتها على نحو دائم، ما أدى إلى توقفها عن إرسال بيانات جديدة. b/74477406
- تم تحديث قفل
RoomDatabase
للتقليل من تزايد الطلب على دالة الاستبعاد المتبادل. b/117900450
الإصدار 2.1.0-alpha02
30 تشرين الأول (أكتوبر) 2018
الميزات الجديدة
- تمت إضافة إمكانية الإشارة إلى
@DatabaseView
في@Relation
. b/117680932
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في إجراء غرفة لإدخال/إخراج القرص في سلسلة التعليمات الرئيسية عند الاشتراك والتخلص من نوع إرجاع Rx. b/117201279
- تم إصلاح خطأ تعذُّر العثور على محوِّل نوع مناسب لحقل في فئة كيان Kotlin. b/111404868
- تم إصلاح خطأ يتمثّل في إنشاء غرفة رمز غير صحيح لتطبيق واجهة
DAO
تحتوي على طريقة تلقائية بلغة Kotlin لا تحتوي على أي وسيطات. b/117527454 - تم تحديث المحلل اللغوي لقواعد SQLite في الغرفة، مع حل مشكلة في الأداء قد تؤدي إلى أوقات إصدار طويلة. b/117401230
الإصدار 2.1.0-alpha01
8 تشرين الأول (أكتوبر) 2018
الميزات الجديدة
- FTS: تتيح الغرفة الآن الكيانات التي تحتوي على جدول FTS3 أو FTS4 للتعيين. يمكن الآن إضافة تعليقات توضيحية إلى الصفوف التي أُضيفت تعليقات توضيحية باستخدام
@Entity
باستخدام@Fts3
أو@Fts4
للإعلان عن صف يتضمّن جدول بحث يتضمّن النص الكامل للتعيين. تتوفّر خيارات FTS لمزيد من التخصيص من خلال طرق التعليق التوضيحي. b/62356416 - طرق العرض: تتيح الغرفة الآن الإعلان عن فئة كطلب بحث مخزَّن، وهو ما يُعرف أيضًا باسم طريقة عرض باستخدام التعليق التوضيحي @DatabaseView. b/67033276
- القيمة التلقائية: تتيح الغرفة الآن الإعلان عن الفئات التي تتضمّن تعليقات توضيحية ضمن القيمة التلقائية ككيانات وعناصر POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة
@PrimaryKey
و@ColumnInfo
و@Embedded
و@Relation
في الطرق المجرّدة للفئة التي تمت إضافة تعليقات توضيحية إليها. يجب أن تكون هذه التعليقات التوضيحية مصحوبةً بـ@CopyAnnotations
لكي تفهمها الغرفة بشكل صحيح. b/62408420 - دعم إضافي لأنواع إرجاع Rx: أصبحت طرق DAO التي تم التعليق عليها باستخدام
@Insert
أو@Delete
أو@Update
تتوافق الآن مع أنواع عرض RxCompletable
وSingle<T>
وMaybe<T>
. b/63317956 - الأنواع غير القابلة للتغيير في
@Relation
: كانت غرفة تطلب في السابق أن تكون حقول@Relation
التي تتضمّن تعليقات توضيحية قابلة للضبط ولكن يمكن الآن أن تكون مَعلمات إنشائية. enableMultiInstanceInvalidation
: هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لتفعيل إمكانية إبطالها في حالات متعددة من RoomDatabase باستخدام ملف قاعدة البيانات نفسه. تعمل آلية إبطال المثيلات المتعددة هذه أيضًا في عمليات متعددة. b/62334005fallbackToDestructiveMigrationOnDowngrade
: هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لإعادة إنشاء قاعدة البيانات تلقائيًا في حال الرجوع إلى إصدار سابق. b/110416954ignoredColumns
: هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي@Entity
يمكن استخدامها لإدراج الحقول التي تم تجاهلها حسب الاسم. يفيد هذا الإجراء لتجاهل الحقول الموروثة في أحد الكيانات. b/63522075
التغييرات في واجهات برمجة التطبيقات أو السلوك
- أصبح
mCallback
وmDatabase
فيRoomDatabase
الآن@Deprecated
وستتم إزالتهما في الإصدار الرئيسي التالي من الغرفة. b/76109329
إصلاح الأخطاء
- تم إصلاح مشكلتين حيث لا يتم استرداد Room بشكل صحيح من قاعدة بيانات تالفة أو عملية نقل بيانات غير صالحة أثناء التهيئة. b/111504749 وb/111519144
- ستستخدم الغرفة الآن الدالة الإنشائية الأساسية للغة Kotlin بشكلٍ صحيح في فئات البيانات لتجنُّب الحاجة إلى تعريف الحقول بأنّها
vars
. b/105769985
الإصدار 2.0.0
الإصدار 2.0.0
1 تشرين الأول (أكتوبر) 2018
تم إصدار androidx.room 2.0.0
بدون أي تغييرات من الإصدار 2.0.0-rc01.
الإصدار 2.0.0-rc01
20 أيلول (سبتمبر) 2018
تم إصدار androidx.room 2.0.0-rc01
بدون أي تغييرات من الإصدار 2.0.0 إلى الإصدار التجريبي 01.
الإصدار 2.0.0-beta01
2 تموز (يوليو) 2018
التغييرات في واجهات برمجة التطبيقات أو السلوك
- تمت إضافة
RoomDatabase.Builder.setQueryExecutor()
للسماح بتخصيص أماكن تنفيذ طلبات البحث. - تمت إضافة دعم RxJava2
Observable
. - عمليات تنفيذ قاعدة البيانات وقواعد البيانات التي تم إنشاؤها أصبحت نهائية الآن
إصلاح الأخطاء
- تحديد اسم الفئة/الحقل في الخطأ "لا يمكن العثور على قيمة للحقل" b/73334503
- إصلاح توافق RoomOpenHelper مع الأنظمة القديمة مع الإصدارات القديمة من Room b/110197391
التبعيات السابقة لنظام التشغيل AndroidX
بالنسبة إلى الإصدارات السابقة لنظام التشغيل AndroidX من Room، عليك تضمين هذه التبعيات:
dependencies {
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - RxJava support for Room
implementation "android.arch.persistence.room:rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "android.arch.persistence.room:guava:$room_version"
// Test helpers
testImplementation "android.arch.persistence.room:testing:$room_version"
}
الإصدار 1.1.1
الإصدار 1.1.1
19 حزيران (يونيو) 2018
الغرفة 1.1.1
مماثلة للغرفة 1.1.1-rc1
.
الإصدار 1.1.1-rc1
16 أيار (مايو) 2018
ننصحك بشدة باستخدام الغرفة 1.1.1-rc1
بدلاً من 1.1.0
في حال كنت تستخدم عمليات نقل البيانات.
تم إصلاح الخطأ المتمثل في عدم تعامل الغرفة مع تهيئة ما بعد نقل البيانات بشكل صحيح b/79362399
الإصدار 1.1.0
الإصدار 1.1.0-beta3
19 نيسان (أبريل) 2018
إصلاح الأخطاء
- إصلاح خطأ التحويل البرمجي عندما يشير طلب POJO في Kotlin إلى كيان علاقي تم تحديده في Java b/78199923
الإصدار 1.1.0-تجريبي2
5 نيسان (أبريل) 2018
إصلاح الأخطاء
تم إصلاح خطأ فادح في عمليات تنفيذ Rx
Single
وMaybe
في الغرفة حيث قد يؤدي إلى إعادة تدوير طلب البحث مسبقًا، مما يتسبب في حدوث مشاكل إذا أضفت أكثر من مراقب واحد إلى الأخطاءSingle
أوMaybe
المعروضة. b/76031240لن تضيف ميزة [RoomDatabase.clearAllTables][ref-clearAllTables]
VACUUM
قاعدة البيانات إذا تم استدعائها داخل معاملة. b/77235565
الإصدار 1.1.0-تجريبي1
21 آذار (مارس) 2018
تغييرات واجهة برمجة التطبيقات
- استنادًا إلى الملاحظات والآراء بشأن مراجعة واجهة برمجة التطبيقات، لم يعُد
@RawQuery
يقبل تمريرString
باعتباره مَعلمة طلب البحث. تحتاج إلى استخدام [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (راجع [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] لإنشاء مثيل [SupportSQLiteQuery][ref-SupportSQLiteQuery] باستخدام الوسيطة بسهولة). - أصبحت طريقة RoomDatabase.Builder [fallbackToDestructive MigrationFrom][ref-fallbackToDestructive MigrationFrom] تقبل الآن
vararg int
بدلاً منvararg Integer
.
إصلاح الأخطاء
- تحاول الآن [RoomDatabase.clearAllTables][ref-clearAllTables] إعادة المسافة إلى نظام التشغيل من خلال ضبط نقطة تفتيش WAL
VACUUM
وإضافة قاعدة البيانات. - [
@RawQuery
] يقبل [ref-RawQuery] الآن أي حرف Pojo للسمةobservedEntities
طالما أنّ Pojo يشير إلى كيان واحد أو أكثر من خلال حقولEmbedded
أوRelation
. b/74041772 - الانتقال من صفحة إلى أخرى: أصبح تنفيذ DataSource في الغرفة يعالج بشكل صحيح التبعيات متعددة الجداول (مثل العلاقات وضمات). في السابق، كانت لا تنجح في ظهور نتائج جديدة، أو قد تفشل في تجميعها. b/74128314
الإصدار 1.1.0-alpha1
22 كانون الثاني (يناير) 2018
الميزات الجديدة
RawQuery
: تسمح واجهة برمجة التطبيقات الجديدة هذه لطرق@Dao
بتلقّي لغة الاستعلامات البنيوية (SQL) كمَعلمة طلب بحث b/62103290، b/71458963fallBackToDestructiveMigrationsFrom
: تتيح واجهة برمجة التطبيقات الجديدة هذه فيRoomDatabase.Builder
إمكانية تحكُّم أكثر دقة في عمليات بدء عمليات نقل البيانات التخريبية لإصدارات المخطط (مقارنةً بـ fallbackToDestructive Migration) b/64989640- لا تتوافق غرفة الآن إلا مع واجهات برمجة التطبيقات الأحدث (الإصدار alpha-4 والإصدارات الأحدث) التي لن تتيح استخدام الإصدار
LivePagedListProvider
المتوقّف نهائيًا. لاستخدام الإصدار الأولي الجديد من الغرفة، عليك استخدام التقسيم على صفحاتalpha-4
أو الإصدارات الأحدث، والتبديل منLivePagedListProvider
إلىLivePagedListBuilder
إذا لم يسبق لك ذلك.
إصلاح الأخطاء
- توافق محسَّن مع أنواع Kotlin Kapt. b/69164099
- لا يؤدي ترتيب الحقول إلى إلغاء صلاحية المخطط بعد الآن. b/64290754