Room
التعديل الأخير | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
21 آب (أغسطس) 2024 | 2.6.1 | - | - | 2.7.0-alpha07 |
إعلان التبعيات
لإضافة عنصر تبعية إلى Room، يجب إضافة مستودع Google Maven إلى مشروعك. الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.
تشمل تبعيات الغرفة عمليات نقل بيانات غرف الاختبار غرفة RxJava
أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle
لـ
لتطبيقك أو الوحدة التي تستخدمها:
Groovy
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 ذي المستوى الأعلى المكون الإضافي وإصداره.
Groovy
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
في ملف إصدار Gradle على مستوى الوحدة، طبِّق المكوّن الإضافي واستخدِم room
الإضافة.
Groovy
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 الإضافي للغرفة،
على الرغم من توافقها مع برنامج تجميع الغرفة. يسرد الجدول أدناه كل منها
وتعرض إصدار المكوّن الإضافي لـ Room Gradle الإضافي الذي أضاف دعمًا
ضبط هذا الخيار باستخدام الإضافة room
. إذا كان الإصدار أقدم،
أو إذا لم يكن الخيار متاحًا بعد، يمكنكم استخدام
خيارات معالج التعليقات التوضيحية بدلاً من ذلك.
Option | منذ الإصدار |
---|---|
room.schemaLocation (مطلوب) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
استخدام خيارات معالجة التعليقات التوضيحية
إذا كنت لا تستخدم المكوّن الإضافي لغرفة Gradle Plugin أو إذا لم يكن الخيار الذي تريده يتوافق مع إصدار المكوّن الإضافي المتوفر لديك، يمكنك تهيئة الغرفة باستخدام خيارات معالج التعليقات التوضيحية، كما هو موضح في إضافة تبعيات الإصدار كيف تحديد خيارات التعليق التوضيحي على ما إذا كنت تستخدم KSP أو KAPT للغرفة.
Groovy
// 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-alpha07
21 آب (أغسطس) 2024
تم طرح androidx.room:room-*:2.7.0-alpha07
. يحتوي الإصدار 2.7.0-alpha07 على عمليات التنفيذ هذه.
الميزات الجديدة
- سيضيف "المكوّن الإضافي لنظام 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 المتعددة المنصات (I139d3 وb/338268719)
إصلاح الأخطاء
- يُرجى حلّ مشكلة إنشاء الغرفة لإجراء مكالمة إلى
recursiveFetchArrayMap
عن طريق الخطأ في الاستهدافات التي لا تعمل بنظام التشغيل Android. (710c36، b/352482325) - حلّ مشكلة طرحت فيها الغرفة أحيانًا استثناءً بشأن "انتهاء المهلة أثناء محاولة الاتصال" في مشروع 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 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة في معالج التعليقات التوضيحية في الغرفة، والتي كانت ستؤدي إلى إنشاء رمز 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، ويُتوقع إعادة كتابتها كدوال بدلاً من ذلك لتجنب الاعتقاد الخاطئ بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. هناك قيد آخر تمّت إضافته وهو أنّ أنواع إرجاع المجموعات القابلة للإلغاء لم تعد مسموحًا بها في Room for 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، ويُتوقع إعادة كتابتها كدوال بدلاً من ذلك لتجنب الاعتقاد الخاطئ بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. هناك قيد آخر تمّت إضافته وهو أنّ أنواع إرجاع المجموعات القابلة للإلغاء لم تعد مسموحًا بها في Room for Kotlin CodeGen.
تحذير: قد تجد أنّ مشاريعك أكثر صرامة في ما يتعلق بقابلية القيم الفارغة عند استخدام Kotlin CodeGen. في Kotlin CodeGen، تعتبر إمكانية القيم الفارغة لوسيطات النوع مهمة، حيث يتم تجاهل هذا في الغالب في Java. على سبيل المثال، لنفترض أن لديك نوع إرجاع `Flow<foo\>` والجدول فارغ. في Java CodeGen، لن يتسبب هذا في حدوث أي مشاكل، ولكن في Kotlin CodeGen، ستظهر لك رسالة خطأ. لتجنب هذا، ستحتاج إلى استخدام `Flow<foo?\>`، بافتراض إطلاق قيمة فارغة. </foo?\></foo\>
التغييرات في واجهة برمجة التطبيقات
- الحماية من الاستخدام غير المعنى للمجموعات القابلة للقيم الفارغة في أنواع إرجاع طريقة DAO. (I777dc، b/253271782، b/259426907)
- أضِف واجهة برمجة تطبيقات لإنشاء مسار إصدار يصدر تغييرات في أداة تتبُّع الإبطال. تُعد واجهة برمجة التطبيقات مفيدة لإنشاء مجموعات البث التي تحتاج إلى التفاعل مع تغييرات قاعدة البيانات. (I8c790، b/252899305)
إصلاح الأخطاء
- عدم السماح بالخصائص المجرّدة كدوال DAO أو استعلامات DAO في برنامج ترميز 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.
هذا تغيير طفيف في السلوك في الغرفة حيث سيتم استخدام المصدر
اسم الدوال مع مطابقتها مع الخصائص مثل getter/setters
(سابقًا، كانت تستخدم اسم JVM للدالة التي تختلف
للدوال/الخصائص الداخلية).
في حال استخدام تعليقات
@JvmName
التوضيحية المخصّصة لمطابقة الأشخاص الذين يفعّلون عبارات البحث/الضبط إلى الممتلكات الخاصة، فيُرجى التحقق مرة أخرى من الرمز الذي تم إنشاؤه بعد تحديث (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.
هذا تغيير طفيف في السلوك في الغرفة حيث سيتم استخدام المصدر
اسم الدوال مع مطابقتها مع الخصائص مثل getter/setters
(سابقًا، كانت تستخدم اسم JVM للدالة التي تختلف
للدوال/الخصائص الداخلية).
في حال استخدام تعليقات
@JvmName
التوضيحية المخصّصة لمطابقة الأشخاص الذين يفعّلون عبارات البحث/الضبط إلى الممتلكات الخاصة، فيُرجى التحقق مرة أخرى من الرمز الذي تم إنشاؤه بعد تحديث (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 الجديدة هذه، يُنصح بتوفير وحدات TypeConverters للتلقي غير الفارغة، حيث إن المحلل الجديد لديه القدرة على لتغليفها بعلامة تحقق فارغة. تجدر الإشارة إلى أنّ ذلك لا يؤثر على مستخدمي 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
توضيحية. بفضل أغنية Markus Riegel | hey@marcorei.com". (I45acb)
الإصدار 2.3.0-beta02
18 شباط (فبراير) 2021
تم طرح androidx.room:room-*:2.3.0-beta02
. يحتوي الإصدار 2.3.0-beta02 على عمليات التنفيذ هذه.
الميزات الجديدة
تتوفّر الآن في الغرفة دعم تجريبي لمعالجة رموز Kotlin KSP.
ويحلّ KSP محلّ برنامج KAPT لتشغيل معالجات التعليقات التوضيحية في الأصل على المجمِّع البرمجي لـ Kotlin، ما يقلّل بشكل كبير من مدة الإصدار.
لاستخدام الغرفة مع 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)
- تم إصلاح مشكلة كانت أثناء بحث الغرفة عن الفئة التي تم إنشاؤها عند استخدام برامج تحميل فئات متعددة. شكرًا على إصلاح المشكلة "الصدفة | "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()
عندما يتم في موقع عشوائي ويؤدي استخدامات واجهة برمجة التطبيقات هذه إلى تغيير سلوك عمليات نقل البيانات المدمرة بحيث تحاول الغرفة أثناء عملية نقل احتياطي لإعادة نسخ قاعدة البيانات المعبأة مسبقًا إن وجدت، وإلا فسيتم الرجوع إلى مجرد إسقاط جميع الجداول وإعادة إنشائها. b/62185732 - القيم التلقائية للمخطط: يحتوي
@ColumnInfo
الآن على خاصية جديدةdefaultValue
التي يمكن استخدامها لتحديد القيمة الافتراضية للعمود. القيم التلقائية هي من مخطط قاعدة بيانات وسيتم التحقق من صحته أثناء عمليات الترحيل إذا المحددة. b/64088772 - العلاقات المتعدّدة: أصبح لـ
@Relation
الآن خاصية جديدةassociateBy
، يشمل تعليقًا توضيحيًا جديدًا@Junction
، ويُستخدَم للإشارة إلى علاقة يجب أن يكون راضيًا عبر جدول تقاطعات (يُعرف أيضًا باسم جدول join). 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
عندما يجري الغرفة ترحيل قاعدة بيانات بشكل مدمر. b/79962330
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي فيه الغرفة إلى إنشاء رمز غير صحيح باستخدام طريقة كحقل عندما يكون الحقل محميًا. b/136194628
- تم إصلاح الخطأ الذي تسبَّب في عدم تدخُّل جهاز تتبع الأنشطة غير المسموح به (NPE) خلال ثانية. عملية عند تفعيل ميزة إلغاء المثيلات المتعددة وإيقافها تم إنهاء الخدمة. b/137454915
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم تحديد الغرفة بشكل صحيح لنوع إرجاع
دالة تعليق مكتسبة تم التعليق عليها باستخدام
@RawQuery
. b/137878827 - تم تعديل الرمز الذي تم إنشاؤه للنطاق
@Relation
عندما يكون المفتاح المرتبط من النوع. كائن تخزين البيانات الكبير لاستخدامByteBuffer
مشابه. b/137881998 - تم إصلاح الخطأ الذي كان يمكن لغرفة Room أن تشكو فيه من عدم وجود أشخاص في أماكن POJO.
معلَمات الكيان الجزئية
@Insert
و@Update
و@Delete
. b/138664463 - تم إصلاح الخطأ الذي كان من المفترض أن تشكو فيه الغرفة من فقد الرسالات الذين يحددون
عمود تم تجاهله عبر
@Entity
عندما تم استخدام فئة الكيان في بعض وحدات DAO الطرق. b/138238182 - تم إصلاح الخطأ المتمثل في عدم تحويل الغرفة بشكل صحيح لوسيطات الربط المُسمّاة إلى الوسيطات الموضعية التي تتسبب في استثناء بيئة التشغيل عند تنفيذ طلب بحث باستخدام استخدام معلمات أخرى. b/137254857
الإصدار 2.2.0-alpha01
10 تموز (يوليو) 2019
الميزات الجديدة
- قاعدة بيانات مجمعة مسبقًا: هناك واجهتا برمجة تطبيقات جديدتان في
RoomDatabase.Builder
الآن متاحة لإنشاءRoomDatabase
استنادًا إلى قاعدة بيانات معبأة مسبقًا الملف.createFromAsset()
: عندما يكون ملف قاعدة البيانات الذي تمت تعبئته تلقائيًا في مجلد مواد العرض لملف APK، في حين يُستخدم الجزءcreateFromFile()
عندما يتم في موقع عشوائي ويؤدي استخدامات واجهة برمجة التطبيقات هذه إلى تغيير سلوك عمليات نقل البيانات المدمرة بحيث تحاول الغرفة أثناء عملية نقل احتياطي لإعادة نسخ قاعدة البيانات المعبأة مسبقًا إن وجدت، وإلا فسيتم الرجوع إلى مجرد إسقاط جميع الجداول وإعادة إنشائها. b/62185732 - القيم التلقائية للمخطط: يحتوي
@ColumnInfo
الآن على خاصية جديدةdefaultValue
التي يمكن استخدامها لتحديد القيمة الافتراضية للعمود. القيم التلقائية هي من مخطط قاعدة بيانات وسيتم التحقق من صحته أثناء عمليات الترحيل إذا المحددة. b/64088772ملاحظة: إذا سبق أن تم ضبط الإعدادات التلقائية لمخطط قاعدة البيانات مثل تلك التي تمت إضافتها عبر
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
، وتقرر تحديد القيم التلقائية من خلال@ColumnInfo
إلى الأعمدة نفسها، فقد تحتاج إلى توفير ترحيل للتحقق من صحة القيم الافتراضية غير المحسوبة. عرض عمليات نقل بيانات الغرف لمزيد من المعلومات. - العلاقات المتعدّدة: أصبح لـ
@Relation
الآن خاصية جديدةassociateBy
، يشمل تعليقًا توضيحيًا جديدًا@Junction
، ويُستخدَم للإشارة إلى علاقة يجب أن يكون راضيًا عبر جدول تقاطعات (يُعرف أيضًا باسم جدول join). 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 أيضًا دالة الامتدادRoomDatabase.withTransaction
وإجراء معاملات قاعدة البيانات داخل الكوروتين. - القيمة التلقائية: تتيح الغرفة الآن بيان الإفصاح.
القيمة التلقائية
والفئات التي تتضمن تعليقات توضيحية ككيانات وPOJO. التعليقات التوضيحية للغرفة
@PrimaryKey
، يمكن الآن الإعلان عن@ColumnInfo
و@Embedded
و@Relation
بشكل تلقائي. بالطرق التجريدية للفئة التي تمت إضافة تعليقات توضيحية إليها. لاحظ أن هذه التعليقات التوضيحية يجب أيضًا مصحوبًا بـ "@CopyAnnotations
" في الغرفة لفهمها بشكلٍ صحيح. - دعم إضافي غير متزامن: طرق DAO التي تمت إضافة تعليقات توضيحية إليها باستخدام
@Insert
و@Delete
أو@Update
، بالإضافة إلى@Query
يشملINSERT
أوDELETE
أوUPDATE
الجديدة، تتوافق الآن مع أنواع إرجاع RxCompletable
وSingle
وMaybe
والنوعListenableFuture
التابع لـ Java، ويمكن أيضًا تعليقها الأخرى. 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
- تم إصلاح الخطأ الذي يمكن أن يتسبب فيه DisableationTracker في التسبب في تعطُّل عندما بإجراء عمليات تحقق من الإبطال بالتوازي. 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
إصلاح الأخطاء
- تم إصلاح الخطأ الذي يتوقّف فيه أداة تتبُّع إلغاء الصلاحية عن مراقبة المحتوى. جدول إذا كان المراقبون لكل من جدول المحتوى والبث المباشر للمحتوى الخارجي جدول بالكامل. 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
- تم إصلاح خطأ أدّى إلى إعداد طلب البحث في سلسلة المحادثات الرئيسية بشكل متحمّس لأنّ طريقة DAO المؤجلة
@Query
مع العباراتINSERT
أوUPDATE
أوDELETE
. b/123695593 - تم إصلاح أخطاء متنوعة حيث يكون بإمكان Room إنشاء رمز غير صحيح لبعض وظائف التعليق. b/123466702 وb/123457323
- تم إصلاح الخطأ المتمثل في عدم إجراء إيقاف صحيح لإيقاف الاستخدام المتوقّف للطرق في الرمز الذي تم إنشاؤه. b/117602586
- تم تحديث تبعية الغرفة من androidx.sqlite إلى الإصدار 1.0.2 الذي يحتوي على إصلاحات للتعامل مع قواعد البيانات التالفة بشكل صحيح. b/124476912
المشاكل المعروفة
- تعتمد الغرفة من 2.1.0 -alpha05 على عنصر
kotlinx-metadata-jvm
غير المتوفّر حاليًا في Maven Central (KT-27991). يمكن حل هذه التبعية عن طريق إضافةmaven { url "https://kotlin.bintray.com/kotlinx/" }
إلى مستودعات مشروعك.
الإصدار 2.1.0-alpha04
25 كانون الثاني (يناير) 2019
الميزات الجديدة
- يمكن الآن لطرق DAO التي تمت إضافة تعليقات توضيحية لها باستخدام
@Query
وتحتوي على عباراتINSERT
أوUPDATE
أوDELETE
إلى عرض الأنواع غير المتزامنةSingle
وMayble
وCompletable
وListenableFuture
. بالإضافة إلى ذلك، يمكن أن تكون أيضًا دوال تعليق. b/120227284
تغييرات واجهة برمجة التطبيقات / السلوك
- ستعرض الغرفة الآن رسالة خطأ إذا كانت طريقة 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
في الغرفة حيث سيعيد تدوير الاستعلام مسبقًا، مما يتسبب في مشكلات إذا أضفت أكثر من 1 المراقب للقيم التي تم إرجاعها وهي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