Room
آخر تعديل | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
11 كانون الأول (ديسمبر) 2024 | 2.6.1 | - | - | 2.7.0-alpha12 |
الإعلان عن التبعيات
لإضافة تبعية على Room، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
تشمل التبعيات لـ Room اختبار عمليات نقل البيانات في Room و Room RxJava.
أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle
ل
تطبيقك أو وحدتك:
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See Add the KSP plugin to your project ksp("androidx.room:room-compiler:$room_version") // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor("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") }
Groovy
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See KSP Quickstart to add KSP to your build ksp "androidx.room:room-compiler:$room_version" // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor "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" }
للحصول على معلومات عن استخدام المكوّن الإضافي KAPT، يُرجى الاطّلاع على مستندات KAPT.
للحصول على معلومات عن استخدام المكوّن الإضافي KSP، يُرجى الاطّلاع على مستندات البدء السريع للمكوّن الإضافي KSP.
للحصول على معلومات عن استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.
لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.
يمكنك اختياريًا استخدام androidx.room:room-common
لاستخدام التعليقات التوضيحية في Room في مكتبات غير تابعة لنظام التشغيل Android (أي وحدات Gradle لـ Java أو Kotlin فقط).
ضبط خيارات المُجمِّع
تتوفّر لـ Room خيارات معالج التعليقات التوضيحية التالية.
room.schemaLocation |
directory
يتيح تصدير مخطّطات قاعدة البيانات إلى ملفات JSON في الدليل المحدّد. اطّلِع على عمليات نقل الغرف للحصول على مزيد من المعلومات. |
room.incremental |
boolean
تفعيل معالج التعليقات التوضيحية المتزايدة في Gradle القيمة التلقائية هي true .
|
room.generateKotlin |
boolean
يمكنك إنشاء ملفات مصدر Kotlin بدلاً من Java. يتطلب استخدام حزمة KSP. القيمة التلقائية هي false .
اطّلِع على ملاحظات الإصدار 2.6.0 لمزيد من التفاصيل.
|
استخدام المكوّن الإضافي Room Gradle
باستخدام الإصدار 2.6.0 من Room والإصدارات الأحدث، يمكنك استخدام "مكوّن إضافي لـ Gradle" من Room لمحاولة ضبط خيارات لأداة تجميع Room. يضبط المكوّن الإضافي المشروع لكي يتم ضبط المخططات التي تم إنشاؤها (وهي نتيجة مهام الترجمة ويتم استخدامها لعمليّات النقل التلقائي) بشكل صحيح للحصول على عمليات إنشاء قابلة للتكرار وقابلة للاحتفاظ بها في ذاكرة التخزين المؤقت.
لإضافة المكوّن الإضافي، حدِّد المكوّن الإضافي وإصداره في ملف 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
عند استخدام "مكوّن Room Gradle الإضافي". سيؤدي ذلك
إلى ضبط مُجمِّع Room ومهام الترجمة المختلفة وعمليات الترجمة المتقدّمة
(javac وKAPT وKSP) لإخراج ملفات المخططات في المجلدات المخصّصة، على سبيل المثال
schemas/flavorOneDebug/com.package.MyDatabase/1.json
. يجب إرسال هذه الملفات
إلى المستودع لاستخدامها في عمليات التحقّق من الصحة والنقل التلقائي.
لا يمكن ضبط بعض الخيارات في جميع إصدارات "مكوّن Room Gradle الإضافي"،
حتى إذا كانت متوافقة مع مُجمِّع Room. يسرد الجدول أدناه كل خيار ويعرض إصدار "مكوّن إضافي لـ Gradle" في Room الذي أضاف إمكانية ضبط هذا الخيار باستخدام إضافة room
. إذا كان إصدارك أقل،
أو إذا لم يكن الخيار متاحًا بعد، يمكنك استخدام
خيارات معالج التعليقات التوضيحية بدلاً من ذلك.
Option | منذ الإصدار |
---|---|
room.schemaLocation (مطلوب) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
استخدام خيارات معالج التعليقات التوضيحية
إذا لم تكن تستخدِم المكوِّن الإضافي Room Gradle، أو إذا كان الخيار الذي تريده غير متوافق مع إصدار المكوِّن الإضافي، يمكنك ضبط Room باستخدام خيارات معالج التعليقات التوضيحية، كما هو موضّح في إضافة متطلّبات إنشاء التطبيق. تعتمد كيفية تحديد خيارات التعليقات التوضيحية على ما إذا كنت تستخدم KSP أو KAPT في Room.
رائع
// 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 من معرفة هذا الدليل عند إجراء عمليات التحقّق من التحديثات.
نقل بيانات قاعدة بيانات Room: يعرض
هذا القسم تنفيذًا كاملاً لـ CommandLineArgumentsProvider
يقدّم
الموقع الجغرافي للنموذج.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 2.7
الإصدار 2.7.0-alpha12
11 كانون الأول (ديسمبر) 2024
تم إصدار androidx.room:room-*:2.7.0-alpha12
. يتضمّن الإصدار 2.7.0-alpha12 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- أضِف واجهة برمجة التطبيقات التجريبية
RoomDatabase.Builder.setInMemoryTrackingMode()
لضبط ما إذا كان تطبيق Room سيستخدم جدولاً في الذاكرة أم لا لتتبُّع عمليات الإبطال. (I2a9b2، b/185414040)
إصلاح الأخطاء
- تؤدي عمليات نقل البيانات التدميرية الآن إلى حذف طرق العرض لضمان إعادة إنشائها، ما يؤدي إلى مواءمة السلوك عندما يكون الخيار allowDestructiveMigrationForAllTables
مفعّلاً (الإعداد التلقائي في KMP) مع السلوك الحالي عندما يكون الخيار غير مفعّل. (0a3e83، b/381518941)
الإصدار 2.7.0-alpha11
30 تشرين الأول (أكتوبر) 2024
تم إصدار androidx.room:room-*:2.7.0-alpha11
. يتضمّن الإصدار 2.7.0-alpha11 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- راجِع توقيع طريقة
convertRows()
المُضافة حديثًا ليكون وظيفة تعليق تتلقّىRawRoomQuery
لفهرسة الغرف. (Ie57b5، b/369136627)
إصلاح الأخطاء
- تم إصلاح المشكلة في تقسيم الغرف التي كان يتم فيها إنشاء رمز غير صالح عند استخدام
@Relation
معPagingSource
.
الإصدار 2.7.0-alpha10
16 أكتوبر 2024
تم إصدار androidx.room:room-*:2.7.0-alpha10
. يتضمّن الإصدار 2.7.0-alpha10 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- أنشئ فئة
ByteArrayWrapper
داخلية لتفعيل العلاقات معByteBuffer
في الأنظمة الأساسية غير المستندة إلى Android وJVM. (I75543، b/367205685) - أضِف
SQLiteStatement.getColumnType()
مع الثوابت المختلفة للنتائجSQLITE_DATA_*
لتفعيل استرداد نوع البيانات لعمود معيّن. (I1985c، b/369636251)
الإصدار 2.7.0-alpha09
2 أكتوبر 2024
تم إصدار androidx.room:room-*:2.7.0-alpha09
. يتضمّن الإصدار 2.7.0-alpha09 هذه المساهمات.
إصلاح الأخطاء
- إصلاح مشكلة في تنفيذ KMP لـ
room-paging
التي قد تؤدي إلىError code: 8, message: attempt to write a readonly database
بسبب بدء معاملة كتابة على اتصال للقراءة (b/368380988)
الإصدار 2.7.0-alpha08
18 أيلول (سبتمبر) 2024
تم إصدار androidx.room:room-*:2.7.0-alpha08
. يتضمّن الإصدار 2.7.0-alpha08 عمليات الربط هذه.
الميزات الجديدة
- تم نقل عناصر
room-paging
لتكون متوافقة مع KMP. (Ib8756، b/339934824) - تمّت إتاحة واجهة برمجة التطبيقات
invalidationTrackerFlow()
كواجهة برمجة تطبيقات تابعة للطرف الأول باسمInvalidationTracker.createFlow()
، وهي متاحة الآن لمجموعات المصادر غير المخصّصة لنظام التشغيل Android في مشاريع KMP. (I1fbfa، (I8fb29)، b/329291639، b/329315924)
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة أو استبدال جميع التحذيرات ورسائل الخطأ في Room التي تستخدم الكلمة
Cursor
، لأنّCursor
لم تعُد عبارة عامة دقيقة لاستخدامها في إصدار KMP من Room. (Id8cd9، b/334087492)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى محاولة Room KMP إنشاء رمز باستخدام
UUID
لمنصّات غير منصّة Java Virtual Machine. (b/362994709) - تم إصلاح مشكلة في مكوّن Room Gradle الإضافي كانت تؤدي إلى ظهور خطأ مثل "لا يمكن تغيير سمات الإعدادات … بعد قفلها للتغيير" عند استخدامه في مشروع KMP مع Compose Multiplatform. (b/343408758)
الإصدار 2.7.0-alpha07
21 آب (أغسطس) 2024
تم إصدار androidx.room:room-*:2.7.0-alpha07
. يتضمّن الإصدار 2.7.0-alpha07 عمليات الربط هذه.
الميزات الجديدة
- سيضيف الآن "مكوّن Room Gradle الإضافي" المخططات التي تم تصديرها تلقائيًا إلى مصادر موارد "اختبار أداة قياس الأداء من Android" حتى يمكن استخدامها من قِبل
MigrationTestHelper
.
إصلاح الأخطاء
- تم إصلاح مشكلة في القيمة "الفعلية" التي تم إنشاؤها للدالة
RoomDatabaseConstructor
والتي لا تتضمّن المُعدِّل "الفعلية" في الدالةinitialize
إذا تم إلغاء هذه الدالة أيضًا في بيان "التوقّع". (359631627) - تم إصلاح مشكلة في القيمة "الفعلية" التي تم إنشاؤها للعنصر
RoomDatabaseConstructor
والتي لا تتطابق مع مستوى ظهور العنصر "توقّع". (358138953)
الإصدار 2.7.0-alpha06
7 آب (أغسطس) 2024
تم إصدار androidx.room:room-*:2.7.0-alpha06
. يتضمّن الإصدار 2.7.0-alpha06 عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- تغيير إعداد إنشاء مثيل لـ
RoomDatabase
في مشروع KMP
بسبب نموذج الترجمة في Kotlin 2.0، لم تعُد استراتيجية الإشارة إلى دالة ستتمّ إنشاؤها باسم instantiateImpl()
قابلة للتطبيق. تمّ طرح واجهتَي برمجة تطبيقات جديدتَين، @ConstructedBy
وRoomDatabaseConstructor
، تحلّان محلّ استراتيجية instantiateImpl()
. في ما يلي الاستراتيجية الجديدة:
حدِّد عنصرًا متوقّعًا ينفذ
RoomDatabaseConstructor
.expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
ربط الكائن ببيان
@Database
باستخدام@ConstructedBy
@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
إنشاء مثيل قاعدة بيانات جديد بدون تمرير مَعلمة مصنع
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
إصلاحات في b/316978491 و b/338446862 و b/342905180
- إتاحة
@RawQuery
في Room KMP من خلال إضافة واجهة برمجة تطبيقات جديدة تُسمىRoomRawQuery
تشبهSupportSQLiteQuery
من حيث الاحتفاظ بسلسلة SQL الأوّلية ودالة لربط الوسيطات في عبارة يمكن الآن لدوالّ@RawQuery
المُشارَك فيها تعليقات توضيحية قبولRoomRawQuery
كمَعلمة واحدة. (Iea844، b/330586815) - أضِف وظيفية زائدة لـ
setQueryCallback()
تقبلCoroutineContext
. (Id66ff، b/309996304) - تمت إضافة إمكانية استهداف
linuxArm64
Kotlin Multiplatform (I139d3 وb/338268719)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى إنشاء Room بشكلٍ غير صحيح لطلب
recursiveFetchArrayMap
في استهدافات غير Android. (710c36، b/352482325) - تم إصلاح مشكلة كانت تؤدي أحيانًا إلى ظهور استثناء في Room بشأن "انتهت مهلة محاولة الاتصال" في مشروع KMP. (fa72d0، b/347737870)
- إصلاح مشكلة في عمليات نقل البيانات التلقائية التي كانت تبحث عن المفاتيح الخارجية في وقت مبكر جدًا قبل أن تغيّر الجداول الأخرى مخطّطاتها بما يتوافق مع المفاتيح الخارجية الجديدة (7672c0، b/352085724)
الإصدار 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 هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة في معالِج التعليقات التوضيحية في Room التي كانت تؤدي إلى إنشاء رمز KMP غير متوافق عند تحديد نوع إرجاع متعدد الخرائط في DAO. (b/340983093)
- تم إصلاح مشكلة تعذُّر العثور على تنفيذ قاعدة البيانات التي تم إنشاؤها في Room إذا لم تكن الفئة التي تمت عليها التعليقات التوضيحية
@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 يُرجى العِلم أنّ الإصدار 2.0 من Kotlin مع دعم 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 الأصلي. وسيتم توفير أي وظائف غير متوفّرة في الإصدارات القادمة من Room على المنصات التي تمّت إتاحتها حديثًا.
لمزيد من المعلومات عن كيفية بدء استخدام Room KMP، يُرجى الرجوع إلى مستندات Room KMP الرسمية.
- تم تفعيل إنشاء رموز Kotlin على KSP تلقائيًا في حال إجراء المعالجة من خلال KSP. بالنسبة إلى المشاريع التي تستخدم KAPT أو Java فقط، سيظلّ Room ينشئ مصادر Java.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة تحميل زائدة لدالة
Room.databaseBuilder()
تأخذ مَعلمة lambda مخصّصة للاستخدام مع دالة تم إنشاؤها في Room لتجنُّب استخدام ميزة Reflection عند إنشاء مثيل لتنفيذRoomDatabase
الذي تم إنشاؤه. في ما يلي أمثلة على الاستخدام:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- تمت إضافة واجهة برمجة تطبيقات لضبط "غرفة" باستخدام
CoroutineContext
إلى أداة الإنشاء:RoomDatabase.Builder.setQueryCoroutineContext
. يُرجى العِلم أنّه لا يمكن ضبطRoomDatabase
إلا باستخدام أحد اثنين: إما مشغّلات باستخدامsetQueryExecutor
أو سياق Coroutine، ولكن ليس كليهما. - تمت إضافة واجهة برمجة تطبيقات لضبط Room باستخدام برنامج تشغيل
SQLite
:RoomDatabase.Builder.setDriver()
. لمزيد من المعلومات حولSQLite
Driver API، يُرجى الرجوع إلى مستندات SQLite KMP. - تمّت إضافة واجهات برمجة تطبيقات للوصول إلى
SQLiteConnection
الأساسية من واجهات برمجة تطبيقات برامج التشغيل:RoomDatabase.useReaderConnection
وRoomDatabase.useWriterConnection
. - تم الآن إضافة إصدار مُحمَّل بشكل زائد إلى عمليات تسجيل المكالمات ذات الصلة بتطبيق Varios Room، حيث يتلقّى هذا الإصدار
SQLiteConnection
بدلاً منSupportSQLiteDatabase
. ومن المفترض أن يتم إلغاء هذه الإعدادات عند نقل البيانات إلى مشروع KMP. لمزيد من المعلومات عن نقل استخدامات Room في تطبيق 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. تم أيضًا تضمين حلّ محتمل لحالة طارئة مشابهة للأعمدة من النوع Float. (Id75f5، b/304584179) - سيتم الآن نشر الاستثناءات التي يتم طرحها من عمليات تحميل
PagingSource
كLoadStateUpdate
منLoadResult.Error
يحتوي على Throwable. يمكن ملاحظة حالة الخطأ هذه من خلال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") في حزمة تطوير البرامج (KSP) لنظام Room. (4297ec0). لتفعيل ميزة Kotlin CodeGen في Room، أضِف اسم الخيار
room.generateKotlin
إلى خيارات المعالج في KSP. لمزيد من التفاصيل حول كيفية ضبط خيارات المعالج لبروتوكول KSP، يُرجى الاطّلاع على مستندات KSP.
ملاحظة: عند استخدام Kotlin CodeGen، من المهمّ ملاحظة أنّ هناك قيودًا إضافية تمّت إضافتها. لا يُسمح باستخدام السمات المجردة كآليات جلب DAO أو طلبات بحث DAO في Kotlin CodeGen، ومن المفترض أن تتم إعادة كتابتها كدوالّ بدلاً من ذلك لتجنُّب الاعتقاد الخاطئ بأنّ قيمة السمة غير قابلة للتغيير وأنّ لها نتيجة ثابتة مخزّنة. تم أيضًا فرض قيد آخر يقضي بعدم السماح بأنواع الإرجاع لمجموعات Nullable في Room for Kotlin CodeGen.
تحذير: قد تلاحظ أنّ مشروعاتك أكثر صرامة من حيث إمكانية قبول القيم الفارغة عند استخدام Kotlin CodeGen. في Kotlin CodeGen، تكون قيمة عدم تحديد الهوية لوسيطات النوع مهمة، في حين يتم تجاهل ذلك في Java في معظم الأحيان. على سبيل المثال، لنفترض أنّ لديك نوع إرجاع "Flow<foo\>" والجدول فارغ. لن يتسبب ذلك في أي مشاكل في CodeGen في Java، ولكن سيظهر لك خطأ في CodeGen في Kotlin. لتجنُّب ذلك، عليك استخدام Flow<foo?\>، بافتراض أنّه يتم عرض قيمة فارغة. </foo?\></foo\>
- تمت إضافة العنصر الجديد لواجهة Room Gradle Plugin إلى Room باستخدام المعرّف
androidx.room
، ما يحلّ العديد من المشاكل الحالية في Room في ما يتعلق بتوفير مدخلات ومخرجات للمخططات من خلال خيارات معالج التعليقات التوضيحية في Gradle. لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات إصدار Room 2.6.0-alpha02. - أصبحت فئات القيم في عناصر الغرف متوافقة الآن مع KSP. (4194095)
- أصبحت أنواع العناصر المعروضة في الخريطة المتداخلة في وظائف DAO متاحة الآن في Room. (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 على هذه المراجعات.
الميزات الجديدة
- أصبحت أنواع العناصر المعروضة في الخريطة المتداخلة في وظائف DAO متاحة الآن في Room. (I13f48، 203008711)
تغييرات واجهة برمجة التطبيقات
- تم إنشاء تعليق توضيحي جديد للنوع يُسمى
@MapColumn
ليحلّ محلّ@MapInfo
الذي تم إيقافه نهائيًا. لكل اسم عمود (keyColumnName
أوvalueColumnName
أو كليهما) مقدَّم في تعليق توضيحي@MapInfo
، عليك تحديد تعليق توضيحي@MapColumn
يتضمّنcolumnName
فقط واستخدام التعليق التوضيحي على مَعلمة النوع المحدّدة التي تتم الإشارة إليها (المفتاح أو قيمة Map) في نوع الإرجاع لدالة DAO. ويرجع ذلك إلى أنّ التعليق التوضيحي@MapColumn
يتم استخدامه مباشرةً على وسيطة type ضمن نوع الإرجاع لدالة 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 الإضافي
يحتوي هذا الإصدار الجديد على عنصر جديد لمكوّن إضافي في Gradle لمشروع Room يحمل رقم التعريف androidx.room
، ما يحلّ العديد من المشاكل الحالية في Room المتعلّقة بتوفير مدخلات ومخرجات للمخططات من خلال خيارات معالج التعليقات التوضيحية في Gradle. يضبط "مكوّن إضافي لـ Gradle" في Room المشروع بحيث يتم ضبط المخططات التي تم إنشاؤها والتي يتم استخدامها لعملية نقل البيانات التلقائية وتكون ناتجة عن مهام الترجمة بشكل صحيح للحصول على عمليات إنشاء قابلة للتكرار والتخزين المؤقت. يوفّر المكوّن الإضافي لغة وصفية لضبط موقع المخطّط الأساسي:
room {
schemaDirectory("$projectDir/schemas/")
}
سيضبط المكوّن الإضافي بعد ذلك برنامج التحويل البرمجي Room ومهام التحويل البرمجي المختلفة وبرامج التشغيل الخلفية (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 على هذه المراجعات.
الميزات الجديدة
- السماح بفئات القيم في "الغرفة" لـ KSP يمكن الآن لـ Room إتاحة فئات القيم في "العناصر". (4194095)
- يمكن الآن تفعيل ميزة إنشاء الرموز البرمجية بلغة Kotlin(أو "Kotlin CodeGen") في Room (4297ec0). لتفعيل ميزة Kotlin CodeGen في Room، أضِف اسم الخيار
room.generateKotlin
إلى خيارات المعالج في KSP. لمزيد من التفاصيل حول كيفية ضبط خيارات المعالج لبروتوكول KSP، يُرجى الاطّلاع على مستندات KSP.
ملاحظة: عند استخدام Kotlin CodeGen، من المهمّ ملاحظة أنّ هناك قيودًا إضافية تمّت إضافتها. لا يُسمح باستخدام السمات المجردة كآليات جلب DAO أو طلبات بحث DAO في Kotlin CodeGen، ومن المفترض أن تتم إعادة كتابتها كدوالّ بدلاً من ذلك لتجنُّب الاعتقاد الخاطئ بأنّ قيمة السمة غير قابلة للتغيير وأنّ لها نتيجة ثابتة مخزّنة. تم أيضًا فرض قيد آخر يقضي بعدم السماح بأنواع الإرجاع لمجموعات Nullable في Room for Kotlin CodeGen.
تحذير: قد تلاحظ أنّ مشروعاتك أكثر صرامة من حيث إمكانية قبول القيم الفارغة عند استخدام Kotlin CodeGen. في Kotlin CodeGen، تكون قيمة عدم تحديد الهوية لوسيطات النوع مهمة، في حين يتم تجاهل ذلك في Java في معظم الأحيان. على سبيل المثال، لنفترض أنّ لديك نوع إرجاع "Flow<foo\>" والجدول فارغ. لن يتسبب ذلك في أي مشاكل في CodeGen في Java، ولكن سيظهر لك خطأ في CodeGen في Kotlin. لتجنُّب ذلك، عليك استخدام 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). أثناء إجراء معاملة معلّقة، يستخدم Room سلسلة محادثات من منفّذ المعاملة، ويشغّل حلقة أحداث فيها ويرسل إليها عمليات تعليق قاعدة البيانات حتى يتم تجميعها جميعًا في سلسلة محادثات إعادة التشغيل المتزامنة للمعاملة. من المتوقّع عادةً أن تكون سلسلة محادثات المعاملة مختلفة عن سلسلة المحادثات التي تبدأ المعاملة، ولكن في بعض الحالات تكونا متطابقتَين. لمعالجة هذه الحالات التي تتكرّر فيها المهام، تمت إعادة صياغة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/203666906)
تغييرات واجهة برمجة التطبيقات
- تم تحويل
room-runtime
بالكامل من Java إلى Kotlin. (If2069، b/206859668)،(Ie4b55، b/206859668)، (I697ee، b/206859668)، (I96c25، b/206859668)ملاحظة: قد تواجه مشاكل عدم توافق مع المصدر بسبب تحويل المكتبة إلى Kotlin. إذا كان الرمز البرمجي بتنسيق Kotlin وكان يستدعي الإصدار القديم من Room، يجب أن يتعامل الإصدار الجديد مع هذه الحالات. على سبيل المثال، من التغييرات غير المتوافقة مع المصدر المعروف أنّه في
InvalidationTracker
، ستحتاج الآن إلى تحديدonInvalidate()
فيObserver
للحصول على مَعلمة من النوعSet
وليسMutableSet
. - تمت إضافة واجهات برمجة تطبيقات لتوفير أسماء جداول المفاتيح والقيم لإزالة الغموض في
@MapInfo
(Icc4b5) - حلّ مشكلة التوافق مع المصدر لإعادة السماح باستخدام
@Ignore
في أدوات الحصول على المواقع (Ifc2fb)
إصلاح الأخطاء
- خوارزمية استدلالية لحلّ مشكلة الأعمدة المكرّرة سيحاول Room الآن حلّ الأعمدة الغامضة في استعلام الخريطة المتعددة. يتيح ذلك ربط عبارات JOIN مع الجداول التي تحتوي على جداول تحمل الاسم نفسه بشكل صحيح بعنصر بيانات نتيجة. (I4b444، b/201306012، b/212279118)
الإصدار 2.5.0-alpha01
23 شباط (فبراير) 2022
تم إصدار androidx.room:room-*:2.5.0-alpha01
. يحتوي الإصدار 2.5.0-alpha01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة عدم فرض استخدام
@IntDef
في Room في مصادر Kotlin. (I75f41، b/217951311) - تم إصلاح مشكلة التوافق مع المصدر لإعادة السماح باستخدام
@Query
في أدوات الحصول على المواقع. (I0a09b) - تم تحويل room-common من 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 حيث سيستخدم اسم
المصدر للدوالّ أثناء مطابقتها مع السمات كأدوات جلب/ضبط
(في السابق، كان يستخدم اسم JVM للدالة الذي يختلف
للدوالّ/السمات الداخلية).
إذا كنت تستخدم تعليقات توضيحية مخصّصة
@JvmName
لمطابقة وظائف الحصول/الضبط بالسمات الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التحديث (If6531، b/205289020).
الإصدار 2.4.3
الإصدار 2.4.3
27 تموز (يوليو) 2022
تم إصدار androidx.room:room-*:2.4.3
. يحتوي الإصدار 2.4.3 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى عدم تعرّف Room على دوالّ التعليق في 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) - حلّ خطأ يؤدي إلى إنشاء Room رمزًا لطريقة طلب نوع الإرجاع
Array<ByteArray>
(If086e، b/213789489)
الإصدار 2.4.1
الإصدار 2.4.1
12 كانون الثاني (يناير) 2022
تم إصدار androidx.room:room-*:2.4.1
. يحتوي الإصدار 2.4.1 على هذه المراجعات.
إصلاح الأخطاء
- تمت إضافة إمكانية استخدام السمات الداخلية في مصادر Kotlin.
هذا تغيير بسيط في السلوك في Room حيث سيستخدم اسم
المصدر للدوالّ أثناء مطابقتها مع السمات كأدوات جلب/ضبط
(في السابق، كان يستخدم اسم JVM للدالة الذي يختلف
للدوالّ/السمات الداخلية).
إذا كنت تستخدم تعليقات توضيحية مخصّصة
@JvmName
لمطابقة وظائف الحصول/الضبط بالسمات الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التحديث (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
للإبلاغ عن الإصدارات المطلوب نقل بياناتها تلقائيًا من وإلى. عندما يحتاج Room إلى معلومات إضافية بشأن عمليات إعادة تسمية الجداول والأعمدة أو حذفها، يمكن للتعليق التوضيحي@AutoMigration
أن يعلن عن فئة مواصفات تحتوي على هذه الإدخالات. راجِع مستندات@AutoMigration
للحصول على مزيد من التفاصيل. - حقن التبعيات في عمليات نقل البيانات التلقائية:
@ProvidedAutoMigrationSpec
هي واجهة برمجة تطبيقات جديدة للإعلان عن أنّه سيتم توفيرAutoMigrationSpec
أثناء التشغيل من خلالRoomDatabase.Builder#addAutoMigrationSpec()
. يتيح ذلك لإطار عمل حقن التبعية تقديم هذه المواصفات عندما يحتاج إلى تبعيات معقّدة. - إتاحة "مساعِد اختبار نقل البيانات" لنقل البيانات التلقائي: تم تعديل
MigrationTestHelper
في Room لإتاحة نقل البيانات التلقائي من خلال توفير واجهة برمجة تطبيقات جديدة لإنشاء العناصر تتلقّى فئة قاعدة البيانات التي يتم اختبارها. يتيح ذلك للمساعد إضافة عمليات نقل البيانات التلقائية تلقائيًا بالطريقة نفسها أثناءrunMigrationsAndValidate
. - إتاحة ميزة "التنقّل في الغرف": تم إصدار الإصدار
androidx.room:room-paging
، الذي يتيح استخدام ميزة "التنقّل في الغرف" 3.0 الأصلية لطلبات البحث عن الغرف التي تعرضandroidx.paging.PagingSource
. - طرق الاستعلامات ذات الصلة: تتيح Room الآن استخدام طرق
@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 في Room إلى
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)
إصلاح الأخطاء
- لقد أضفنا محلِّلًا جديدًا لـ TypeConverter يأخذ في الاعتبار معلوماتعدم السماح بالقيمة الخالية في الأنواع. وبما أنّ هذه المعلومات متاحة فقط في "شركاء المحتوى في خرائط Google"، يتم تفعيلها تلقائيًا في هذا البرنامج فقط. إذا تسبّبت هذه الميزة في أي مشاكل، يمكنك إيقافها عن طريق ضبط قيمة room.useNullAwareTypeAnalysis=false في معالج التعليقات التوضيحية. في حال حدوث ذلك، يُرجى الإبلاغ عن خطأ في الملف لأنّه سيتم إزالة هذا الشعار في المستقبل. باستخدام هذا المحلّل الجديد لـ TypeConverter، يُنصح بتوفير TypeConverters لتلقّي قيم غير فارغة فقط لأنّ المحلّل الجديد لديه القدرة على ملفّفتها باستخدام عملية التحقّق من القيمة الخالية. يُرجى العِلم أنّ هذا التغيير لن يؤثر في المستخدمين الذين يستخدمون KAPT أو Java كمُعالجَي التعليقات التوضيحية (على عكس KSP)، ولا يتضمّنون معلومات عن قابلية القيمة الخالية في الأنواع. (Ia88f9، b/193437407)
- تم إصلاح خطأ كان يؤدي إلى تعذُّر تجميع Room بسبب خطأ SQL عندما يتمّ الإعلان عن عنصر FTS لاستخدام أداة تقسيم الكلمات ICU. (I00db9، b/201753224)
- تم حلّ مشكلة في عمليات نقل البيانات التلقائية المتعلّقة بعمود جديد تمت إضافته إلى عنصر مضمّن بين الإصدارات. (I5fcb1b/193798291)
- لقد حللنا مشكلة متعلّقة بأنواع النتائج التي تعرِضها طريقة الاستعلام العلائقي في استعلامات LEFT JOIN. مع إجراء هذه التغييرات، في حال توفّر تعيين من عنصر واحد إلى عناصر متعددة، لن تتضمّن المجموعة التي يتم عرضها للمفتاح عنصر القيمة غير الصالحة إذا لم يتم العثور عليه في المؤشر. في حال عدم العثور على أي قيم صالحة، سيتم ربط مفتاح بمجموعة فارغة. (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 للسماح للمطوّرين بإيقاف محوِّلَي Enum وUUID المضمّنين. تكون هذه المحوِّلات مفعّلة تلقائيًا، ولكن يمكنك إيقافها لنطاق معيّن أو للقاعدة البيانات بأكملها. اطّلِع على مستندات TypeConverters للحصول على التفاصيل. (36ae9e، b/195413406)
السماح باستخدام مفاتيح/قيم غير POJO لأنواع عرض Multimap في 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 مع Room. (Ieaffe)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ترتيب نتائج طلبات البحث عن الخرائط المتعددة بشكل صحيح عندما يتضمّن طلب البحث عبارة ORDER BY لعمود من مفتاح الخريطة. (I6b887)
المساهمة الخارجية
- تمت إضافة واجهة برمجة تطبيقات جديدة لتحديد ترتيب الفهرس في @Index. مع أطيب التحيّات، نيكيتا زيلونكين (I033fc)
الإصدار 2.4.0-alpha04
21 تموز (يوليو) 2021
تم إصدار androidx.room:room-*:2.4.0-alpha04
. يحتوي الإصدار 2.4.0-alpha04 على هذه المراجعات.
الميزات الجديدة
تتيح Room الآن طرق إرجاع
@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
، ما يتيح استخدام 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
الذي أنشأته أداة Room بتنفيذ تم إنشاؤه استنادًا إلى واجهات برمجة تطبيقات Paging 3.0. يُحلِّل تنفيذ PagingSource الجديد المفاتيح بشكلٍ مختلف، لذا يجب أن يراعي أي مفتاح مقدَّم يدويًا إلى PagingSource في Room هذا التغيير في السلوك، بما في ذلك المفتاح الأولي الذي تم تمريره من خلال دالة الإنشاء في Pager. سيبدأ تحميل الصفحات منKey
، وسيكونKey
هو أول عنصر يتم تحميله. يختلف هذا السلوك عن السلوك الحالي الذي يتم فيه التعامل معLoadParams.Refresh.Key
على أنّه موضع التمرير للمستخدم ويتم تحميل العناصر قبل المفتاح وبعده.العنصر اختياري، وسيؤدي إيقافه إلى الرجوع إلى الإصدار الحالي من Paging 3.0 الذي تم تقديمه في Room 2.3. ومع ذلك، سيصبح هذا العنصر غير اختياري في الإصدارات المستقبلية لأولئك الذين يستخدمون ميزة "الغرفة مع التنقّل في الصفحة" 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
في Room لتتمكّن من نقل البيانات تلقائيًا من خلال توفير واجهة برمجة تطبيقات جديدة لإنشاء العناصر تتلقّى فئة قاعدة البيانات التي يتم اختبارها. يتيح ذلك للمساعد إضافة عمليات نقل البيانات التلقائية تلقائيًا بالطريقة نفسها أثناءrunMigrationsAndValidate
.
إصلاح الأخطاء
تم إصلاح مشكلة في مكتبة SQLite الأصلية في Room لتتوافق مع شرائح M1 من Apple. (b/174695268
تم إصلاح مشكلة عدم ظهور خطأ في Room عندما يكون نوع الإرجاع لدالة @Transaction هو Flow (I56ddd، b/190075899)
إصلاح مشكلة في عمليات نقل البيانات التلقائية المتعلّقة بالفهارس b/177673291
تعديلات على التبعيات
- يعتمد الآن دعم KSP في Room على KSP
1.5.10-1.0.0-beta01
. (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
في Room حيث كان يتم أحيانًا استدعاء دالة الاستدعاء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
للإبلاغ عن الإصدارات المطلوب نقل بياناتها تلقائيًا من وإلى. عندما يحتاج Room إلى معلومات إضافية بشأن عمليات إعادة تسمية الجداول والأعمدة أو حذفها، يمكن للتعليق التوضيحي@AutoMigration
أن يعلن عن فئة مواصفات تحتوي على هذه الإدخالات. راجِع مستندات@AutoMigration
للحصول على مزيد من التفاصيل.
إصلاح الأخطاء
- تم إصلاح مشكلة التحقّق بشكل غير صحيح من صحة الرمز
defaultValue
الذي يتضمّن قوسًا إضافيًا من خلال عملية التحقّق من صحة المخطّط في Room. b/182284899
الإصدار 2.3.0
الإصدار 2.3.0
21 نيسان (أبريل) 2021
تم إصدار androidx.room:room-*:2.3.0
. يحتوي الإصدار 2.3.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 2.2.0
- دعم Enum المضمّن: ستستخدم الغرفة الآن بشكل تلقائي محوِّلًا من النوع Enum إلى String والعكس إذا لم يتم توفير أيّ محوِّل. إذا كان هناك محوِّل أنواع لقائمة أرقام مميزة، ستعطي Room الأولوية لاستخدامه بدلاً من المحوِّل التلقائي.
- الاستدعاء عند اكتمال الاستعلام: يوفّر Room الآن واجهة برمجة تطبيقات عامة للاستدعاء عند اكتمال الاستعلام RoomDatabase.QueryCallback، وذلك عندما تكون الاستعلامات على وشك التنفيذ، ما قد يكون مفيدًا لتسجيل عمليات تسجيل الأخطاء في عمليات الإنشاء المخصّصة لتصحيح الأخطاء. يمكن ضبط وقت معاودة الاتصال من خلال
RoomDatabase.Builder#setQueryCallback()
. - تحسين مُعدّ مسبقًا: تتضمّن Room الآن واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات مُعدّة مسبقًا يتم قراءتها من مصدر إدخال. ويتيح ذلك حالات مثل استخدام تنسيق gzip لضغط قاعدة بيانات الحزمة المُسبقة.
- محوِّلات الأنواع المقدَّمة: تتضمّن Room الآن واجهات برمجة تطبيقات لتوفير نُسخ من محوِّلات الأنواع حتى يتمكّن التطبيق من التحكّم في عملية بدء تشغيلها. لوضع علامة على محوِّل نوع سيتم توفيره لواجهة Room، استخدِم التعليق التوضيحي الجديد @ProvidedTypeConverter.
- التوافق مع RxJava3: تتيح أداة Room الآن أنواع RxJava3. على غرار RxJava2، يمكنك تحديد طرق DAO التي يكون نوع الإرجاع فيها Flowable وSingle وMaybe وCompletable. بالإضافة إلى ذلك، يتوفّر عنصر جديد
androidx.room:room-rxjava3
لدعم RxJava3. - إتاحة Paging 3.0: ستتيح أداة Room الآن إنشاء عمليات تنفيذ لطرق
@Query
التي تمت عليها تعليقات توضيحية ونوع الإرجاع فيها هوandroidx.paging.PagingSource
.
الإصدار 2.3.0-rc01
24 آذار (مارس) 2021
تم إصدار androidx.room:room-*:2.3.0-rc01
. يحتوي الإصدار 2.3.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تمنع استخدام طلبات بحث Coroutine Flow التي أنشأتها 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)
المساهمة الخارجية
- اسمح لـ Room بقبول نوع إرجاع POJO في طريقة DAO
@Query
التي تمت عليها تعليقات توضيحية عندما تكون مُعلّقة توضيحيًا أيضًا باستخدام@SkipQueryVerification
. سيبذل Room قصارى جهده لتحويل نتيجة الاستعلام إلى نوع الإرجاع POJO بالطريقة نفسها التي يتم بها تنفيذ@RawQuery
طريقة DAO التي تمت عليها تعليقات توضيحية. مع أطيب التحيّات، "ماركوس ريغل | hey@marcorei.com". (I45acb)
الإصدار 2.3.0-beta02
18 شباط (فبراير) 2021
تم إصدار androidx.room:room-*:2.3.0-beta02
. يحتوي الإصدار 2.3.0-beta02 على هذه المراجعات.
الميزات الجديدة
تتوفّر الآن ميزة معالجة الرموز في Kotlin KSP بشكل تجريبي في Room.
ويوفّر KSP بديلاً عن KAPT لتشغيل معالجات التعليقات التوضيحية بشكل أصلي على مُجمِّع Kotlin، ما يؤدي إلى تقليل أوقات الإنشاء بشكل كبير.
لاستخدام Room مع 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 على هذه المراجعات.
الميزات الجديدة
- يوفّر Room الآن واجهة برمجة تطبيقات عامة للرجوع
RoomDatabase.QueryCallback
، وذلك عندما تكون طلبات البحث على وشك التنفيذ، ما قد يكون مفيدًا لتسجيل عمليات تسجيل الأخطاء في الإصدارات التجريبية. يمكن ضبط وقت معاودة الاتصال من خلالRoomDatabase.Builder#setQueryCallback()
. (Iaa513، b/174478034، b/74877608) - سيستخدم Room الآن بشكل تلقائي محوِّلًا من النوع "قائمة بقيم محدّدة" إلى النوع "سلسلة" والعكس إذا لم يتم توفير أيّ محوِّل. إذا كان هناك محوِّل أنواع لقائمة أرقام مميزة، ستعطي Room الأولوية لاستخدامه بدلاً من المحوِّل التلقائي. (b/73132006)
مشكلة معروفة
- إذا كان هناك محوِّل نوع أحادي الاتجاه للقراءة متوفرًا للتعداد، قد يستخدم Room عن طريق الخطأ المحوِّل المضمّن من String إلى Enum الذي قد لا يكون مطلوبًا. هذه مشكلة معروفة ويمكن حلّها من خلال تحويلها إلى محوِّل ثنائي الاتجاه. راجِع: b/175707691
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى إيقاف Room لمعالجة التعليقات التوضيحية المتزايدة بشكل غير صحيح في إصدارات JDK الأحدث. (b/171387388)
- تم إصلاح مشكلة في Room تتعلّق بالعثور على الفئة التي تم إنشاؤها عند استخدام أدوات تحميل فئات متعددة. نشكرك على الإصلاح الذي قدّمه "صُدفة" | 892449346@qq.com. (b/170141113)
- تم إصلاح مشكلة كانت تؤدي إلى إنشاء Room لرمز غير صحيح عندما يتضمّن
@Dao
في Kotlin فئة أساسية تكون أنواعها العامة أساسية في Java Virtual Machine. (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)تتضمّن Room الآن واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات مُجمَّعة مسبقًا يتم قراءتها من مصدر إدخال. ويتيح ذلك حالات مثل استخدام تنسيق 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)
تم إصلاح مشكلة في Room تؤدي إلى التحقّق بشكل غير صحيح من جداول FTS التي أعلنت عن عمود rowid. (d62ebc، b/145858914)
المساهمات الخارجية
حلّ مشاكل اللغة بالتنسيق الكبير/الصغير ذات الصلة باللغة التركية (5746e3)، b/68159494
استبدِل
ConcurrentHashMap
داخلRoomDatabase
بـCollections.synchronizedMap()
لتجنُّب حدوث مشاكل على نظام التشغيل Android Lollipop (d1cfc7، b/162431855)أضِف دالة استدعاء onOpenPrepackagedDatabase عند نسخ قاعدة بيانات prepackage DB. (I1ba74، b/148934423)
الإصدار 2.3.0-alpha02
22 تموز (يوليو) 2020
تم إصدار androidx.room:room-*:2.3.0-alpha02
. يحتوي الإصدار 2.3.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- التوافق مع RxJava3: تتيح أداة Room الآن أنواع RxJava3. على غرار RxJava2، يمكنك تحديد طرق DAO التي يكون نوع الإرجاع فيها Flowable وSingle وMaybe وCompletable. بالإضافة إلى ذلك، يتوفّر عنصر جديد
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 على هذه المراجعات.
الميزات الجديدة
إتاحة Paging 3.0: ستتيح Room الآن إنشاء عمليات تنفيذ ل
@Query
الطرق المُشارَك عليها تعليقات توضيحية والتي يكون نوع الإرجاع فيهاandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
تغييرات واجهة برمجة التطبيقات
@RewriteQueriesToDropUnusedColumns
هو تعليق توضيحي جديد ومفيد يجعل Room يعيد كتابة إسقاط "*" في طلب بحث بحيث تتم إزالة الأعمدة غير المستخدَمة في النتيجة.- تم إيقاف خيار المعالج
room.expandProjection
نهائيًا. استخدِم@RewriteQueriesToDropUnusedColumns
كبديل لطلبات البحث لتحسين الغرف التي تتضمّن توقّعات النجوم. يُرجى العِلم أنّ@RewriteQueriesToDropUnusedColumns
لا يحلّ محلّ حلّ تعارض الأعمدةroom.expandProjection
المقدَّم في ما يتعلّق بأنواع النتائج التي تحتوي على حقول@Embedded
.
إصلاح الأخطاء
- تم إصلاح خلل تعذُّر اكتشاف Room لإصدار JDK المستخدَم لتفعيل معالج التعليقات التوضيحية المتزايدة بشكل صحيح. مع أطيب التحيّات، "بلاز سولار" (me@blaz.solar) (b/155215201)
- تضمِّن أداة Room الآن تبعية 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. مع أطيب التحيّات، "مايجود" contact-git@mygod.be (b/148240967) - تم إصلاح خطأ كان يؤدي إلى حدوث عطل عند تفعيل إيقاف العناصر غير الصالحة في النُسخ المتعددة واحتواء قاعدة البيانات على عنصر FTS. (b/148969394)
- تم إصلاح مشكلة عند تحميل المكتبات المجمّعة من رموز برمجية أصلية لـ SQLite في معالج التعليقات التوضيحية في Room، والتي كانت تؤدي إلى تعطُّل المُجمِّع بسبب عمليات الترجمة المجمّعة المتوازيّة. (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 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة في تعليق المعاملات التي كانت ستؤدي إلى حدوث مشكلة في الأداء إذا تم إلغاء دالة coroutine بسرعة قبل بدء المعاملة فعليًا. (b/148181325)
- تم إصلاح مشكلة استخدام العلامة @Generated بشكل خاطئ عند الإنشاء باستخدام JDK 9. (b/146538330)
- تم إصلاح مشكلة كانت تؤدي إلى إنشاء Room لرمز برمجي غير صحيح عندما تحتوي واجهة 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 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى عرض عناصر ذات صلة فارغة في Room عند جمع علاقة تقابلية تضم أكثر من 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
يتسبب في إعادة كتابة Room لطلب بحث باستخدام إسقاط نجمي يحتوي فقط على الأعمدة في النوع المعروض POJO. على سبيل المثال، بالنسبة إلى طريقة DAO التي تحتوي على@Query("SELECT * FROM Song")
والتي تعرضSongIdAndTitle
POJO باسمSongIdAndTitle
يتضمّن حقلَين فقط. بعد ذلك، ستعيد Room كتابة query ليكون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
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى إيقاف إعادة إصدار قيم جديدة بعد فترة زمنية معيّنة في طلب بحث Coroutine Flow. (b/139175786)
- تم إصلاح خطأ كان يمنع Room من قبول رمز تجزئة مخطط قديم أثناء فتح قاعدة بيانات لم يتم نقلها منذ الإصدار 1.0 من Room، ما يؤدي إلى حدوث عطل أثناء التشغيل بسبب مخطط غير صالح. (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
يتسبب في إعادة كتابة Room لطلب بحث باستخدام إسقاط نجمي يحتوي فقط على الأعمدة في النوع المعروض POJO. على سبيل المثال، بالنسبة إلى طريقة DAO التي تحتوي على@Query("SELECT * FROM Song")
والتي تعرضSongIdAndTitle
POJO باسمSongIdAndTitle
يتضمّن حقلَين فقط. بعد ذلك، ستعيد Room كتابة query ليكونSELECT id, title FROM Song
بحيث يتم جلب الحد الأدنى من مجموعة الأعمدة لتلبية نوع الإرجاع. يؤدي ذلك إلى إزالة تحذيرCURSOR_MISMATCH
الذي يظهر عندما يعرض الطلب عمودًا إضافيًا لا يتطابق مع أي حقل في نوع POJO الذي يتم عرضه. -
onDestructiveMigrate
هي واجهة برمجة تطبيقات جديدة للرجوع تمت إضافتها إلىRoomDatabase.Callback
لحالات نقل Room لقاعدة بيانات بشكل مدمِّر. b/79962330
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى إنشاء Room لرمز برمجي غير صحيح باستخدام طريقة كأحد مُعدِّلي الحقل عندما يكون الحقل محميًا. b/136194628
- تم إصلاح خطأ كان يتسبب في طرح InvalidationTracker لخطأ NPE في عملية ثانية عند تفعيل إلغاء الربط في النُسخ المتعددة وإيقاف Service لإلغاء الربط. b/137454915
- تم إصلاح خلل كان يؤدي إلى عدم تحديد Room بشكل صحيح لنوع الإرجاع لدالة تعليق مكتسَبة تم التعليق عليها باستخدام
@RawQuery
. b/137878827 - تم تعديل الرمز الذي تم إنشاؤه لـ
@Relation
عندما يكون المفتاح ذا الصلة من النوع BLOB لاستخدامByteBuffer
مشابه. b/137881998 - تم إصلاح خطأ كان يؤدي إلى تحذير Room بشأن عدم توفّر وظائف الإعداد في الكيانات البسيطة (POJO) المستخدَمة كمَعلمات لكيانات جزئية من
@Insert
و@Update
و@Delete
. b/138664463 - تم إصلاح خطأ كان يؤدي إلى تحذير Room بشأن عدم توفّر وظيفتَي التقديم والحصول لعمود
تم تجاهله من خلال
@Entity
عند استخدام فئة العنصر في وظائف DAO معيّنة. b/138238182 - تم إصلاح خطأ كان يمنع Room من تحويل وسيطات الربط المُسمّاة بشكلٍ صحيح إلى وسيطات موضعية، ما يؤدي إلى حدوث استثناء وقت التشغيل عند تنفيذ طلب بحث باستخدام مَعلمات مُستخدَمة مُجدّدًا. 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
إصلاح الأخطاء
- لن تنشر Room الرمز البرمجي
EmptySetResultException
إلى معالج الأخطاء العام عند التخلص من بث Rx للاستعلام قبل اكتماله. b/130257475 - تم إصلاح خلل كان يؤدي إلى ظهور رسالة خطأ غير صحيحة في Room عندما لا يكون لدالّة suspend
DAO التي تمت إضافة تعليق توضيحي إليها باستخدام
@RawQuery
نوع إرجاع. b/134303897 - لن تنشئ الغرفة بعد الآن محوِّلات DAO بأنواع أولية. b/135747255
الإصدار 2.1.0
الإصدار 2.1.0
13 حزيران (يونيو) 2019
تم طرح الإصدار 2.1.0 من Room بدون أي تغييرات عن الإصدار 2.1.0-rc01
. يمكن العثور على عمليات الربط المضمّنة في الإصدار هنا.
التغييرات المهمة منذ الإصدار 2.0.0
- البحث التام في النصوص: تتيح أداة Room الآن استخدام الكيانات التي تحتوي على جدول ربط
FTS3 أو FTS4. يمكن الآن إضافة تعليق توضيحي إلى الفئات التي تمّت إضافة التعليق
@Entity
إليها باستخدام التعليق@Fts3
أو@Fts4
لتحديد فئة باستخدام جدول بحث نص كامل للربط. تتوفّر خيارات FTS لمزيد من التخصيص من خلال طرق التعليق التوضيحي. - المشاهدات: تتيح Room الآن الإفصاح عن فئة كطلب بحث محفوظ، والمعروف أيضًا باسم
عرض، باستخدام التعليق التوضيحي
@DatabaseView
. - Couroutines: يمكن الآن أن تكون طرق DAO دوال معلّقة. أدرِج
room-ktx
في التبعيات للاستفادة من هذه الوظيفة. يقدّم عنصر ktx أيضًا دالة الإضافةRoomDatabase.withTransaction
لأداء معاملات قاعدة البيانات ضمن دالة معالجة متعدّدة المهام. - القيمة التلقائية: يتيح Room الآن تعريف الفصول المُشارَك فيها AutoValue
ككائنات وعناصر POJO. يمكن الآن تحديد التعليقات التوضيحية لـ Room
@PrimaryKey
@ColumnInfo
و@Embedded
و@Relation
في الطرق المجردة لفئة ذات قيمة مُشارَكَة تلقائية. يُرجى العِلم أنّه يجب أيضًا أن تكون هذه التعليقات التوضيحية مصحوبة برمز@CopyAnnotations
لكي يفهمها Room بشكل صحيح. - دعم إضافي للوظائف غير المتزامنة: تتيح الآن طرق DAO التي تمّت إضافة تعليقات توضيحية إليها باستخدام
@Insert
أو@Delete
أو@Update
، بالإضافة إلى@Query
التي تحتوي على عباراتINSERT
أوDELETE
أوUPDATE
، استخدام أنواع النتائج RxCompletable
وSingle
وMaybe
ونوع النتيجة GuavaListenableFuture
، ويمكن أيضًا استخدامها كوظائف متوقفة مؤقتًا. -
enableMultiInstanceInvalidation
هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
ل تفعيل إلغاء الصلاحية على مستوى نُسخ متعددة من RoomDatabase باستخدام ملف قاعدة بيانات المعروف نفسه. fallbackToDestructiveMigrationOnDowngrade
هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لإعادة إنشاء قاعدة البيانات تلقائيًا في حال هبوط الإصدار.ignoredColumns
هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي@Entity
يمكن استخدامها ل listing ignored fields by name.- سيستخدم Room الآن بشكلٍ صحيح أسلوب الإنشاء الأساسي في Kotlin في فئات البيانات، وبالتالي لن يكون عليك تحديد السمات على أنّها
vars
.
الإصدار 2.1.0-rc01
29 أيار (مايو) 2019
إصلاح الأخطاء
- تم إصلاح خطأ في إعداد Room قد يحدث بسبب إعداد temp_store مسبقًا. b/132602198
- تم إصلاح تحذير استخدام علامتَي الاقتباس للمستخدمين الذين لديهم SQLite 3.27.0 والإصدارات الأحدث. b/131712640
- تم إصلاح خطأ كان يؤدي إلى تعطُّل InvalidationTracker عند إجراء عمليات فحص لعدة عمليات إبطال بشكل متزامن. 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 لواجهة TypeConverter لدالة Kotlin DAO التي تحتوي على مَعلمة من نوع Collection. b/122066791
الإصدار 2.1.0-alpha06
22 آذار (مارس) 2019
تغييرات واجهة برمجة التطبيقات / السلوك
- يتم الآن تسلسل طلبات البحث عن المعاملات غير المتزامنة بحيث لا يستخدم Room
أكثر من سلسلة محادثات واحدة لتنفيذ معاملات قاعدة البيانات.
تمت إضافة
RoomDatabase.Builder.setTransactionExecutor(Executor)
للسماح بضبط المنفِّذ لاستخدامه في المعاملات. - لن يُغلِف
RoomDatabase.runInTransaction(Callable)
بعد الآن الاستثناءات التي تم التحقّق منها في RuntimeExceptions. b/128623748
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى إيقاف أداة تتبُّع الإبطال عن مراقبة جدول المحتوى في حال إضافة مراقبين لكل من جدول المحتوى وجدول FTS الخارجي للمحتوى. b/128508917
- تم تعديل قواعد SQLite في Room لتتطابق مع 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
- تم إصلاح خلل كان يؤدي إلى تعذُّر تحديد Room بشكل صحيح للوظائف المعلّقة التي تحتوي على مَعلمات من النوع "صف دراسي داخلي". b/123767877
- تم إصلاح خطأ كان يتسبب في أن تحضّر طريقة
@Query
DAO المؤجلة باستخدام عباراتINSERT
أوUPDATE
أوDELETE
الطلب في الخيط الرئيسي بشكلٍ مُلحّ. b/123695593 - تم إصلاح أخطاء متنوعة كانت تؤدي إلى إنشاء Room لرمز غير صحيح لبعض وظائف التعليق. b/123466702 وb/123457323
- تم إصلاح خلل كان يؤدي إلى عدم إيقاف استخدام الطرق المتوقّفة نهائيًا بشكل صحيح في الرمز الذي تم إنشاؤه. b/117602586
- تم تعديل الاعتماد على Room في androidx.sqlite إلى الإصدار 1.0.2 الذي يحتوي على إصلاحات للتعامل بشكل صحيح مع قواعد البيانات التالفة. b/124476912
المشاكل المعروفة
- يعتمد الإصدار Room 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
. بما أنّ المعاملات محصورة بسلسلة محادثات معيّنة، من المستحيل حاليًا أن تبدأ Room معاملة وتنتهيها حول دالة قد تُجري طلبات بحث في سلاسل محادثات مختلفة. b/120109336 - تم
@Deprecated
OnConflictStrategy.FAIL
وOnConflictStrategy.ROLLBACK
لأنّهما لا يعملان على النحو المطلوب مع عمليات ربط SQLite الحالية في Android. b/117266738
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى عدم استخدام Room بشكل صحيح لفئة TypeConverter لنوع الإرجاع إذا كانت طريقة DAO دالة تعليق. b/122988159
- تم إصلاح خطأ كان يؤدي إلى تحديد Room بشكلٍ غير صحيح لوظائف تعليق الأداء المُكتسَبة على أنّها غير مُعلّقة. b/122902595
- تم إصلاح خطأ كان يؤدي إلى إنشاء Room لرمز برمجي غير صحيح عندما كان حقل
@Embedded
في فئة رئيسية وكان يتم استخدامه في فئات فرعية متعددة. b/121099048 - تم إصلاح مشكلة كانت تؤدي إلى حدوث تعارض بين عمليات قاعدة البيانات عند استدعاء وظائف تعليق DAO بين
beginTransaction()
وendTransaction()
. b/120854786
الإصدار 2.1.0-alpha03
4 كانون الأول (ديسمبر) 2018
تغييرات واجهة برمجة التطبيقات
- يقبل الآن الحقل
tokenizer
في@Fts3
/@Fts4
سلسلة بدلاً من عنصر مصنّف. يتيح ذلك استخدام أدوات تقسيم الكلمات المخصّصة من خلال Room. لا تزال أدوات تقسيم السلسلة المضمّنة محدّدة فيFtsOptions
كسلاسل ثابتة. b/119234881
الميزات الجديدة
- Couroutines: يمكن الآن أن تكون طرق DAO دوال معلّقة. لدعم وظائف التعليق في Room، تم إصدار عنصر جديد، وهو
room-coroutines
. b/69474692 - تتيح الآن طرق DAO التي تمت إضافة تعليقات توضيحية لها باستخدام
@Insert
أو@Delete
أو@Update
استخدامListenableFuture
كنوع الإرجاع. b/119418331
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي إلى محاولة Room العثور بشكلٍ غير صحيح على مُنشئ يحتوي على أعمدة في سمة
ignoredColumns
من@Entity
. b/119830714 - تم إصلاح خطأ كان يؤدي إلى عدم وضع Room علامة على مَعلمات طريقة DAO على أنّها نهائية في التنفيذ الذي تم إنشاؤه. b/118015483
- تم إصلاح خلل كان يؤدي إلى تعطُّل معالج Room عند الإبلاغ عن خطأ في طلب بحث يتضمّن رموزًا خاصة. b/119520136
- تم إصلاح خلل كان يؤدي إلى رفض Room لتنفيذات
Collection
المختلفة الأخرى كوسيطات لتعبيرIN
. b/119884035 - تم إصلاح خلل كان يؤدي إلى جمع البيانات غير الصالحة في LiveData التي تم إرجاعها من Room عند مراقبتها إلى الأبد، ما يؤدي إلى إيقاف إصدار بيانات جديدة. b/74477406
- تم تعديل رمز الإغلاق في
RoomDatabase
لتقليل تزايد الطلب على القفل. b/117900450
الإصدار 2.1.0-alpha02
30 تشرين الأول (أكتوبر) 2018
الميزات الجديدة
- تمت إضافة إمكانية الإشارة إلى
@DatabaseView
في@Relation
. b/117680932
إصلاح الأخطاء
- تم إصلاح خطأ كان يؤدي فيه Room إلى تنفيذ عمليات إدخال وإخراج القرص في سلسلة التعليمات الرئيسية عند الاشتراك في نوع الإرجاع Rx والتخلص منه. b/117201279
- تم إصلاح خطأ كان يؤدي إلى تعذُّر العثور على محوِّل أنواع مناسب لحقل في فئة عنصر Kotlin. b/111404868
- تم إصلاح خلل كان يؤدي إلى إنشاء Room لرمز غير صحيح لتنفيذ واجهة
DAO
يحتوي على طريقة Kotlin تلقائية لا تحتوي على وسيطات. b/117527454 - تم تعديل معالج قواعد لغة SQLite في Room، ما أدى إلى حلّ مشكلة في الأداء كانت تؤدي إلى زيادة وقت الإنشاء. b/117401230
الإصدار 2.1.0-alpha01
8 تشرين الأول (أكتوبر) 2018
الميزات الجديدة
- البحث التام في النصوص: يتيح Room الآن استخدام الكيانات التي تحتوي على جدول ربط FTS3 أو FTS4. يمكن الآن إضافة تعليق توضيحي إلى الصفوف التي تمّت إضافة تعليق توضيحي إليها باستخدام
@Entity
باستخدام@Fts3
أو@Fts4
لتعريف صفّ باستخدام جدول بحث نص كامل للربط. تتوفّر خيارات البحث التام في النصوص لإجراء المزيد من التخصيص من خلال طرق التعليق التوضيحي. b/62356416 - المشاهدات: تتيح Room الآن تحديد فئة كطلب بحث محفوظ، ويُعرف ذلك أيضًا باسم عرض باستخدام التعليق التوضيحي @DatabaseView. b/67033276
- القيمة التلقائية: يتيح Room الآن الإعلان عن الفصول المُشارَك فيها AutoValue ككائنات وعناصر POJO. يمكن الآن تحديد التعليقات التوضيحية لغرفة الفندق
@PrimaryKey
و@ColumnInfo
و@Embedded
و@Relation
في الطرق المجردة لفئة تمّت عليها تعليقات توضيحية لقيمة تلقائية. يُرجى العِلم أنّه يجب أيضًا أن تكون هذه التعليقات التوضيحية مصحوبة برمز@CopyAnnotations
لكي يفهمها Room بشكل صحيح. b/62408420 - إتاحة أنواع بيانات Rx إضافية: تتيح الآن طرق DAO التي تمت إضافة تعليقات توضيحية إليها باستخدام
@Insert
أو@Delete
أو@Update
أنواع بيانات RxCompletable
وSingle<T>
وMaybe<T>
. b/63317956 - الأنواع غير القابلة للتغيير مع
@Relation
: كانت الغرفة تتطلّب في السابق أن تكون الحقول التي تحتوي على تعليقات توضيحية@Relation
قابلة للضبط، ولكن يمكن الآن أن تكون مَعلمات دالة الإنشاء. -
enableMultiInstanceInvalidation
: هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لتفعيل إلغاء الصلاحية في عدّة نُسخ من RoomDatabase باستخدام ملف قاعدة البيانات نفسه. تعمل آلية إلغاء صلاحية النُسخ المتعددة هذه أيضًا على مستوى عمليات متعدّدة. b/62334005 -
fallbackToDestructiveMigrationOnDowngrade
: هي واجهة برمجة تطبيقات جديدة فيRoomDatabase.Builder
لإعادة إنشاء قاعدة البيانات تلقائيًا في حال إجراء عملية ترقية أو تحديث للإصدار. b/110416954 -
ignoredColumns
: هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي@Entity
يمكن استخدامها لعرض الحقول التي تم تجاهلها حسب الاسم. يُستخدَم هذا الخيار لتجاهل الحقول المُكتسَبة في عنصر معيّن. b/63522075
تغييرات واجهة برمجة التطبيقات / السلوك
- تم استبدال
mCallback
وmDatabase
فيRoomDatabase
بـ@Deprecated
، وسيتمّت إزالتهما في الإصدار الرئيسي التالي من Room. b/76109329
إصلاح الأخطاء
- تم حلّ مشكلتَين كانتا تؤديان إلى عدم استرداد Room بشكلٍ صحيح من قاعدة بيانات تالفة أو عملية نقل بيانات غير صحيحة أثناء الإعداد. b/111504749 وb/111519144
- سيستخدم Room الآن بشكلٍ صحيح المنشئ الأساسي في 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 وقاعدة البيانات التي تم إنشاؤها نهائية الآن
إصلاح الأخطاء
- تحديد اسم الفئة/الحقل في الخطأ "تعذّر العثور على دالة الحصول على الحقل" b/73334503
- تم إصلاح مشكلة التوافق مع الإصدارات القديمة من Room b/110197391 في RoomOpenHelper.
التبعيات التي تم استخدامها قبل AndroidX
بالنسبة إلى الإصدارات الأقدم من Room التي تسبق 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
إذا كنت تستخدم عمليات نقل البيانات.
تم إصلاح خطأ كان يؤدي إلى عدم معالجة Room لعمليات الإعداد بعد نقل البيانات بشكل صحيح b/79362399
الإصدار 1.1.0
الإصدار 1.1.0-beta3
19 نيسان (أبريل) 2018
إصلاح الأخطاء
- إصلاح خطأ الترجمة عندما يشير عنصر Kotlin POJO إلى عنصر علاقة تم تحديده في Java b/78199923
الإصدار 1.1.0-beta2
5 نيسان (أبريل) 2018
إصلاح الأخطاء
تم إصلاح خطأ خطير في عمليات تنفيذ Rx
Single
وMaybe
في Room، حيث كان يتم إعادة استخدام الطلب مسبقًا، ما يتسبب في حدوث مشاكل في حال إضافة أكثر من مراقب واحد إلى مثيلَي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 - الفهرسة: يعالج الآن تنفيذ DataSource في Room بشكل صحيح التبعيات في الجداول المتعددة (مثل العلاقات والدمج). في السابق، كان من الممكن ألا تؤدي هذه الطلبات إلى عرض نتائج جديدة أو قد يتعذّر تجميعها. b/74128314
الإصدار 1.1.0-alpha1
22 كانون الثاني (يناير) 2018
الميزات الجديدة
RawQuery
: تسمح واجهة برمجة التطبيقات الجديدة هذه لطرق@Dao
بتلقّي لغة الاستعلامات البنيوية (SQL) كمَعلمة طلب بحث. b/62103290، b/71458963fallBackToDestructiveMigrationsFrom
: تتيح واجهة برمجة التطبيقات الجديدة هذه فيRoomDatabase.Builder
التحكّم بشكل أدق في إصدارات المخططات التي تبدأ عندها عمليات نقل البيانات الهدّامة (مقارنةً بـ fallbackToDestructiveMigration) b/64989640- لا تتيح Room الآن سوى واجهات برمجة تطبيقات Paging API الأحدث (الإصدار التجريبي 4 والإصدارات الأحدث)، ما يعني إيقاف استخدام واجهة برمجة التطبيقات
LivePagedListProvider
التي سيتم إيقافها نهائيًا. لاستخدام الإصدار التجريبي من Room الجديد، عليك استخدام الإصدارalpha-4
أو إصدار أحدث، والتبديل من الإصدارLivePagedListProvider
إلى الإصدارLivePagedListBuilder
إذا لم يسبق لك ذلك.
إصلاح الأخطاء
- تحسين الدعم لأنواع Kotlin Kapt b/69164099
- لا يؤدي ترتيب الحقول إلى إلغاء صلاحية المخطط بعد الآن. b/64290754