Room
التعديل الأخير | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
10 يوليو 2024 | 2.6.1 | - | - | 2.7.0-alpha05 |
إعلان التبعيات
لإضافة عنصر تبعية إلى Room، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven من Google للحصول على مزيد من المعلومات.
تشمل تبعيات الغرفة عمليات نقل بيانات غرف الاختبار وغرفة 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.schemaLocation |
directory
تتيح تصدير مخططات قاعدة البيانات إلى ملفات JSON في الدليل المحدّد. يُرجى الاطّلاع على عمليات نقل بيانات الغرف لمزيد من المعلومات. |
room.incremental |
boolean
يفعِّل هذا الإعداد معالج التعليقات التوضيحية التزايدية في Gradle. القيمة التلقائية هي true .
|
room.generateKotlin |
boolean
إنشاء ملفات مصدر بلغة Kotlin بدلاً من Java يتطلب KSP. القيمة التلقائية هي false .
راجِع ملاحظات الإصدار 2.6.0 للحصول على مزيد من التفاصيل.
|
استخدام المكوّن الإضافي لنظام Gradle للغرفة
في إصدار الغرفة 2.6.0 والإصدارات الأحدث، يمكنك استخدام المكوّن الإضافي لنظام Gradle للغرفة لضبط خيارات برنامج تجميع الغرفة. يهيئ المكون الإضافي المشروع بحيث يتم تكوين المخططات التي تم إنشاؤها (وهي ناتج مهام التجميع ويتم استخدامها لعمليات الترحيل التلقائية) بشكل صحيح لكي تحتوي على إصدارات قابلة لإعادة الإنتاج وقابلة للتخزين المؤقت.
لإضافة المكوّن الإضافي، حدِّد المكون الإضافي وإصداره، في ملف إصدار Gradle ذي المستوى الأعلى.
رائع
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
في ملف تصميم Gradle على مستوى الوحدة، طبِّق المكوِّن الإضافي واستخدِم الامتداد room
.
رائع
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
يلزم ضبط schemaDirectory
عند استخدام المكوّن الإضافي لنظام Gradle للغرفة. سيؤدي هذا
إلى إعداد برنامج التحويل البرمجي للغرفة ومهام التجميع المختلفة وخلفياته
(javac وKAPT وKSP) لإخراج ملفات المخطط إلى مجلدات مزخرفة، على سبيل المثال
schemas/flavorOneDebug/com.package.MyDatabase/1.json
. يجب التحقق من هذه الملفات في المستودع لاستخدامها في التحقق من الصحة وعمليات النقل التلقائي.
لا يمكن تهيئة بعض الخيارات في جميع إصدارات المكون الإضافي لنظام Gradle للغرفة،
على الرغم من توافقها مع برنامج التحويل البرمجي للغرفة. يسرد الجدول أدناه كل خيار ويعرض إصدار "المكوّن الإضافي لنظام Gradle المتوافق مع الغرف" الذي أضاف دعمًا لإعداد هذا الخيار باستخدام إضافة room
. إذا كان الإصدار أقدم أو إذا لم يكن الخيار متاحًا بعد، يمكنك بدلاً من ذلك استخدام خيارات معالج التعليقات التوضيحية.
Option | منذ الإصدار |
---|---|
room.schemaLocation (مطلوب) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
استخدام خيارات معالجة التعليقات التوضيحية
إذا لم تكن تستخدم "المكوّن الإضافي لنظام Gradle المتوافق مع الغرفة"، أو إذا كان الخيار الذي تريده غير متوافق مع إصدار المكوّن الإضافي الذي تستخدمه، يمكنك إعداد الغرفة باستخدام خيارات معالج التعليقات التوضيحية، كما هو موضح في إضافة تبعيات الإصدار. تعتمد كيفية تحديد خيارات التعليقات التوضيحية على ما إذا كنت تستخدم KSP أو KAPT للغرفة.
رائع
// For KSP ksp { arg("option_name", "option_value") // other otions... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "option_name":"option_value", // other options... ] } } } }
Kotlin
// For KSP ksp { arg("option_name", "option_value") // other options... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "option_name" to "option_value", // other options... ) } } } }
وبما أنّ room.schemaLocation
هو دليل وليس نوعًا أساسيًا، من الضروري استخدام CommandLineArgumentsProvider
عند إضافة هذا الخيار حتى يتعرّف Gradle على هذا الدليل عند إجراء عمليات تحقّق حديثة.
يعرض خيار نقل بيانات الغرف
تنفيذًا كاملاً لـ CommandLineArgumentsProvider
يوفّر
موقع المخطط.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. أخبرنا إذا اكتشفت مشكلات جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
راجِع مستندات "أداة تتبُّع المشاكل" للحصول على مزيد من المعلومات.
الإصدار 2.7
الإصدار 2.7.0-alpha05
10 يوليو 2024
تم طرح androidx.room:room-*:2.7.0-alpha05
. يحتوي الإصدار 2.7.0-alpha05 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية "
SQLiteKt
" إلى "SQLite
" و"BundledSQLiteKt
" إلى "BundledSQLite
". (I8b501)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يؤدي إلى توقف
RoomDatabase
أو تعطُّل مهلة الاتصال عند استخدامAndroidSQLiteDriver
.
الإصدار 2.7.0-alpha04
12 يونيو 2024
تم طرح androidx.room:room-*:2.7.0-alpha04
. يحتوي الإصدار 2.7.0-alpha04 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة في معالج التعليقات التوضيحية في الغرفة، والتي كانت ستؤدي إلى إنشاء رمز KMP غير متوافق عند تحديد نوع إرجاع خرائط متعددة في DAO. (b/340983093)
- تم إصلاح مشكلة تعذّر على الغرفة العثور على تنفيذ قاعدة البيانات التي تم إنشاؤها إذا لم يكن لدى الفئة التي تتضمّن تعليقات توضيحية في
@Database
أيّ حزمة. (b/342097292) - تم إصلاح مشكلة كانت تؤدي أحيانًا إلى ظهور
ConcurrentModificationException
عندما يتم إغلاق قاعدة البيانات تلقائيًا بسبب عدم نشاطها، وذلك عند تفعيل ميزة الإغلاق التلقائي وإيقاف المثيلات المتعددة.
الإصدار 2.7.0-alpha03
29 مايو 2024
تم طرح androidx.room:room-*:2.7.0-alpha03
. يحتوي الإصدار 2.7.0-alpha03 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- إصلاح مشكلات متنوعة بخصوص Kotlin 2.0 وKSP 2.0. يُرجى ملاحظة أنّ لغة Kotlin 2.0 مع دعم KSP 2 لم تكتمل، ويعمل الفريق على تطوير واجهات برمجة التطبيقات وتغييرات السلوك في برنامج التجميع الجديد. (b/314151707)
الإصدار 2.7.0-alpha02
14 مايو 2024
تم طرح androidx.room:room-*:2.7.0-alpha02
. يحتوي الإصدار 2.7.0-alpha02 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تمّ إصلاح مشاكل مختلفة في KSP.
الإصدار 2.7.0-alpha01
1 مايو 2024
تم طرح androidx.room:room-*:2.7.0-alpha01
. يحتوي الإصدار 2.7.0-alpha01 على عمليات التنفيذ هذه.
الميزات الجديدة
- دعم Kotlin Multiplatform (KMP): في هذا الإصدار، تمت إعادة هيكلة Room لتصبح مكتبة Kotlin Multiplatform (KMP) متعددة. على الرغم من أنّه لا يزال هناك بعض العمل الذي يجب إنجازه، يقدّم هذا الإصدار إصدارًا جديدًا من Room حيث تم تصنيف معظم الوظائف على أنّه شائع الاستخدام على أنظمة أساسية متعدّدة. الأنظمة الأساسية المعتمدة حاليًا هي Android وiOS وJVM (للكمبيوتر المكتبي) وMac الأصلي ونظام التشغيل Linux الأصلي. ستصبح أي وظائف غير متوفّرة في الأنظمة الأساسية المتوافقة حديثًا "ميزة مكتملة" في إصدارات الغرف القادمة.
لمزيد من المعلومات حول كيفية البدء باستخدام "منصّة KMP" في الغرفة، يُرجى الرجوع إلى مستندات "منصّة KMP" الرسمية للغرفة.
- تم تفعيل ميزة إنشاء رموز Kotlin على KSP تلقائيًا في حال تمت المعالجة من خلال KSP. بالنسبة إلى مشاريع KAPT أو Java فقط، ستظل الغرفة تنشئ مصادر Java.
التغييرات في واجهة برمجة التطبيقات
- تمّت إضافة حِمل زائد لـ
Room.databaseBuilder()
يستخدم مَعلمة lambda التي تهدف إلى استخدامها مع الدالة التي تم إنشاؤها في الغرفة لتجنُّب استخدام الانعكاس عند إنشاء مثيل لعملية تنفيذRoomDatabase
التي تم إنشاؤها. مثال على الاستخدام:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- تمّت إضافة واجهة برمجة تطبيقات لإعداد غرفة باستخدام
CoroutineContext
إلى أداة الإنشاء:RoomDatabase.Builder.setQueryCoroutineContext
. يُرجى العِلم أنّه لا يمكن إعدادRoomDatabase
إلا مع جهات تنفيذ باستخدامsetQueryExecutor
أو من خلال سياق الكوروتين، وليس كليهما. - تمت إضافة واجهة برمجة تطبيقات لإعداد الغرفة باستخدام برنامج تشغيل "
SQLite
":RoomDatabase.Builder.setDriver()
. لمزيد من المعلومات حولSQLite
Driver API، يمكنك الاطّلاع على مستندات KMP من SQLite. - تمت إضافة واجهتَي برمجة تطبيقات للوصول إلى
SQLiteConnection
الأساسي من واجهات برمجة تطبيقات برنامج التشغيل:RoomDatabase.useReaderConnection
وRoomDatabase.useWriterConnection
. - تحتوي عمليات معاودة الاتصال ذات الصلة بـ Varios Room الآن على إصدار تم تحميله بشكل زائد ويتلقّى
SQLiteConnection
بدلاً منSupportSQLiteDatabase
. يتم إلغاء هذه القواعد عند الانتقال إلى مشروع KMP. لمزيد من المعلومات حول نقل استخدامات الغرفة في أحد تطبيقات Android إلى وحدة "منصة KMP" شائعة، يُرجى الرجوع إلى دليل نقل البيانات. عمليات معاودة الاتصال هي:Migration.migrate(SQLiteConnection)
AutoMigrationSpec.onPostMigrate(SQLiteConnection)
RoomDatabase.Callback.onCreate(SQLiteConnection)
RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
RoomDatabase.Callback.onOpen(SQLiteConnection)
- تم دمج عنصر KTX
androidx.room:room-ktx
فيandroidx.room:room-runtime
مع كل واجهات برمجة التطبيقات الخاصة به. وأصبح العنصر فارغًا الآن. يُرجى إزالته من قائمة الاعتمادية.
الإصدار 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)
الإصدار
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 CodeGen، ويُتوقع إعادة كتابتها كدوال بدلاً من ذلك لتجنب الاعتقاد الخاطئ بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. هناك قيد آخر تمت إضافته وهو أن أنواع إرجاع المجموعات القابلة للإلغاء لم تعد مسموحًا بها في الغرفة لـ Kotlin CodeGen.
تحذير: قد تجد أنّ مشاريعك أكثر صرامة في ما يتعلق بقابلية القيم الفارغة عند استخدام Kotlin CodeGen. في Kotlin CodeGen، تعتبر إمكانية القيم الفارغة لوسيطات النوع مهمة، حيث يتم تجاهل هذا في الغالب في Java. على سبيل المثال، لنفترض أن لديك نوع إرجاع `Flow<foo\>` والجدول فارغ. في Java CodeGen، لن يتسبب هذا في حدوث أي مشاكل، ولكن في Kotlin CodeGen، ستظهر لك رسالة خطأ. لتجنب هذا، ستحتاج إلى استخدام `Flow<foo?\>`، بافتراض إطلاق قيمة فارغة. </foo?\></foo\>
- تمت إضافة العنصر الجديد للمكوّن الإضافي "غرفة Gradle" للغرفة الذي يحمل رقم التعريف
androidx.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
أثناء عملية أعلى، يجب إجراء عملية تحديث. (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 على هذه عمليات التنفيذ.
المكوّن الإضافي لنظام Gradle الخاص بالغرفة
يحتوي هذا الإصدار الجديد على عنصر جديد للمكوّن الإضافي لنظام Gradle للغرفة الذي يحمل رقم التعريف androidx.room
، والذي يحل العديد من المشاكل الحالية في الغرفة بخصوص وجود مدخلات ومخرجات للمخططات من خلال خيارات معالج تعليقات Gradle. يعمل المكوِّن الإضافي لغرفة Gradle Plugin على تهيئة المشروع الذي ينشئ المخططات التي يتم استخدامها لعمليات الترحيل التلقائية وتكون ناتج مهام التجميع مهيأ بشكل صحيح للحصول على إصدارات قابلة للتكرار وقابلة للتخزين المؤقت. يوفّر المكوّن الإضافي DSL لضبط موقع المخطط الأساسي على النحو التالي:
room {
schemaDirectory("$projectDir/schemas/")
}
بعد ذلك، سيهيئ المكوّن الإضافي المحول البرمجي للغرفة ومهام التجميع المتنوعة وخلفياته (javac وKAPT وKSP) لإخراج ملفات المخطط في مجلدات مزخرفة، مثل schemas/flavorOneDebug/com.package.MyDatabase/1.json
. وكالعادة، يتم تسجيل هذه الملفات في المستودع لاستخدامها في عمليات التحقق والنقل التلقائي. بعد بدء استخدام المكوِّن الإضافي بدلاً من خيارات معالج التعليقات التوضيحية، يجب نسخ ملفات المخطط الحالية إلى أدلة النكهات التي تم إنشاؤها بواسطة المكوِّن الإضافي، ويتم تنفيذ هذه العملية مرة واحدة فقط ويجب إجراؤها يدويًا. سيتم تعديل مستندات المخطط في developers.android.com في المستقبل بعد معالجة الملاحظات ووصول المكوّن الإضافي إلى ثباته، لذا يُرجى تجربته.
التغييرات في واجهة برمجة التطبيقات
- تم تعريف "
RoomDatabase.QueryCallback
" على أنّه واجهة وظيفية تتيح استخدام الإحالات الناجحة من خلال ميزة "إدارة العلامات من Google". (Iab8ea، b/281008549)
إصلاح الأخطاء
- حل المشاكل التي تظهر عند إنشاء مثيل لقاعدة البيانات في Robolectric بعد نقل مصادر الغرفة من Java إلى Kotlin. (Ic053c، b/274924903)
الإصدار 2.6.0-alpha01
22 آذار (مارس) 2023
تم طرح androidx.room:room-*:2.6.0-alpha01
. يحتوي الإصدار 2.6.0-alpha01 على هذه عمليات التنفيذ.
الميزات الجديدة
- توفير صفوف القيمة في الغرف لـ KSP. يمكن لغرفة الغرف الآن إتاحة فئات القيم في "الكيانات". (4194095)
- يمكن الآن تفعيل ميزة إنشاء رموز Kotlin(أو "Kotlin CodeGen") في الغرفة (4297ec0). لتفعيل Kotlin CodeGen في الغرفة، أضِف اسم الخيار
room.generateKotlin
إلى خيارات معالج البيانات في KSP. لمزيد من التفاصيل حول كيفية تمرير خيارات المعالج إلى خادم KSP، يمكنك الاطّلاع على مستندات KSP.
ملاحظة: عند استخدام Kotlin CodeGen، من المهم ملاحظة أنه هناك قيود إضافية تمت إضافتها. لا يُسمح بالسمات المجرّدة مثل استدعاءات DAO أو طلبات بحث DAO في Kotlin CodeGen، ويُتوقع إعادة كتابتها كدوال بدلاً من ذلك لتجنب الاعتقاد الخاطئ بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. هناك قيد آخر تمت إضافته وهو أن أنواع إرجاع المجموعات القابلة للإلغاء لم تعد مسموحًا بها في الغرفة لـ 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 في برنامج ترميز 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
9 تشرين الثاني (نوفمبر) 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,b/2066614)
التغييرات في واجهة برمجة التطبيقات
- تم تحويل جميع
room-runtime
من Java إلى Kotlin. (If2069 وb/206859668) و(Ie4b55 وb/206859668) و(I697ee وb/206859668) و(I96c25 وbملاحظة: قد تواجه مشاكل متعلقة بعدم التوافق مع المصدر بسبب تحويل المكتبة إلى لغة Kotlin. إذا كان الرمز بلغة Kotlin ويطلب من المستخدمين الإصدار القديم من الغرفة، سيحتاج الإصدار الجديد إلى معالجة هذه الحالات. على سبيل المثال، هناك تغيير معروف عن مصدر غير متوافق هو أنّه في
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 ويطلب من المستخدمين الإصدار القديم من الغرفة، سيحتاج الإصدار الجديد إلى اللاحقة ".Companion" عند الوصول إلى هذه السمات.
- تم تحويل عملية نقل بيانات الغرف من Java إلى Kotlin. (I2724b، b/206858622)
- تم تحويل
paging
ملف ذي صلة فيroom-runtime
من Java إلى Kotlin. (I82fc8، b/206859668) - تمت إضافة واجهة برمجة تطبيقات للقفل والاستخدام على مستوى إطار عمل SQLite* متعدد العمليات، وذلك لحماية عملية إنشاء قاعدة البيانات ونقلها بعد إجراء عمليات متعددة. (Ied267، b/193182592)
إصلاح الأخطاء
- تمت إضافة دعم للخصائص الداخلية في مصادر Kotlin.
هذا تغيير طفيف في السلوك في الغرفة حيث سيتم استخدام اسم المصدر للدوال مع مطابقتها مع الخصائص مثل getters/setters
(سابقًا، كان يستخدم اسم JVM للدالة والذي يختلف بالنسبة
للدوال/الخصائص الداخلية).
إذا كنت تستخدم تعليقات
@JvmName
التوضيحية المخصّصة لمطابقة getters/setters مع الخصائص الخاصة، يُرجى التحقّق جيّدًا من الرمز الذي تمّ إنشاؤه بعد التحديث (If6531، b/205289020).
الإصدار 2.4.3
الإصدار 2.4.3
27 تموز (يوليو) 2022
تم طرح androidx.room:room-*:2.4.3
. يحتوي الإصدار 2.4.3 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبب في عدم تعرُّف الغرفة على دوال التعليق في الإصدار 1.7 من لغة Kotlin (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.
هذا تغيير طفيف في السلوك في الغرفة حيث سيتم استخدام اسم المصدر للدوال مع مطابقتها مع الخصائص مثل getters/setters
(سابقًا، كان يستخدم اسم JVM للدالة والذي يختلف بالنسبة
للدوال/الخصائص الداخلية).
إذا كنت تستخدم تعليقات
@JvmName
التوضيحية المخصّصة لمطابقة getters/setters مع الخصائص الخاصة، يُرجى التحقّق جيّدًا من الرمز الذي تمّ إنشاؤه بعد التحديث (If6531، b/205289020).
الإصدار
الإصدار
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.room:room-*:2.4.0
. يحتوي الإصدار 2.4.0 على عمليات الالتزام هذه.
تغييرات مهمة منذ الإصدار 2.3.0
- عمليات النقل التلقائية: توفّر الغرفة الآن واجهة برمجة تطبيقات لإنشاء عمليات نقل البيانات تلقائيًا طالما تم تصدير المخططات. لإعلام الغرفة بأنه يجب إنشاء عملية نقل تلقائي للموقع الإلكتروني الجديد، يمكن استخدام السمة
@Database#autoMigrations
للإعلان عن الإصدارات التي سيتم نقل البيانات منها تلقائيًا منها وإليها. عندما تحتاج "غرفة" إلى معلومات إضافية بشأن الجداول وعمليات إعادة تسمية الأعمدة أو حذفها، يمكن أن يفصح التعليق التوضيحي@AutoMigration
عن فئة مواصفات تحتوي على هذه البيانات. لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات "@AutoMigration
". - Dependency Injection في عمليات النقل التلقائية:
@ProvidedAutoMigrationSpec
هي واجهة برمجة تطبيقات جديدة للإعلان عن توفيرAutoMigrationSpec
في وقت التشغيل من خلالRoomDatabase.Builder#addAutoMigrationSpec()
. ويسمح ذلك بإطار حقن التبعية لتوفير هذه المواصفات عندما تحتاج إلى تبعيات معقدة. - دعم اختبار نقل البيانات لعمليات النقل التلقائي: تم تعديل
MigrationTestHelper
في الغرفة لإتاحة عمليات النقل التلقائي من خلال توفير واجهة برمجة تطبيقات جديدة لأداة الإنشاء تتلقّى فئة قاعدة البيانات قيد الاختبار. ويتيح ذلك للمساعد إضافة عمليات نقل البيانات التلقائية تلقائيًا بالطريقة نفسها أثناءrunMigrationsAndValidate
. - توفير صفحات الغرف: تم إلغاء حجز
androidx.room:room-paging
، ما يوفّر دعمًا للإصدار 3.0 الأصلي من طلبات البحث في الغرف التي تعرضandroidx.paging.PagingSource
. - طرق طلب البحث العلائقي: تدعم الغرفة الآن طرق عرض أنواع الرجوع
@Dao
التي تعد مفيدة لعبارات JOIN. الأنواع المتوافقة من الخرائط المتعددة هيMap
وSparseArray
وLongSparseArray
، بالإضافة إلىImmutableMap
وImmutableSetMultimap
وImmutableListMultimap
من Java.
الإصدار 2.4.0-rc01
1 كانون الأول (ديسمبر) 2021
تم طرح androidx.room:room-*:2.4.0-rc01
. يحتوي الإصدار 2.4.0-rc01 على هذه عمليات التنفيذ.
الميزات الجديدة
- يجب تعديل اعتماد الغرفة على KSP إلى
1.6.0-1.0.1
للتوافق مع الإصدار 1.6 من لغة Kotlin.
الإصدار 2.4.0-beta02
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.room:room-*:2.4.0-beta02
. يحتوي الإصدار 2.4.0-beta02 على عمليات التنفيذ هذه.
الميزات الجديدة
- لقد أتحنا استخدام SparseArray وlongSparseArray في @MapInfo. (Ic91a2b/138910317)
إصلاح الأخطاء
- لقد أضفنا أداة تحليل TypeConverter جديدة تأخذ في الاعتبار معلومات القيم الفارغة ولأن هذه المعلومات متوفرة فقط في لوحة مفاتيح KSP، يتم تفعيل هذه المعلومات بشكل تلقائي فقط في لوحة مفاتيح KSP. إذا تسببت في حدوث أي مشاكل، يمكنك إيقافها من خلال تمرير room.useNullAwareTypeAnalysis=false إلى معالج التعليقات التوضيحية. في حال حدوث ذلك، يُرجى الإبلاغ عن الخطأ الذي يظهر في ملف نظرًا إلى أنه ستتم إزالة هذه العلامة في المستقبل. باستخدام أداة تحليل TypeConverter الجديدة هذه، نقترح توفير أنواع TypeConverter المتلقية غير الفارغة فقط، حيث إن المحلل الجديد لديه القدرة على التفافها باستخدام فحص فارغ. تجدر الإشارة إلى أنّ هذا لا يؤثر في مستخدمي KAPT أو Java بصفتهم معالجي التعليقات التوضيحية (على عكس KSP)، حيث لا تحتوي الأنواع على معلومات حول قابلية القيم الفارغة. (Ia88f9، b/193437407)
- إصلاح الخطأ الذي يفشل في تجميع الغرفة بسبب خطأ في 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)
التغييرات في واجهة برمجة التطبيقات
تمت إضافة سمة جديدة إلى التعليق التوضيحي TypeConverters للسماح للمطوّرين بإيقاف أدوات تحويل قيم التعداد والرمز الفريد العالمي (UUID) المضمَّنة. وتكون برامج التحويل هذه مفعّلة تلقائيًا، ولكن يمكنك إيقافها لنطاق معيّن أو قاعدة البيانات بأكملها. راجِع مستندات TypeConverters لمعرفة التفاصيل. (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
عنصرًا مطلوبًا عند استخدام Paging 3 مع الغرفة (إياف)
إصلاح الأخطاء
- حل مشكلة عدم ترتيب نتائج طلبات البحث في خرائط متعددة بشكل صحيح عندما يحتوي الطلب على عبارة 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
من Java.في ما يلي أمثلة على طلبات الخرائط المتعددة:
خريطة العلاقات الفردية
@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
الذي تم إنشاؤه من خلال الغرفة بأداة مبنية على واجهات برمجة تطبيقات Paging 3.0. تحلِّل عملية تنفيذ PagingSource الجديدة المفاتيح بشكل مختلف، لذا فإنّ أي مفتاح يتم توفيره يدويًا لـ PagingSource في الغرفة يجب أن يأخذ في الاعتبار هذا التغيير في السلوك، بما في ذلك المفتاح الأولي الذي تم تمريره عبر أداة إنشاء جهاز النداء. سيبدأ تحميل الصفحات منKey
وسيكونKey
أول عنصر تم تحميله. وينحرف ذلك عن السلوك الحالي الذي يتم فيه التعامل معLoadParams.Refresh.Key
كموضع تمرير للمستخدم وتحميل العناصر قبل المفتاح وبعده.العنصر اختياري وسيعود إيقاف الميزة إلى التوافق الحالي للإصدار 3.0 الذي تم طرحه في الغرفة 2.3. ومع ذلك، ستصبح هذه العناصر غير اختيارية في الإصدار المستقبلي لمستخدمي الغرفة مع Paging 3.0. للموافقة، أضِف العنصر الجديد ترقيم الصفحات في الغرفة إلى مسار صفك. إذا كنت تستخدم Gradle، يمكنك إضافة المقتطف التالي إلى create.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)
تم إصلاح المشكلة المتمثلة في عدم ظهور رسالة خطأ عندما يكون نوع إرجاع دالة @Transaction هو مسار (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 على هذه عمليات التنفيذ.
الميزات الجديدة
- عمليات النقل التلقائية: توفّر الغرفة الآن واجهة برمجة تطبيقات لإنشاء عمليات نقل البيانات تلقائيًا طالما تم تصدير المخططات. لإعلام الغرفة بأنه يجب إنشاء عملية نقل تلقائي للموقع الإلكتروني الجديد، يمكن استخدام السمة
@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
- دعم مضمّن في التعداد: سيتم الآن ضبط الغرفة تلقائيًا على استخدام تعداد التعداد إلى سلسلة والعكس في حال عدم توفير أي محوّل من نوع التعداد. في حال توفُّر محوّل نوعًا للتعداد، سيعطي الغرفة الأولوية لاستخدامه على التعداد التلقائي.
- استدعاء طلب البحث: توفر غرفة الآن استدعاء عام لواجهة برمجة التطبيقات RoomDatabase.QueryCallback عندما تكون طلبات البحث على وشك التنفيذ والتي يمكن أن تكون مفيدة لتسجيل الدخول إلى إصدارات تصحيح الأخطاء. يمكن ضبط ميزة معاودة الاتصال عبر
RoomDatabase.Builder#setQueryCallback()
. - تحسين التجميع مسبقًا: تحتوي الغرفة الآن على واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات معدّة مسبقًا لقراءتها من مصدر بيانات إدخال. يسمح هذا بحالات مثل ضغط قاعدة بيانات ما قبل الحزمة بشكل gzip.
- محوّلات الأنواع المقدَّمة: تحتوي الغرفة الآن على واجهات برمجة تطبيقات لتوفير مثيلات محولات النوع كي يتمكّن التطبيق من التحكّم في إعدادها. لوضع علامة على محوّل النوع الذي سيتم توفيره للغرفة، استخدِم التعليق التوضيحي الجديد @ProvidedTypeConverter.
- دعم RxJava3: تتوافق الغرفة الآن مع أنواع RxJava3. على غرار RxJava2، يمكنك تعريف طرق DAO التي يكون نوع إرجاعها قابلاً للتدفق أو فرديًا أو ربما وقابلاً للإكمال. بالإضافة إلى ذلك، يتوفّر عنصر
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 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- حلّ مشكلة منعت استخدام طلبات بحث "تدفق الكوروتين" التي أنشأها الغرفة في جزء "
withTransaction
" معلَّق. (I797bf)
الإصدار 2.3.0-beta03
10 آذار (مارس) 2021
تم طرح androidx.room:room-*:2.3.0-beta03
. يحتوي الإصدار 2.3.0-beta03 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة دعم التجميع التدريجي للوحة مفاتيح KSP. (I031c1، b/176453350)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي قد يؤدي فيه إنشاء PagingSource في سلسلة التعليمات الرئيسية إلى حدوث خطأ ANR. (I42b74، b/181221318)
- تم إصلاح مستوى رؤية
@ExperimentalRoomApi
ليصبح علنيًا بدلاً من حزمة خاصة. (b/181356119)
مساهمة خارجية
- السماح للغرفة بقبول نوع إرجاع POJO في طريقة DAO التي تتضمن تعليقات توضيحية على
@Query
عند إضافة تعليقات توضيحية إليها أيضًا باستخدام@SkipQueryVerification
ستبذل الغرف قصارى جهدها لتحويل نتيجة طلب البحث إلى نوع إرجاع POJO بالطريقة نفسها التي يتم بها تنفيذ طريقة DAO التي تتضمّن تعليقات@RawQuery
توضيحية. شكرًا لـ "ماركوس ريغل | 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، ما يقلّل بشكل كبير من مدة الإصدار.
لاستخدام الغرفة مع KSP، يمكنك تطبيق المكوّن الإضافي KSP Gradle واستبدال إعدادات
kapt
في ملف الإصدار بـksp
. على سبيل المثال، استخدِمksp 'androidx.room:room-compiler:2.3.0-beta02'
بدلاً منkapt '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 على هذه الالتزامات.
الميزات الجديدة
- قواعد البيانات القابلة للإغلاق تلقائيًا: لدى الغرفة الآن القدرة على إغلاق قواعد البيانات التي لا يتم الوصول إليها بعد فترة زمنية معينة. هذه ميزة تجريبية ويمكن تفعيلها من خلال طلب الرقم
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 على هذه عمليات التنفيذ.
الميزات الجديدة
- توفّر الغرفة الآن واجهة برمجة تطبيقات
RoomDatabase.QueryCallback
عامة لمعاودة الاتصال، لاستخدامها عندما يكون تنفيذ الطلبات على وشك التنفيذ، والتي يمكن أن تكون مفيدة لتسجيل الدخول في إصدارات تصحيح الأخطاء. يمكن ضبط ميزة معاودة الاتصال عبرRoomDatabase.Builder#setQueryCallback()
. (Iaa513، وb/174478034، وb/74877608) - سيتم الآن ضبط الغرفة تلقائيًا على استخدام قيم التعداد إلى سلسلة والعكس مع محوّل النوع إذا لم يتم توفير أي منها. في حال توفُّر محوّل نوعًا للتعداد، سيعطي الغرفة الأولوية لاستخدامه على التعداد التلقائي. (b/73132006)
مشكلة معروفة
- في حال توفُّر محوّل من نوع أحادي الاتجاه للقراءة حاليًا في التعداد، قد تستخدم الغرفة عن طريق الخطأ محوّل سلسلة إلى تعداد مُدمَج وقد لا يكون هذا الإجراء مطلوبًا. هذه مشكلة معروفة ويمكن حلّها من خلال تحويلها إلى محوّل ثنائي. يمكنك الاطّلاع على: b/175707691
إصلاح الأخطاء
- تم إصلاح مشكلة إيقاف الغرفة لمعالجة التعليقات التوضيحية التزايدية بشكل غير صحيح في إصدارات JDK الأحدث. (b/171387388)
- تم إصلاح مشكلة كانت أثناء بحث الغرفة عن الفئة التي تم إنشاؤها عند استخدام برامج تحميل فئات متعددة. شكرًا على الإصلاح "Serendipity | 892449346@qq.com"! (b/170141113)
- تم إصلاح مشكلة كانت تؤدي إلى إنشاء رمز غير صحيح في الغرفة، وذلك عندما كان
@Dao
بلغة Kotlin يستخدم فئة أساسية تكون فيها الأنواع العامة من القيم الأساسية في آلة متجه الدعم. (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 على هذه عمليات التنفيذ.
الميزات الجديدة
تحتوي الغرفة الآن على واجهات برمجة تطبيقات لتوفير حالات تحويل النوع بحيث يمكن للتطبيق التحكم في إعدادها. لوضع علامة على محوّل النوع الذي سيتم توفيره للغرفة، استخدِم التعليق التوضيحي الجديد
@ProvidedTypeConverter
. بفضل "mzgreen yairobbe@gmail.com". (Ie4fa5، b/121067210)تحتوي الغرفة الآن على واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات معدّة مسبقًا مقروءة من مصدر بيانات إدخال. يسمح هذا بحالات مثل ضغط قاعدة بيانات ما قبل الحزمة بشكل gzip. شكرًا لـ "أحمد الحلو ahmedre@gmail.com" (3e6792، وb/146911060)
التغييرات في واجهة برمجة التطبيقات
تمت إضافة الاستهداف غير المتوفّر إلى التعليق التوضيحي
@ForeignKey
، ما يمنع استخدامه خارج التعليق التوضيحي@Entity
. (Iced1e)أصبح الحقل
mCallbacks
فيRoomDatabase.java
مخفيًا الآن. (d576cb وb/76109329)
إصلاح الأخطاء
تعديل على مستندات TypeConverters لتوضيح أنّه يمكن استخدام TypeConverters فقط لتحويل الأعمدة / الحقول وليس الصفوف (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 التي يكون نوع إرجاعها قابلاً للتدفق أو فرديًا أو ربما وقابلاً للإكمال. بالإضافة إلى ذلك، يتوفّر عنصر
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
.
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في عدم اكتشاف الغرفة لإصدار JDK المستخدَم لتفعيل معالج التعليقات التوضيحية التزايدية بشكل صحيح. بفضل Blaz Solar (me@blaz.solar) (b/155215201)
- يتم الآن تضمين تبعية ANTLR مع معالج التعليقات التوضيحية لتجنُّب تعارض الإصدارات مع المعالجات الأخرى التي تستخدم أيضًا ANTLR. (b/150106190)
الإصدار 2.2.6
الإصدار 2.2.6
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.room:room-*:2.2.6
. يحتوي الإصدار 2.2.6 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة إيقاف الغرفة لمعالجة التعليقات التوضيحية التزايدية بشكل غير صحيح في إصدارات 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 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يفشل في الغرفة التحقق من صحة قاعدة بيانات لم تخضع لأي عملية نقل وكانت تحتوي على تجزئة قديمة مع فهارس في مخططها. (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 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يتم فيه تحذير الغرفة بشكل غير صحيح بشأن
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>
خطأ، إذ تنصحك الغرفة بدلاً من ذلك باستخدامFlow
ثم استخدام الدوال المجاورة لتحويلFlow
إلىChannel
. b/130428884 - معالِج التعليقات التوضيحية التزايدية في Gradle: أصبحت الغرفة الآن معالجًا للتعليقات التوضيحية من خلال Gradle، ويمكن تفعيل إمكانية الزيادة من خلال خيار المعالِج
room.incremental
. يمكنك الاطّلاع على خيارات برنامج تجميع الغرف للحصول على مزيد من المعلومات. إذا واجهت أي مشاكل، يُرجى الإبلاغ عن الخطأ هنا. ونخطّط لإتاحة إمكانية الزيادة تلقائيًا في إصدار مستقبلي مستقر. b/112110217 - توسيع الإسقاطات: تمت إضافة خيار تجميع تجريبي جديد
room.expandProjection
يتسبب في إعادة كتابة طلب بحث باستخدام إسقاط نجمة ليحتوي فقط على الأعمدة في النوع المكرّر من النوع POJO. على سبيل المثال، بالنسبة إلى طريقة DAO مع@Query("SELECT * FROM Song")
التي تعرض POJO باسمSongIdAndTitle
مع حقلين فقط. ثم ستعيد الغرفة كتابة الطلب إلى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)
- تم إصلاح الخطأ المتمثل في عدم قبول الغرفة لرمز تجزئة المخطط القديم أثناء فتح قاعدة بيانات لم يتم نقل بياناتها منذ الغرفة 1.0، وتسبَّب ذلك في تعطُّل بيئة التشغيل بسبب وجود مخطط غير صالح. (b/139306173)
الإصدار 2.2.0-alpha02
7 آب (أغسطس) 2019
تم طرح androidx.room:room-*:2.2.0-alpha02
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- تدفق الكوروتين:
@Query
يمكن أن تكون طرق DAO الآن من نوع الإرجاعFlow<T>
. سيعيد التدفق المعروض مجموعة جديدة من القيم إذا تم إلغاء صلاحية جداول المراقبة في الاستعلام. يُعدّ تعريف دالة DAO بنوع الإرجاعChannel<T>
خطأ، إذ تنصحك الغرفة بدلاً من ذلك باستخدامFlow
ثم استخدام الدوال المجاورة لتحويلFlow
إلىChannel
. b/130428884 - توسيع الإسقاطات: تمت إضافة خيار تجميع تجريبي جديد
room.expandProjection
يتسبب في إعادة كتابة طلب بحث باستخدام إسقاط نجمة ليحتوي فقط على الأعمدة في النوع المكرّر من النوع POJO. على سبيل المثال، بالنسبة إلى طريقة DAO مع@Query("SELECT * FROM Song")
التي تعرض POJO باسمSongIdAndTitle
مع حقلين فقط. ثم ستعيد الغرفة كتابة الطلب إلىSELECT id, title FROM Song
ليتم استرجاع الحد الأدنى من مجموعة الأعمدة لتلبية نوع الإرجاع. يؤدي ذلك إلى استبعاد تحذيرCURSOR_MISMATCH
الذي يتم عرضه عندما يعرض طلب البحث أعمدة إضافية لا تتطابق مع أي حقل في نوع POJO المعروض. onDestructiveMigrate
هي واجهة برمجة تطبيقات جديدة لمعاودة الاتصال تمت إضافتها إلىRoomDatabase.Callback
في حال نقل Room قاعدة بيانات بشكل مدمر. b/79962330
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي فيه الغرفة إلى إنشاء رمز غير صحيح باستخدام طريقة كإعداد الحقل عند حماية الحقل. b/136194628
- تم إصلاح الخطأ الذي تسبّب في عدم تأثُّر أداة ValueTrack بـ NPE في عملية ثانية عند تفعيل خيار إلغاء المثيلات المتعددة وإيقاف الخدمة. b/137454915
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم التعرّف بشكل صحيح على نوع العرض لدالة تعليق مكتسبة تم التعليق عليها باستخدام
@RawQuery
. b/137878827 - تم تحديث الرمز الذي تم إنشاؤه لـ
@Relation
عندما يكون المفتاح المرتبط من النوع BLOB لاستخدامByteBuffer
مشابه. b/137881998 - تم إصلاح خطأ كان يتسبّب في إصدار شكاوى في أداة Room بسبب عدم توفّر عناصر معيّنة في POJOs التي يتم استخدامها
كمعلَمات جزئية للكيان
@Insert
و@Update
و@Delete
. b/138664463 - تم إصلاح الخطأ الذي كان من المفترض أن يشكو فيه تطبيق Room من عدم تضمين القيم والتحديد
في عمود تم تجاهله عبر
@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: أصبحت الغرفة الآن معالجًا للتعليقات التوضيحية من خلال Gradle، ويمكن تفعيل إمكانية الزيادة من خلال خيار المعالِج
room.incremental
. يمكنك الاطّلاع على خيارات برنامج تجميع الغرف للحصول على مزيد من المعلومات. إذا واجهت أي مشاكل، يُرجى الإبلاغ عن الخطأ هنا. ونخطّط لإتاحة إمكانية الزيادة تلقائيًا في إصدار مستقبلي مستقر. b/112110217
إصلاح الأخطاء
- لن تنشر الغرفة بعد ذلك
EmptySetResultException
في معالِج الأخطاء العام عند تجاهل تدفق Rx لطلب بحث قبل اكتمال طلب البحث. b/130257475 - تم إصلاح الخطأ الذي كان يؤدي إلى عرض رسالة خطأ غير صحيحة في الغرفة عندما لا تحتوي دالة التعليق التوضيحي DAO التي تمت إضافة تعليقات توضيحية لها باستخدام
@RawQuery
على نوع العرض. b/134303897 - لن تنشئ الغرفة بعد الآن محوّلات DAO باستخدام أنواع البيانات الأولية. b/135747255
الإصدار
الإصدار
13 حزيران (يونيو) 2019
تم إلغاء حجز الغرفة 2.1.0 بدون أي تغييرات من "2.1.0-rc01
". يمكن الاطّلاع هنا على عمليّات الشراء المضمَّنة في الإصدار.
تغييرات مهمة منذ الإصدار 2.0.0
- FTS: تتيح الغرفة الآن الكيانات التي لديها جدول
FTS3 أو FTS4 للربط. يمكن الآن إضافة تعليقات توضيحية أيضًا باستخدام
@Fts3
أو@Fts4
للفئات التي تحتوي على تعليقات توضيحية باستخدام@Entity
، وذلك للإعلان عن إحدى الفئات باستخدام جدول بحث في النص الكامل للربط. وتتوفّر خيارات FTS لمزيد من التخصيص من خلال طرق التعليق التوضيحي. - الملفات الشخصية: تتيح الغرفة الآن الإعلان عن فئة باعتبارها طلب بحث مخزَّنًا، وتُعرف أيضًا باسم طريقة العرض، باستخدام التعليق التوضيحي
@DatabaseView
. - Couroutines: يمكن الآن أن تكون طرق DAO دوال تعليق. يمكنك تضمين
room-ktx
في اعتمادياتك للاستفادة من هذه الوظيفة. يوفر ktx Artifact أيضًا دالة الامتدادRoomDatabase.withTransaction
لتنفيذ معاملات قاعدة البيانات داخل الكوروتين. - القيمة التلقائية: تتيح الغرفة الآن تعريف فئات القيمة التلقائية
التي تتضمن تعليقات توضيحية على أنّها كيانات ونقاط POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة
@PrimaryKey
و@ColumnInfo
و@Embedded
و@Relation
بالطرق المجرّدة للصف الذي يتضمّن تعليقات توضيحية للقيم. يُرجى العِلم أنّ هذا التعليق التوضيحي يجب أيضًا أن يصاحبه@CopyAnnotations
حتى يتسنى للغرفة فهمها بشكل صحيح. - دعم إضافي غير متزامن: طُرق DAO التي تمت إضافة تعليقات توضيحية لها باستخدام
@Insert
أو@Delete
أو@Update
بالإضافة إلى@Query
التي تحتوي على عباراتINSERT
أوDELETE
أوUPDATE
، تتوافق الآن مع أنواع إرجاع RxCompletable
وSingle
وMaybe
ونوع إرجاع JuvaListenableFuture
، ويمكن أن تكون أيضًا دوال التعليق. enableMultiInstanceInvalidation
هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لتفعيل عمليات إلغاء الصلاحية في مثيلات متعددة من RoomDatabase باستخدام ملف قاعدة البيانات نفسه.fallbackToDestructiveMigrationOnDowngrade
هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
تتيح إعادة إنشاء قاعدة البيانات تلقائيًا في حال الرجوع إلى إصدار سابق.ignoredColumns
هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي@Entity
يمكن استخدامها لإدراج الحقول التي تم تجاهلها حسب الاسم.- سيستخدم الغرفة الآن الدالة الإنشائية الأساسية لـ Kotlin بشكل صحيح في فئات البيانات مع تجنب الحاجة إلى إعلان السمات على أنها
vars
.
الإصدار 2.1.0-rc01
29 أيار (مايو) 2019
إصلاح الأخطاء
- تم إصلاح خطأ إعداد الغرفة الذي قد يحدث بسبب إعداد temp_store. b/132602198
- تم إصلاح تحذير بشأن استخدام علامات الاقتباس المزدوجة للمستخدمين الذين يستخدمون SQLite 3.27.0 والإصدارات الأحدث. b/131712640
- تم إصلاح الخطأ الذي قد يؤدي فيه أداة ValueTrack إلى حدوث عطل عندما تحدث عمليات تحقق متعددة للإلغاء بالتوازي. 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 { }
الإضافي المطلوب لتشغيل العناصر في كتلة المعاملات بشكلٍ متزامن.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يفشل في الغرفة في مطابقة TypeConverter لدالة Kotlin DAO التي تحتوي على معلمة من نوع المجموعة. b/122066791
الإصدار 2.1.0-alpha06
22 آذار (مارس) 2019
تغييرات واجهة برمجة التطبيقات / السلوك
- يتم الآن تسلسل طلبات المعاملات غير المتزامنة بحيث لا تستخدم الغرفة
أكثر من سلسلة محادثات واحدة لتنفيذ معاملات قاعدة البيانات.
تمت إضافة
RoomDatabase.Builder.setTransactionExecutor(Executor)
للسماح بضبط أداة التنفيذ لاستخدامها في المعاملات. - لن يلتف
RoomDatabase.runInTransaction(Callable)
الاستثناءات المحددة في RuntimeExceptions. b/128623748
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يتوقّف فيه أداة تتبُّع الإيقاف عن مراقبة جدول المحتوى في حال إضافة مراقبين لكل من جدول المحتوى وجدول FTS الخارجي للمحتوى. b/128508917
- تم تحديث قواعد SQLite في الغرفة لمطابقة SQLite 3.24.0. 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
.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يتم فيه تجاهل وسيطات أداة إنشاء الرموز المميّزة إذا كانت أداة إنشاء الرموز المميّزة المستخدَمة هي SIMPLE. b/125427014
- تم إصلاح الخطأ المتمثل في إخفاق الغرفة في تحديد دوال التعليق بشكل صحيح باستخدام المعلمات التي كانت فئة داخلية. b/123767877
- تم إصلاح الخطأ الذي كان يؤدي إلى إعداد طلب البحث في سلسلة البيانات الرئيسية بشكل متحمّس أثناء إعداد طريقة
@Query
DAO المؤجلة باستخدام عبارات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
تغييرات واجهة برمجة التطبيقات / السلوك
- ستعرض الغرفة الآن رسالة خطأ إذا عرضت طريقة DAO غير الملخصة التي تم التعليق عليها باستخدام
@Transaction
نوعًا غير متزامن مثلSingle
أوMayble
أوCompletable
أوLiveData
أوListenableFuture
. نظرًا لحصر سلسلة المعاملات، من المستحيل حاليًا على الغرفة بدء أو إنهاء معاملة حول دالة قد تؤدي إلى تنفيذ طلبات بحث في سلاسل محادثات مختلفة. b/120109336 - كان
OnConflictStrategy.FAIL
وOnConflictStrategy.ROLLBACK
@Deprecated
لأنّهما لا يعملان على النحو المطلوب مع روابط SQLite الحالية في Android. b/117266738
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في عدم استخدام Room بشكل صحيح لـ TypeConverter من نوع الرجوع إذا كانت طريقة DAO دالة تعليق. b/122988159
- تم إصلاح الخطأ الذي كان يؤدي إلى تحديد الغرفة عن طريق الخطأ على أنها دوال التعليق الموروثة باعتبارها غير معلّقة. b/122902595
- تم إصلاح الخطأ الذي كان يؤدي إلى إنشاء رمز غير صحيح للغرفة عندما يكون الحقل
@Embedded
في صف رئيسي ويتم استخدامه في عدة صفوف فرعية. b/121099048 - تم إصلاح مشكلة توقُّف قاعدة البيانات عن العمل عند استدعاء DAO دوالّ تعليق بين
beginTransaction()
وendTransaction()
. b/120854786
الإصدار 2.1.0-alpha03
4 كانون الأول (ديسمبر) 2018
التغييرات في واجهة برمجة التطبيقات
- تأخذ FTS
tokenizer
في@Fts3
/@Fts4
الآن سلسلة بدلاً من تعداد. يسمح هذا الإجراء باستخدام أدوات إنشاء الرموز المميّزة المخصّصة بواسطة الغرفة. لا تزال أدوات الترميز المضمنة محدّدة فيFtsOptions
كثوابت سلسلة. b/119234881
الميزات الجديدة
- Couroutines: يمكن الآن أن تكون طرق DAO دوال تعليق. لإتاحة وظائف التعليق في الغرفة، تم إصدار عنصر جديد، وهو "
room-coroutines
". b/69474692 - إنّ طرق DAO التي تحتوي على تعليقات توضيحية باستخدام
@Insert
أو@Delete
أو@Update
تتيح الآن استخدامListenableFuture
كنوع من أنواع الإرجاع. b/119418331
إصلاح الأخطاء
- تم إصلاح الخطأ المتمثل في محاولة الغرفة عن طريق الخطأ العثور على دالة إنشاء باستخدام أعمدة في السمة
ignoredColumns
في@Entity
. b/119830714 - تم إصلاح الخطأ الذي كان لا يؤدي فيه الغرفة إلى وضع علامة على معلَمات طريقة DAO باعتبارها نهائية في التنفيذ الذي تم إنشاؤه. b/118015483
- تم إصلاح الخطأ الذي كان يؤدي إلى تعطُّل معالج الغرفة عند الإبلاغ عن خطأ في طلب بحث ذي رموز خاصة. b/119520136
- تم إصلاح الخطأ الذي كان يؤدي إلى رفض الغرفة عمليات تنفيذ
Collection
أخرى كوسيطات في تعبيرIN
. b/119884035 - تم إصلاح الخطأ المتمثل في تجميع البيانات غير المرغوب فيها في LiveData من الغرفة عند رصدها بشكل دائم، ما يؤدي إلى عدم إصدار بيانات جديدة بعد ذلك. 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. يمكن الآن إضافة تعليقات توضيحية أيضًا باستخدام
@Fts3
أو@Fts4
للفئات التي تحتوي على تعليقات توضيحية باستخدام@Entity
، وذلك للإعلان عن فئة باستخدام جدول بحث في النص الكامل للتعيين. تتوفّر خيارات FTS لإجراء المزيد من التخصيص من خلال طرق التعليق التوضيحي. b/62356416 - العروض: تتيح الغرفة الآن الإعلان عن فئة باعتبارها طلب بحث مخزَّنًا، وتُعرف أيضًا باسم طريقة العرض باستخدام التعليق التوضيحي @DatabaseView. b/67033276
- القيمة التلقائية: تتيح الغرفة الآن تعريف فئات القيمة التلقائية التي تتضمن تعليقات توضيحية على أنّها كيانات ونقاط POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة
@PrimaryKey
و@ColumnInfo
و@Embedded
و@Relation
في الطرق المجرّدة للصف الذي يتضمّن قيمة تلقائية. يُرجى العلم أنّه يجب أيضًا أن يكون هذا التعليق التوضيحي مصحوبًا بـ@CopyAnnotations
لكي تفهمه الغرفة بشكل صحيح. b/62408420 - دعم أنواع إرجاع السلع Rx: إنّ طُرق DAO التي تحتوي على تعليقات توضيحية باستخدام
@Insert
أو@Delete
أو@Update
تتوافق الآن مع أنواع إرجاع Rx:Completable
و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
إصلاح الأخطاء
- تم إصلاح مشكلتين هما لا يتم استرداد الغرفة بشكل صحيح من قاعدة بيانات تالفة أو عملية نقل بيانات غير صالحة أثناء الإعداد. 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-beta01.
الإصدار 2.0.0-beta01
2 تموز (يوليو) 2018
تغييرات واجهة برمجة التطبيقات / السلوك
- تمت إضافة السمة
RoomDatabase.Builder.setQueryExecutor()
للسماح بتخصيص مكان تنفيذ طلبات البحث - تمت إضافة دعم RxJava2
Observable
- أصبحت عمليات تنفيذ DAO وقاعدة البيانات التي تم إنشاؤها نهائية الآن
إصلاح الأخطاء
- تحديد اسم الفئة/الحقل في خطأ "لا يمكن العثور على getter للحقل" b/73334503
- تم إصلاح مشكلة RoomOpenHelper مع الإصدارات القديمة من الغرفة b/110197391.
تبعيات ما قبل AndroidX
بالنسبة إلى إصدارات الغرفة التي تسبق AndroidX، قم بتضمين الاعتماديات التالية:
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-beta2
5 نيسان (أبريل) 2018
إصلاح الأخطاء
تم إصلاح خطأ فادح في تطبيقي Rx
Single
وMaybe
في الغرفة حيث كان يُعيد استخدام طلب البحث مسبقًا، ما يتسبّب في حدوث مشاكل إذا أضفت أكثر من مراقب واحد إلى النتائج المعروضةSingle
أوMaybe
. b/76031240لن تعمل [RoomDatabase.clearAllTables][ref-clearAllTables] على
VACUUM
قاعدة البيانات إذا تم استدعاؤها داخل معاملة. b/77235565
الإصدار 1.1.0-beta1
21 آذار (مارس) 2018
التغييرات في واجهة برمجة التطبيقات
- استنادًا إلى الملاحظات المتعلّقة بمراجعة واجهة برمجة التطبيقات، لم يعُد يقبل
@RawQuery
ضبطString
كمَعلمة طلب البحث. تحتاج إلى استخدام [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (راجع [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] لإنشاء مثيل [SupportSQLiteQuery][ref-SupportSQLiteQuery] بسهولة باستخدام الوسيطات) - تستخدم طريقة [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] في RoomDatabase.Builder الآن
vararg int
بدلاً منvararg Integer
.
إصلاح الأخطاء
- يحاول [RoomDatabase.clearAllTables][ref-clearAllTables] الآن إعادة المساحة إلى نظام التشغيل من خلال وضع نقطة تفتيش WAL و
VACUUM
قاعدة البيانات. - [
@RawQuery
][ref-RawQuery] يقبل الآن أي Pojo للسمةobservedEntities
ما دام Pojo يشير إلى كيان واحد أو أكثر من خلال حقولEmbedded
أوRelation
. b/74041772 - الترحيل: يتعامل تنفيذ مصدر البيانات في الغرفة الآن بشكل صحيح مع التبعيات متعددة الجداول (مثل العلاقات وعمليات الربط). في السابق، لم تنجح هذه السياسات في عرض نتائج جديدة أو قد يتعذّر تجميعها. b/74128314
الإصدار 1.1.0-alpha1
22 كانون الثاني (يناير) 2018
الميزات الجديدة
RawQuery
: تتيح واجهة برمجة التطبيقات الجديدة هذه لطرق@Dao
تلقي لغة الاستعلامات البنيوية (SQL) كمعلمة طلب بحث b/62103290 وb/71458963fallBackToDestructiveMigrationsFrom
: تتيح واجهة برمجة التطبيقات الجديدة هذه فيRoomDatabase.Builder
إمكانية التحكّم بشكل أكثر دقة في السماح بعمليات النقل المدمرة لإصدارات مخطط البدء (مقارنةً بـ fallbackToDestructiveMigration) b/64989640- لا تتيح الغرفة الآن إلا واجهات برمجة التطبيقات الجديدة لنظام ترقيم الصفحات (الإصدار alpha-4 أو الإصدارات الأحدث). وسيتم إيقاف التوافق مع واجهة
LivePagedListProvider
المتوقّفة. لاستخدام الإصدار الأولي من الغرفة، عليك استخدام ميزة الترحيلalpha-4
أو الإصدارات الأحدث والتبديل منLivePagedListProvider
إلىLivePagedListBuilder
إذا لم يسبق لك إجراء ذلك.
إصلاح الأخطاء
- تم تحسين التوافق مع أنواع Kotlin Kapt. b/69164099
- لن يؤدي ترتيب الحقول إلى إلغاء صلاحية المخطط بعد الآن. b/64290754