Room

توفّر مكتبة استمرارية الغرفة طبقة تجريدية على SQLite للسماح بالوصول إلى قاعدة بيانات أكثر قوة مع الاستفادة من إمكانيات SQLite الكاملة.
آخر تعديل الإصدار المستقر إصدار مرشح الإصدار التجريبي الإصدار الأولي
29 تشرين الثاني (نوفمبر) 2023 2.6.1 - - -

تعريف التبعيات

لإضافة تبعية إلى Room، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven الذي يضم أدوات Google للحصول على مزيد من المعلومات.

تشمل تبعيات الغرفة عمليات نقل بيانات غرفة الاختبار وRoom RxJava

أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle لتطبيقك أو وحدتك:

رائع

dependencies {
    def room_version = "2.6.1"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // To use Kotlin annotation processing tool (kapt)
    kapt "androidx.room:room-compiler:$room_version"
    // To use Kotlin Symbol Processing (KSP)
    ksp "androidx.room:room-compiler:$room_version"

    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:$room_version"
}

Kotlin

dependencies {
    val room_version = "2.6.1"

    implementation("androidx.room:room-runtime:$room_version")
    annotationProcessor("androidx.room:room-compiler:$room_version")

    // To use Kotlin annotation processing tool (kapt)
    kapt("androidx.room:room-compiler:$room_version")
    // To use Kotlin Symbol Processing (KSP)
    ksp("androidx.room:room-compiler:$room_version")

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation("androidx.room:room-ktx:$room_version")

    // optional - RxJava2 support for Room
    implementation("androidx.room:room-rxjava2:$room_version")

    // optional - RxJava3 support for Room
    implementation("androidx.room:room-rxjava3:$room_version")

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation("androidx.room:room-guava:$room_version")

    // optional - Test helpers
    testImplementation("androidx.room:room-testing:$room_version")

    // optional - Paging 3 Integration
    implementation("androidx.room:room-paging:$room_version")
}

للحصول على معلومات حول استخدام مكوّن KAPT الإضافي، يُرجى الاطّلاع على مستندات KAPT.

للحصول على معلومات حول استخدام المكوّن الإضافي لبرنامج KSP، يُرجى الاطلاع على وثائق البدء السريع لبرنامج KSP.

للحصول على معلومات عن استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.

للمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على مقالة إضافة تبعيات الإصدار.

بالنسبة إلى المكتبات التي لا تعمل بنظام التشغيل Android (أي وحدات Gradle فقط بلغة Java أو Kotlin فقط)، يمكنك الاعتماد على androidx.room:room-common لاستخدام التعليقات التوضيحية للغرفة.

تهيئة خيارات برنامج التحويل البرمجي

تتوفّر في Room خيارات معالجة التعليقات التوضيحية التالية:

  • room.schemaLocation: تتيح هذه السياسة تصدير مخططات قواعد البيانات وتفعيلها إلى ملفات JSON في الدليل المحدد. يُرجى الاطّلاع على صفحة عمليات نقل بيانات الغرف للحصول على مزيد من المعلومات.
  • room.incremental: لتفعيل معالج التعليقات التوضيحية المتزايدة في Gradle

يوضّح مقتطف الرمز التالي مثالاً على كيفية ضبط هذه الخيارات:

رائع

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += [
                    "room.schemaLocation":"$projectDir/schemas".toString(),
                    "room.incremental":"true"
                    ]
            }
        }
    }
}

Kotlin

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf(
                    "room.schemaLocation" to "$projectDir/schemas",
                    "room.incremental" to "true"
                )
            }
        }
    }
}

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء عدد جديد

راجع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.

الإصدار 2.6

الإصدار 2.6.1

29 تشرين الثاني (نوفمبر) 2023

تم إصدار "androidx.room:room-*:2.6.1". يتضمّن الإصدار 2.6.1 هذه الالتزامات.

إصلاح الأخطاء

  • تم حلّ المشكلة في الرمز الذي تم إنشاؤه حيث كان يتم ضبط القيمة التلقائية للأعمدة المزدوجة في EntityCursorConverter على 0 بدلاً من 0.0. تم أيضًا تضمين إصلاح محتمل لحالة حافة مشابهة لأعمدة نوع التعويم. (Id75f5، b/304584179)
  • سيتم الآن نشر الاستثناءات التي تم طرحها من عمليات تحميل PagingSource باعتبارها LoadStateUpdate من LoadResult.Error التي تحتوي على العنصر القابل للعرض. يمكن ملاحظة حالة الخطأ هذه من خلال PagingDataAdapter.loadStateFlow(Views) أو LazyPagingItems.loadState(Compose). تجدر الإشارة إلى أنّ هذا يمثّل تغييرًا في السلوك، حيث ستظهر فقاعة تفسيرية في أخطاء التحميل السابقة كاستثناء تم طرحه باستخدام طريقة dao التي أدت إلى بدء التحميل. (I93887، b/302708983)

الإصدار 2.6.0

18 تشرين الأول (أكتوبر) 2023

تم إصدار "androidx.room:room-*:2.6.0". يتضمّن الإصدار 2.6.0 هذه الالتزامات.

تغييرات مهمة منذ الإصدار 2.5.0

  • يتوفّر الآن خيار تفعيل ميزة إنشاء رمز Kotlin (أو "Kotlin CodeGen") في Room KSP. (4297ec0). لتفعيل أداة Kotlin CodeGen في الغرفة، يمكنك إضافة اسم الخيار room.generateKotlin إلى خيارات المعالج في خدمة KSP. للاطّلاع على مزيد من التفاصيل حول كيفية تمرير خيارات المعالجات في برنامج مشاركة المعلومات (KSP)، يُرجى الاطّلاع على مستندات برنامج مشاركة البيانات (KSP).

ملاحظة: عند استخدام Kotlin CodeGen، من المهم الإشارة إلى أنّ هناك قيودًا إضافية تمت إضافتها. غير مسموح بالخصائص المجرّدة كأحرف DAO أو طلبات بحث DAO في لغة البرمجة Kotlin، ويُتوقّع أن تتم إعادة كتابتها كدوال بدلاً من ذلك لتجنب الفكرة الخاطئة بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. تمت إضافة قيد آخر وهو أنّ أنواع عرض المجموعات "Nullable" (Nullable) لم تعد مسموحًا بها في Room for Kotlin CodeGen.

تحذير: عند استخدام Kotlin CodeGen، قد تجد أنّ مشاريعك أكثر صرامة من حيث إمكانية القيم الفارغة. في لغة Kotlin CodeGen، تُعد قابلية إبطال وسيطات النوع أمرًا مهمًا، ويتم تجاهل هذا في الغالب في Java. على سبيل المثال، لنفترض أن لديك نوع الرجوع `Flow<foo\>` والجدول فارغ. في Java CodeGen، لن يؤدي ذلك إلى حدوث أي مشاكل، ولكن في Kotlin CodeGen، ستظهر لك رسالة خطأ. لتجنب ذلك، ستحتاج إلى استخدام `Flow<foo?\>`، بافتراض انبعاث قيمة فارغة. </foo?\></foo\>

  • تمت إضافة العنصر الجديد للمكوّن الإضافي Room Gradle إلى الغرفة باستخدام المعرّف androidx.room، ما يحلّ العديد من المشاكل الحالية في Room المتعلقة بتضمين مدخلات ومخرجات المخططات من خلال خيارات معالج تعليقات Gradle التوضيحية. لمعرفة مزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات إصدار الغرفة 2.6.0-alpha02.
  • أصبحت فئات القيمة في "كيانات الغرفة" متاحة الآن في برنامج KSP. (4194095)
  • تتوفّر الآن أنواع إرجاع الخريطة المتداخلة في دوال DAO في الغرفة. (I13f48، 203008711)

الإصدار 2.6.0-rc01

20 أيلول (سبتمبر) 2023

تم إصدار "androidx.room:room-*:2.6.0-rc01". يحتوي الإصدار 2.6.0-rc01 على هذه الالتزامات.

الإصدار 2.6.0-beta01

23 آب (أغسطس) 2023

تم إصدار "androidx.room:room-*:2.6.0-beta01". يتضمّن الإصدار 2.6.0-beta01 هذه الالتزامات.

إصلاح الأخطاء

  • عند التعامل مع استثناء SQLite أثناء عملية إعادة الضبط، يتم طرح استثناء 2067 SQLITE_CONSTRAINT_UNIQUE أثناء عملية رفع أعلى، ويجب أن ينفِّذ upsert عملية تحديث. (If2849، b/243039555)

الإصدار 2.6.0-alpha03

9 آب (أغسطس) 2023

تم إصدار "androidx.room:room-*:2.6.0-alpha03". يحتوي الإصدار 2.6.0-alpha03 على هذه الالتزامات.

الميزات الجديدة

  • تتوفّر الآن أنواع إرجاع الخريطة المتداخلة في دوال DAO في الغرفة. (I13f48، 203008711)

تغييرات واجهة برمجة التطبيقات

  • تم إنشاء تعليق توضيحي من النوع الجديد يُسمى @MapColumn ليحل محل @MapInfo، وقد تم إيقافه نهائيًا الآن. بالنسبة إلى كل اسم عمود (keyColumnName أو valueColumnName أو كليهما) تم تقديمه في التعليق التوضيحي @MapInfo، عليك الإعلان عن تعليق توضيحي بشأن @MapColumn باستخدام columnName فقط واستخدام التعليق التوضيحي على وسيطة النوع المحدّد الذي تتم الإشارة إليه (المفتاح أو قيمة الخريطة) في نوع عرض دالة DAO. وذلك لأن التعليق التوضيحي @MapColumn يتم استخدامه مباشرةً في وسيطة النوع ضمن النوع المعروض لدالة DAO، بدلاً من الدالة نفسها مثل @MapInfo. لمزيد من المعلومات، يُرجى الرجوع إلى مستندات @MapColumn. (Ib0305، b/203008711)
  • تعديل ملفات واجهة برمجة التطبيقات لإضافة تعليقات توضيحية بشأن إلغاء التوافق (I8e87a، b/287516207)
  • تم تحديث واجهات برمجة تطبيقات المكوّن الإضافي Room Gradle بحيث لا تتطلّب دائمًا عمليات ضبط لكل خيار. وهذا يعني أن المكوِّن الإضافي يمكنه قبول موقع عام لجميع المتغيرات بدون إنشاء أدلة متعددة، مما يوفر عمليات نقل أكثر سلاسة، إلا أنه يتميز أيضًا بالمرونة بما يكفي لإعداد النكهات أو مخططات نوع الإصدار يدويًا مع الاحتفاظ بمزايا المكون الإضافي (إصدارات قابلة لإعادة الإنتاج وقابلة للتخزين المؤقت). (I09d6f، b/278266663)

إصلاح الأخطاء

  • تم إصلاح الثغرة الأمنية المحتملة لتسرّب الذاكرة في QueryInterceptorStatement. (I193d1)
  • تم إصلاح السلوك غير الصحيح في دالة QueryInterceptorDatabase execSQL(). (Iefdc8)

الإصدار 2.6.0-alpha02

‫21 حزيران (يونيو) 2023

تم إصدار "androidx.room:room-*:2.6.0-alpha02". يحتوي الإصدار 2.6.0-alpha02 على هذه الالتزامات.

المكوّن الإضافي Room Gradle

يحتوي هذا الإصدار الجديد على أداة جديدة للمكوّن الإضافي Room Gradle الذي يحمل المُعرّف androidx.room، والذي يحلّ العديد من المشاكل الحالية في Room بشأن تضمين مدخلات ومخرجات المخطّطات من خلال خيارات معالِج تعليقات Gradle التوضيحية. يضبط المكوّن الإضافي لـ Room Gradle المشروع على أنّه يتم إنشاء مخططات يتم استهلاكها من أجل عمليات نقل البيانات التلقائية ويتم إخراجها من مهام التجميع بشكل صحيح بحيث تحتوي على إصدارات قابلة لإعادة الإنتاج وقابلة للتخزين المؤقت. يوفّر المكوّن الإضافي خدمة DSL لضبط موقع المخطط الأساسي:

room {
    schemaDirectory("$projectDir/schemas/")
}

بعد ذلك، سيُعدّ المكوّن الإضافي برنامج التحويل البرمجي للغرفة ومهام التجميع المتنوعة وخلفياته (javac وKAPT وKSP) لإخراج ملفات المخطط في مجلدات ذات تنسيق خاص، مثل schemas/flavorOneDebug/com.package.MyDatabase/1.json. وكالعادة، يتم تسجيل هذه الملفات في المستودع لاستخدامها في التحقق من الصحة والنقل التلقائي للبيانات. عند الانتقال إلى استخدام المكوِّن الإضافي بدلاً من خيارات معالج التعليقات التوضيحية، يجب نسخ ملفات المخطط الحالية إلى أدلة النكهة التي تم إنشاؤها بواسطة المكوّن الإضافي، وسيتم إجراء هذه العملية مرة واحدة فقط ويجب إجراؤها يدويًا. سيتم تحديث وثائق المخططات في developers.android.com في المستقبل بعد معالجة التعليقات ووصول المكوّن الإضافي إلى مستقر، لذا يُرجى تجربة ذلك.

تغييرات واجهة برمجة التطبيقات

  • تم تعريف RoomDatabase.QueryCallback كواجهة تعمل للسماح باستخدامات الإحالات الناجحة من النوع SAM. (Iab8ea، b/281008549)

إصلاح الأخطاء

  • حلّ المشكلة التي تنشأ عند إنشاء مثيل لقاعدة البيانات في Robolectric بعد نقل مصادر Room من Java إلى Kotlin. (Ic053c، b/274924903)

الإصدار 2.6.0-alpha01

22 آذار (مارس) 2023

تم إصدار "androidx.room:room-*:2.6.0-alpha01". يحتوي الإصدار 2.6.0-alpha01 على هذه الالتزامات.

الميزات الجديدة

  • دعم فئات القيم في Room for KSP يمكن الآن لغرفة Room إتاحة فئات القيم في "الكيانات". (4194095)
  • يمكن الآن تفعيل ميزة إنشاء رمز Kotlin(أو "Kotlin CodeGen") في الغرفة (4297ec0). لتفعيل أداة Kotlin CodeGen في الغرفة، يمكنك إضافة اسم الخيار room.generateKotlin إلى خيارات المعالج في خدمة KSP. للاطّلاع على مزيد من التفاصيل حول كيفية تمرير خيارات المعالجات في برنامج مشاركة المعلومات (KSP)، يُرجى الاطّلاع على مستندات برنامج مشاركة البيانات (KSP).

ملاحظة: عند استخدام Kotlin CodeGen، من المهم الإشارة إلى أنّ هناك قيودًا إضافية تمت إضافتها. غير مسموح بالخصائص المجرّدة كأحرف DAO أو طلبات بحث DAO في لغة البرمجة Kotlin، ويُتوقّع أن تتم إعادة كتابتها كدوال بدلاً من ذلك لتجنب الفكرة الخاطئة بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. تمت إضافة قيد آخر وهو أنّ أنواع عرض المجموعات "Nullable" (Nullable) لم تعد مسموحًا بها في Room for Kotlin CodeGen.

تحذير: عند استخدام Kotlin CodeGen، قد تجد أنّ مشاريعك أكثر صرامة من حيث إمكانية القيم الفارغة. في لغة Kotlin CodeGen، تُعد قابلية إبطال وسيطات النوع أمرًا مهمًا، ويتم تجاهل هذا في الغالب في Java. على سبيل المثال، لنفترض أن لديك نوع الرجوع `Flow<foo\>` والجدول فارغ. في Java CodeGen، لن يؤدي ذلك إلى حدوث أي مشاكل، ولكن في Kotlin CodeGen، ستظهر لك رسالة خطأ. لتجنب ذلك، ستحتاج إلى استخدام `Flow<foo?\>`، بافتراض انبعاث قيمة فارغة. </foo?\></foo\>

تغييرات واجهة برمجة التطبيقات

  • الحماية من الاستخدام غير المفيد للمجموعات القابلة للقيم في أنواع البيانات التي يتم إرجاعها في طريقة DAO. (I777dc، b/253271782، b/259426907)
  • أضِف واجهة برمجة تطبيقات لإنشاء تدفق ينبعث منه تغييرات أداة تتبُّع الإبطال. تُعد واجهة برمجة التطبيقات مفيدة لإنشاء مجموعات بيانات تحتاج إلى التفاعل مع تغييرات قاعدة البيانات. (I8c790، b/252899305)

إصلاح الأخطاء

  • عدم السماح بالخصائص المجردة كأحرف DAO أو طلبات بحث DAO في برنامج Codegen بلغة Kotlin، وبدلاً من ذلك يجب إعادة كتابتها كدوال لتجنُّب الفكرة الخاطئة بأنّ قيمة السمة غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. (If6a13 وb/127483380 وb/257967987)

الإصدار 2.5.2

الإصدار 2.5.2

‫21 حزيران (يونيو) 2023

تم إصدار "androidx.room:room-*:2.5.2". يتضمّن الإصدار 2.5.2 هذه الالتزامات.

إصلاح الأخطاء

  • حلّ مشكلة عدم التوافق في kotlinx-metadata-jvm. (386d5c)
  • يجب حل المشكلة التي تتسبب في عرض تطبيق Room لخطأ عند استخدامه في اختبار Robolectric. (f79bea، b/274924903)

الإصدار 2.5.1

الإصدار 2.5.1

22 آذار (مارس) 2023

تم إصدار "androidx.room:room-*:2.5.1". يتضمّن الإصدار 2.5.1 هذه الالتزامات.

إصلاح الأخطاء

  • تجنَّب التحقّق من الدليل الرئيسي لقاعدة البيانات في FrameworkSQLiteHelper إذا كانت قاعدة البيانات مفتوحة حاليًا. (5de86b8)
  • يمكنك استخدام عملية تحقُّق isOpenInternal عند التحقُّق ممّا إذا كانت قاعدة البيانات مفتوحة من قبل أم لا. (e91fb35)
  • تتوفّر الآن معالجة أفضل لطلب المستخدم الجديد في acquireTransactionThread() للغرفة. (219f98b). أثناء تعليق العملية، تستخدم الغرفة سلسلة محادثات من الجهة التنفيذية للعمليات وتبدأ حلقة حدث فيها وترسل إليها تعليق عمليات قاعدة البيانات حتى يتم تضمينها جميعًا في كوروتيين المعاملة. من المتوقّع عادةً أن تكون سلسلة المحادثات مختلفة عن تلك التي تبدأ المعاملة، ولكن في بعض الحالات تكون متطابقة. للتعامل مع حالات إعادة التوجيه هذه، تمت إعادة تنظيم withTransaction() بحيث لا يعتمد على مهمة التحكّم، وسيتم بدلاً من ذلك تنفيذ حظر تعليق المعاملات من داخل runBlocking في سلسلة المعاملات.

الإصدار 2.5.0

الإصدار 2.5.0

22 شباط (فبراير) 2023

تم إصدار androidx.room:room-paging-guava:2.5.0 وandroidx.room:room-paging-rxjava2:2.5.0 وandroidx.room:room-paging-rxjava3:2.5.0. يحتوي الإصدار 2.5.0 على هذه الالتزامات.

الإصدار 2.5.0

11 كانون الثاني (يناير) 2023

تم إصدار "androidx.room:room-*:2.5.0". يحتوي الإصدار 2.5.0 على هذه الالتزامات.

تغييرات مهمة منذ الإصدار 2.4.0

  • تم تحويل جميع مصادر room-runtime من Java إلى لغة Kotlin. تجدر الإشارة إلى أنّك قد تواجه مشاكل عدم توافق المصدر إذا كان الرمز البرمجي في Kotlin بسبب تحويل المكتبة إلى Kotlin. على سبيل المثال، من التغيير غير المتوافق المصدر المعروف أنّ عليك الآن في InvalidationTracker الإعلان عن onInvalidate() في Observer لاستخدام مَعلمة من النوع Set وليس MutableSet. علاوة على ذلك، تم تحويل بعض طرق الاستلام إلى خصائص تتطلب بناء جملة الوصول إلى الخاصية في ملفات Kotlin. يُرجى الإبلاغ عن الخطأ إذا كان هناك أي حالات عدم توافق كبيرة.
  • تمت إضافة تعليق توضيحي جديد للاختصار "@Upsert"، يحاول إدراج كيان عندما لا يكون هناك تعارض في العناصر الفريدة، أو تعديل العنصر في حال وجود تعارض. (I7aaab، b/241964353)
  • تمت إضافة عناصر جديدة لتسجيل الدخول إلى الغرف، مثل room-paging-rxjava2 وroom-paging-rxjava3 وroom-paging-guava، وذلك لتوفير الدعم في ميزة "تتبُّع أسعار الغرف".
  • تمت إضافة واجهات برمجة تطبيقات لتوفير أسماء جداول القيم الأساسية والقيم لتوضيحها في @MapInfo (Icc4b5).

الإصدار 2.5.0-rc01

7 كانون الأول (ديسمبر) 2022

تم إصدار "androidx.room:room-*:2.5.0-rc01". يحتوي الإصدار 2.5.0-rc01 على هذه الالتزامات.

  • هذا الإصدار مماثل للإصدار 2.5.0-beta02.

الإصدار 2.5.0-beta02

تشرين الثاني (نوفمبر) 2022

تم إصدار "androidx.room:room-*:2.5.0-beta02". يتضمّن الإصدار 2.5.0-beta02 هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • أصلِح العديد من واجهات برمجة التطبيقات التي تستخدم وسيطات طلب البحث من قيمة غير ثابتة (Array<Any?>) إلى متعارضة (Array<out Any?>) لمطابقة سلوك مصفوفة لغة Java. (b/253531073)

الإصدار 2.5.0-beta01

5 تشرين الأول (أكتوبر) 2022

تم إصدار "androidx.room:room-*:2.5.0-beta01". يتضمّن الإصدار 2.5.0-beta01 هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • يجب تقييد الإصدار الأدنى من الإصدار المتوافق مع @Upsert ليكون واجهة برمجة التطبيقات الإصدار 16. ويرجع ذلك إلى عدم القدرة على تحديد تعارض أحد القيود الأساسية على المفتاح الأساسي في واجهات برمجة التطبيقات الأقدم. (I5f67f، b/243039555)

إصلاح الأخطاء

  • تم إصلاح المشكلة المتمثلة في تصدير جداول الظل بشكل غير صحيح إلى ملفات .json المخطط، ما أدى إلى إتلافها. (I4f83b، b/246751839)

الإصدار 2.5.0-alpha03

24 آب (أغسطس) 2022

تم إصدار "androidx.room:room-*:2.5.0-alpha03". يحتوي الإصدار 2.5.0-alpha03 على هذه الالتزامات.

الميزات الجديدة

  • تمت إضافة تعليق توضيحي جديد للاختصار "@Upsert"، يحاول إدراج كيان عندما لا يكون هناك تعارض في العناصر الفريدة، أو تعديل العنصر في حال وجود تعارض. (I7aaab، b/241964353)

إصلاح الأخطاء

  • ستعرض الغرفة الآن الخطأ SQLiteConstraintException بدلاً من IllegalStateException أثناء التحقق من قيد المفتاح الخارجي للنقل التلقائي. (I328dd)
  • إصلاح تغيير غير متوافق مع مصدر Kotlin لسمات getter / السمات getOpenHelper وgetQueryExecutor وgetTransactionExecutor. (Iad0ac)

الإصدار 2.5.0-alpha02

1 حزيران (يونيو) 2022

تم إصدار "androidx.room:room-*:2.5.0-alpha02". يحتوي الإصدار 2.5.0-alpha02 على هذه الالتزامات.

الميزات الجديدة

  • تمت إضافة عناصر room-paging جديدة room-paging-rxjava2 وroom-paging-rxjava3 وroom-paging-guavaللحصول على الدعم في ميزة "تتبُّع أداء الغرف".(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,{146666906)

تغييرات واجهة برمجة التطبيقات

  • تم تحويل كل room-runtime من لغة Java إلى لغة Kotlin. (If2069 وb/206859668),(Ie4b55 وb/206859668) و(I697ee وb/206859668) و(I96c25) و{1685b/206859668

    ملاحظة: قد تواجه مشاكل عدم توافق المصادر بسبب تحويل المكتبة إلى Kotlin. إذا كان رمزك في Kotlin وكان جارٍ الاتصال بالإصدار القديم من Room، سيحتاج الإصدار الجديد إلى معالجة هذه الحالات. على سبيل المثال، من التغيير غير المتوافق المصدر المعروف أنّ عليك الآن في InvalidationTracker الإعلان عن onInvalidate() في Observer لاستخدام مَعلمة من النوع Set وليس MutableSet.

  • تمت إضافة واجهات برمجة تطبيقات لتوفير أسماء جداول القيم الأساسية والقيم لتوضيحها في @MapInfo (Icc4b5).
  • يجب حلّ إحدى مشاكل توافق المصدر لإعادة السماح بسياسة @Ignore في أدوات الحصول على المواقع الإلكترونية. (Ifc2fb)

إصلاح الأخطاء

  • تكرار الخوارزمية الإرشادية لدقة العمود. ستحاول الغرفة الآن حل الأعمدة الغامضة في طلب بحث متعدد الخرائط. يسمح هذا بتعيين عبارات JOIN ذات الجداول التي تحتوي على جداول ذات الاسم نفسه بشكل صحيح إلى كائن بيانات النتيجة. (I4b444 وb/201306012 وb/212279118)

الإصدار 2.5.0-alpha01

23 شباط (فبراير) 2022

تم إصدار "androidx.room:room-*:2.5.0-alpha01". يحتوي الإصدار 2.5.0-alpha01 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • تم إصلاح المشكلة المتمثلة في عدم فرض استخدام الغرفة @IntDef في مصادر Kotlin. (I75f41، b/217951311)
  • تم إصلاح مشكلة توافق المصدر لإعادة السماح لـ @Query في أدوات الحصول على المواقع. (I0a09b)
  • تم تحويل ترميز الغرفة الشائع من لغة Java إلى لغة Kotlin. (I69c48، b/206858235)

    ملاحظة: قد تواجه مشاكل في عدم توافق المصادر، لأنّه تم نقل بعض المواقع إلى العناصر المصاحبة أثناء تحويل المكتبة إلى Kotlin. إذا كان رمزك بلغة Kotlin ويستدعي الإصدار القديم من Room، سيحتاج الإصدار الجديد إلى اللاحقة ".Companion" عند الوصول إلى هذه السمات.

  • نقل بيانات الغرفة من Java إلى لغة Kotlin (I2724b، b/206858622)
  • تم تحويل paging ملف ذي صلة في room-runtime من Java إلى Kotlin. (I82fc8، b/206859668)
  • تمت إضافة واجهة برمجة التطبيقات لقفل العمليات المتعددة واستخدامها على مستوى FrameworkSQLite*، لحماية عملية إنشاء قاعدة البيانات المتعددة العمليات ونقلها للمرة الأولى. (Ied267، b/193182592)

إصلاح الأخطاء

  • تمت إضافة توافق المواقع الداخلية في مصادر لغة البرمجة Kotlin. هذا تغيير بسيط في السلوك في Room حيث سيستخدم اسم المصدر للدوال أثناء مطابقتها مع الخصائص مثل getters/setters (كان في السابق يستخدم اسم JVM للدالة يختلف عن الدوال/الخصائص الداخلية). إذا كنت تستخدم تعليقات @JvmName التوضيحية المخصّصة لمطابقة قيم getter/seters مع الخصائص الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التعديل (If6531، b/205289020)

الإصدار 2.4.3

الإصدار 2.4.3

27 تموز (يوليو) 2022

تم إصدار "androidx.room:room-*:2.4.3". يتضمّن الإصدار 2.4.3 هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح مشكلة قد تتسبب في عدم التعرّف على دوال التعليق في Kotlin 1.7 (b/236612358).

الإصدار 2.4.2

الإصدار 2.4.2

23 شباط (فبراير) 2022

تم إصدار "androidx.room:room-*:2.4.2". يتضمّن الإصدار 2.4.2 عمليات الالتزام هذه.

إصلاح الأخطاء

  • يمكنك إصلاح مشكلة إنشاء رمز لدالة Dao @Transaction التي تعلّق مع نص ينشئ طريقة واجهة تلقائية بسبب التجميع باستخدام -Xjvm-default=all أو ما يعادله. (Ia4ce5)
  • حل خطأ ينشئ الغرفة رمزًا لطريقة طلب البحث من النوع Array<ByteArray> (If086e، b/213789489)

الإصدار 2.4.1

الإصدار 2.4.1

12 كانون الثاني (يناير) 2022

تم إصدار "androidx.room:room-*:2.4.1". يتضمّن الإصدار 2.4.1 هذه الالتزامات.

إصلاح الأخطاء

  • تمت إضافة توافق المواقع الداخلية في مصادر لغة البرمجة Kotlin. هذا تغيير بسيط في السلوك في Room حيث سيستخدم اسم المصدر للدوال أثناء مطابقتها مع الخصائص مثل getters/setters (كان في السابق يستخدم اسم JVM للدالة يختلف عن الدوال/الخصائص الداخلية). إذا كنت تستخدم تعليقات @JvmName التوضيحية المخصّصة لمطابقة قيم getter/seters مع الخصائص الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التعديل (If6531، b/205289020)

الإصدار 2.4.0

الإصدار 2.4.0

15 كانون الأول (ديسمبر) 2021

تم إصدار "androidx.room:room-*:2.4.0". يحتوي الإصدار 2.4.0 على هذه الالتزامات.

تغييرات مهمة منذ الإصدار 2.3.0

  • عمليات نقل البيانات التلقائية: توفّر Room الآن واجهة برمجة تطبيقات لإنشاء عمليات نقل البيانات تلقائيًا ما دام يتم تصدير المخططات. للسماح لـ Room بمعرفة أنه يجب أن يؤدي إلى إنشاء نقل تلقائي لنقل بيانات موقع جديد، يمكن استخدام @Database#autoMigrations للإعلان عن الإصدارات التي سيتم النقل التلقائي منها وإليها. عندما تحتاج غرفة إلى معلومات إضافية بشأن الجداول وعمليات إعادة تسمية الأعمدة أو حذفها، يمكن أن يذكر التعليق التوضيحي @AutoMigration فئة المواصفات التي تحتوي على هذه الإدخالات. يمكنك الاطّلاع على مستندات @AutoMigration للحصول على مزيد من التفاصيل.
  • إدخال التبعية في عمليات النقل التلقائية: تُعد @ProvidedAutoMigrationSpec واجهة برمجة تطبيقات جديدة للإقرار بأنه سيتم توفير AutoMigrationSpec في وقت التشغيل عبر RoomDatabase.Builder#addAutoMigrationSpec(). ويسمح هذا لإطار عمل حقن التبعية بتوفير مثل هذه المواصفات عندما تحتاج إلى تبعيات معقدة.
  • دعم مساعد اختبار نقل البيانات لعمليات النقل التلقائي: تم تحديث MigrationTestHelper في الغرفة لدعم عمليات النقل التلقائي من خلال توفير واجهة برمجة تطبيقات إنشائية جديدة تتلقّى فئة قاعدة البيانات قيد الاختبار. يتيح ذلك للمساعد إضافة عمليات النقل التلقائية تلقائيًا بالطريقة نفسها أثناء runMigrationsAndValidate.
  • دعم تقسيم صفحات الغرف: تم إطلاق androidx.room:room-paging لتوفير الدعم المحلي للإصدار 3.0 من صفحة النتائج وطلبات بحث الغرف التي تعرض androidx.paging.PagingSource.
  • طرق طلب البحث الارتباطي: تتيح الغرفة الآن استخدام طرق @Dao لأنواع إرجاع الخرائط المتعددة، وهي مفيدة لعبارات JOIN. الأنواع المتوافقة للخرائط المتعددة هي Map وSparseArray وLongSparseArray، بالإضافة إلى ImmutableMap وImmutableSetMultimap وImmutableListMultimap من Guava.

الإصدار 2.4.0-rc01

1 كانون الأول (ديسمبر) 2021

تم إصدار "androidx.room:room-*:2.4.0-rc01". يحتوي الإصدار 2.4.0-rc01 على هذه الالتزامات.

الميزات الجديدة

  • تحديث تبعية الغرفة على KSP إلى 1.6.0-1.0.1 للتوافق مع لغة Kotlin 1.6

الإصدار 2.4.0-beta02

17 تشرين الثاني (نوفمبر) 2021

تم إصدار "androidx.room:room-*:2.4.0-beta02". يتضمّن الإصدار 2.4.0-beta02 هذه الالتزامات.

الميزات الجديدة

  • لقد وفّرنا إمكانية استخدام SparseArray وlongSparseArray في @MapInfo. (Ic91a2b/138910317)

إصلاح الأخطاء

  • لقد أضفنا أداة تحليل Typeconversioner جديدة تأخذ معلومات قابلية القيم الفارغة في الاعتبار في الأنواع. ولأنّ هذه المعلومات لا تتوفّر إلا في برنامج KSP، يتم تفعيلها تلقائيًا في برنامج مشاركة المعلومات (KSP) فقط. وإذا تسببت في أي مشاكل، يمكنك إيقافها من خلال تمرير room.useNullAwareTypeAnalysis=false إلى معالج التعليقات التوضيحية. إذا حدث ذلك، يُرجى الإبلاغ عن خطأ في الملف لأنّه ستتم إزالة هذه العلامة في المستقبل. باستخدام أداة تحليل Typeconversioner الجديدة هذه، نقترح عليك فقط توفير أدوات تُستقبل قيم غير فارغة، حيث إن أداة التحليل الجديدة لديها القدرة على لفّها بفحص فارغ. تجدر الإشارة إلى أنّ هذا الإجراء لا يؤثر في المستخدمين الذين يستخدمون KAPT أو Java باعتبارهما معالجات التعليقات التوضيحية (على عكس KSP)، وليس لديهم معلومات حول القيم الفارغة في الأنواع. (Ia88f9، b/193437407)
  • إصلاح خطأ يتسبّب في تعذّر تطبيق Room في التجميع مع ظهور خطأ SQL عندما يتم تعريف كيان FTS باستخدام أداة إنشاء الرموز المميّزة لوحدة ICU (I00db9، b/201753224)
  • تم حل مشكلة في عمليات نقل البيانات التلقائية بخصوص عمود جديد تمت إضافته إلى كيان مضمّن بين الإصدارات. (I5fcb1b/193798291)
  • لقد حللنا مشكلة تتعلق بأنواع إرجاع طريقة الاستعلام الارتباطية في استعلامات LEFT JOIN. مع هذه التغييرات، وفي حالة وجود تعيين متعدد 1، لن تشتمل المجموعة المعروضة لمفتاح على كائن القيمة غير الصالح إذا لم يتم العثور عليه في المؤشر. إذا لم يتم العثور على قيم صالحة، فسيتم ربط مفتاح بمجموعة فارغة. (Id5552b/201946438)
  • تم حل مشكلة النقل التلقائي المتمثلة في تعذّر تخطي الكلمات الرئيسية SQLite في أسماء الأعمدة. (Idbed4b/197133152)

الإصدار 2.4.0-beta01

13 تشرين الأول (أكتوبر) 2021

تم إصدار "androidx.room:room-*:2.4.0-beta01". يتضمّن الإصدار 2.4.0-beta01 هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم إضافة أعمدة جديدة في عمليات النقل التلقائي التي كان هناك جدول آخر ضمن عملية النقل التلقائي نفسها يحتوي أيضًا على عمود جديد بالاسم نفسه. (Ia5db5، b/200818663)
  • إنّ تنفيذ PagingSource الذي تم إنشاؤه من خلال تقسيم صفحة الغرف يستخدم الآن queryExecutor الذي تم تمريره عبر RoomDatabase.Builder، لذا يمكن إلغاؤه بدلاً من Dispatchers.IO في السابق. (Iae259)

الإصدار 2.4.0-alpha05

29 أيلول (سبتمبر) 2021

تم إصدار "androidx.room:room-*:2.4.0-alpha05". يحتوي الإصدار 2.4.0-alpha05 على هذه الالتزامات.

الميزات الجديدة

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة سمة جديدة إلى التعليق التوضيحي Typeconversioners للسماح للمطوّرين بإيقاف محوّلي Enum وUUID المضمنين. وتكون هذه البرامج مفعَّلة تلقائيًا، ولكن يمكنك إيقافها لنطاق معيَّن أو لقاعدة البيانات بأكملها. راجع وثائق Typeconversioners للحصول على التفاصيل. (36ae9e، b/195413406)

  • إتاحة استخدام المفاتيح/القيم التي لا تتبع POJO لأنواع النتائج المعروضة في "الخرائط المتعددة" في DAO من خلال التعليق التوضيحي @MapInfo. (I4d704)

ستكون @MapInfo مطلوبة عندما يكون المفتاح أو عمود القيمة للخريطة من عمود واحد. ويمكنك الاطّلاع على المثال التالي:

@MapInfo(valueColumn = "songCount")
@Query("""
       SELECT *, COUNT(mSongId) as songCount
       FROM Artist JOIN Song ON Artist.artistName = Song.artist
       GROUP BY artistName
       """)
fun getArtistAndSongCounts(): Map<Artist, Integer>
  • يجب جعل "room-paging" عنصرًا مطلوبًا عند استخدام صفحة "Paging3" مع الغرفة. (إياف)

إصلاح الأخطاء

  • حل مشكلة عدم ترتيب نتائج استعلامات الخريطة المتعددة بشكل صحيح عندما يحتوي الاستعلام على عبارة ORDER BY لعمود من مفتاح الخريطة. (I6b887)

المساهمة الخارجية

  • تمت إضافة واجهة برمجة تطبيقات جديدة لتحديد ترتيب الفهرس في @Index. وبفضل "نيكيتا زيلونكين". (I033fc)

الإصدار 2.4.0-alpha04

21 تموز (يوليو) 2021

تم إصدار "androidx.room:room-*:2.4.0-alpha04". يحتوي الإصدار 2.4.0-alpha04 على هذه الالتزامات.

الميزات الجديدة

  • تتيح الغرفة الآن استخدام طرق @Dao لأنواع إرجاع الخرائط المتعددة، وهي مفيدة لعبارات JOIN. الأنواع المتوافقة من الخرائط المتعددة هي Map إلى جانب ImmutableMap وImmutableSetMultimap وImmutableListMultimap من Guava.

    في ما يلي أمثلة على طلبات بحث الخرائط المتعدّدة:

    خريطة العلاقة بين فردين

    @Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId")
    fun getSongAndArtist(): Map<Song, Artist>
    

    خريطة العلاقة من واحد إلى متعدد (الخريطة المتعددة العادية)

    @Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId")
    fun getArtistAndAlbums(): Map<Artist, List<Album>>
    

    يمكن أيضًا إدراج نتيجة الخريطة المتعدّدة في أنواع الإرجاع غير المتزامنة المتوافقة، مثل LiveData أو Observable من Rx أو الكوروتينات Flow.

تقسيم ترتيب الغرف

  • تم إصدار androidx.room:room-paging، ما يوفّر دعمًا للإصدار 3.0 من نظام "تسجيل الصفحات" في الأصل لطلبات البحث في الغرفة التي تعرض androidx.paging.PagingSource.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun loadUsers(): PagingSource<Int, User>
    }
    
  • يحل هذا العنصر محل تنفيذ androidx.paging.PagingSource الذي تم إنشاؤه من خلال الغرفة بأداة مدمجة أعلى واجهات برمجة تطبيقات الترحيل 3.0. يحلِّل تنفيذ PagingSource المفاتيح بشكل مختلف، لذا يجب مراعاة هذا التغيير في السلوك لأي مفتاح يتم تقديمه يدويًا في PagingSource، بما في ذلك firstKey الذي تم تمريره عبر الدالة الإنشائية لـ Pager. سيبدأ تحميل الصفحات بدءًا من Key بحيث يكون Key أول عنصر تم تحميله. وينحرف عن السلوك الحالي، حيث يتم التعامل مع LoadParams.Refresh.Key كموضع الانتقال للمستخدم ويتم تحميل العناصر قبل المفتاح وبعده.

  • يُعد العنصر اختياريًا، وسيؤدي إيقاف هذه الميزة إلى الرجوع إلى الدعم الحالي لميزة "نقل البيانات 3.0" التي تم توفيرها في الغرفة 2.3. ومع ذلك، لن يكون هذا العنصر اختياريًا في الإصدار المستقبلي لأولئك الذين يستخدمون Room من خلال الانتقال إلى الإصدار 3.0. للموافقة على ذلك، أضِف العنصر الجديد لنقل بيانات الغرف إلى مسار صفك. إذا كنت تستخدم Gradle، يمكنك إضافة المقتطف التالي إلى Build.gradle:

    dependency {
      implementation("androidx.room:room-paging:2.4.0-alpha04")
    }
    

إصلاح الأخطاء

  • أصلِح مشكلة في عمليات نقل البيانات التلقائية بشأن التعامل مع انتهاكات المفاتيح الخارجية. (b/190113935)

الإصدار 2.4.0-alpha03

16 حزيران (يونيو) 2021

تم إصدار "androidx.room:room-*:2.4.0-alpha03". يحتوي الإصدار 2.4.0-alpha03 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • عليك تحديث MigrationTestHelper في الغرفة لدعم عمليات النقل التلقائية من خلال توفير واجهة برمجة تطبيقات إنشائية جديدة تتلقّى فئة قاعدة البيانات قيد الاختبار. يتيح ذلك للمساعد إضافة عمليات النقل التلقائية تلقائيًا بالطريقة نفسها أثناء runMigrationsAndValidate.

إصلاح الأخطاء

  • تم إصلاح مشكلة في مكتبة SQLite الأصلية في الغرفة لدعم شرائح M1 من Apple. (b/174695268

  • تم إصلاح مشكلة عدم خروج الغرفة من الخطأ عندما يكون نوع إرجاع دالة @معاملة هو تدفق (I56ddd، b/190075899)

  • أصلِح مشكلة في عمليات نقل البيانات التلقائية بشأن الفهارس. b/177673291

تعديلات التبعية

  • يعتمد دعم برنامج KSP للغرفة الآن على 1.5.10-1.0.0-beta01 في برنامج KSP. (1ecb11، b/160322705)

الإصدار 2.4.0-alpha02

5 أيار (مايو) 2021

تم إصدار "androidx.room:room-*:2.4.0-alpha02". يحتوي الإصدار 2.4.0-alpha02 على هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • @ProvidedAutoMigrationSpec هي واجهة برمجة تطبيقات جديدة للإعلان عن توفير AutoMigrationSpec في وقت التشغيل من خلال RoomDatabase.Builder#addAutoMigrationSpec(). ويسمح هذا لإطار عمل حقن التبعية بتوفير مثل هذه المواصفات عندما تحتاج إلى تبعيات معقدة.

إصلاح الأخطاء

  • يمكنك إصلاح مشكلة في عمليات النقل التلقائي التي لا تتم فيها إعادة إنشاء @DatabaseView بشكلٍ صحيح.

المساهمة الخارجية

  • يمكنك إصلاح مشكلة في "JournalMode.TRUNCATE" بالغرفة حيث يتم أحيانًا استدعاء استدعاء "InvalidationTracker" على نحو غير صالح أو بعد فوات الأوان أو عدم استدعاءه على الإطلاق. شكرًا لـ Uli Bubenheimer | bubenheimer@users.noreply.github.com (b/154040286)

الإصدار 2.4.0-alpha01

21 نيسان (أبريل) 2021

تم إصدار "androidx.room:room-*:2.4.0-alpha01". يحتوي الإصدار 2.4.0-alpha01 على هذه الالتزامات.

الميزات الجديدة

  • عمليات نقل البيانات التلقائية: توفّر Room الآن واجهة برمجة تطبيقات لإنشاء عمليات نقل البيانات تلقائيًا ما دام يتم تصدير المخططات. للسماح لـ Room بمعرفة أنه يجب أن يؤدي إلى إنشاء نقل تلقائي لنقل بيانات موقع جديد، يمكن استخدام @Database#autoMigrations للإعلان عن الإصدارات التي سيتم النقل التلقائي منها وإليها. عندما تحتاج غرفة إلى معلومات إضافية بشأن الجداول وعمليات إعادة تسمية الأعمدة أو حذفها، يمكن أن يذكر التعليق التوضيحي @AutoMigration فئة المواصفات التي تحتوي على هذه الإدخالات. اطّلِع على مستندات @AutoMigration لمزيد من التفاصيل.

إصلاح الأخطاء

  • أصلِح المشكلة المتمثلة في التحقُّق من صحة defaultValue الذي يتضمن أقواسًا إضافية بشكل غير صحيح من خلال عملية التحقق من مخطط الغرفة. b/182284899

الإصدار 2.3.0

الإصدار 2.3.0

21 نيسان (أبريل) 2021

تم إصدار "androidx.room:room-*:2.3.0". يحتوي الإصدار 2.3.0 على هذه الالتزامات.

تغييرات مهمة منذ الإصدار 2.2.0

  • إتاحة التعداد المضمّن: سيتم الآن استخدام "الغرفة" تلقائيًا لاستخدام محوِّل من النوع "رقم التعداد إلى سلسلة" والعكس صحيح في حال عدم توفير أي خيار. في حال توفُّر محوّل نوع لأحد التعدادات حاليًا، ستعطي الغرفة الأولوية لاستخدامه على المحوِّل التلقائي.
  • طلب معاودة الاتصال: توفّر Room الآن واجهة برمجة تطبيقات عامة لمعاودة الاتصال RoomDatabase.QueryCallback، عندما تكون طلبات البحث على وشك تنفيذ الطلبات، وهو ما يمكن أن يكون مفيدًا لتسجيل الدخول إلى إصدارات تصحيح الأخطاء. يمكن ضبط معاودة الاتصال من خلال RoomDatabase.Builder#setQueryCallback().
  • تحسينات متوفّرة مسبقًا: تتوفّر في الغرفة الآن واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات منشورة مسبقًا. وهذا يسمح بحالات مثل ضغط قاعدة بيانات الحزمة السابقة باستخدام gzip.
  • محولات الأنواع المقدَّمة: تحتوي الغرفة الآن على واجهات برمجة تطبيقات لتوفير مثيلات من محوِّلات الأنواع التي يمكن للتطبيق التحكم في إعدادها. لوضع علامة على محوِّل نوع سيتم تقديمه إلى Room، استخدِم التعليق التوضيحي الجديد تقديم @OfferdTypeconversioner.
  • دعم RxJava3: تتيح الغرفة الآن أنواع RxJava3. على غرار RxJava2، يمكنك إعلان طرق DAO التي يكون نوع الإرجاع الخاص بها "Flowable" و"Single" و"ربما" و"متكامل". بالإضافة إلى ذلك، يتوفّر عنصر androidx.room:room-rxjava3 جديد لدعم RxJava3.
  • دعم الانتقال من صفحة إلى 3.0: ستوفّر الغرفة الآن عمليات تنفيذ لطرق @Query التي تتضمّن تعليقات توضيحية يكون نوعها من النوع androidx.paging.PagingSource.

الإصدار 2.3.0-rc01

24 آذار (مارس) 2021

تم إصدار "androidx.room:room-*:2.3.0-rc01". يحتوي الإصدار 2.3.0-rc01 على هذه الالتزامات.

إصلاح الأخطاء

  • يمكنك حل مشكلة منعت استهلاك طلبات "تدفق Coroutine المتواصلة" التي أنشأها Room في مجموعة withTransaction معلَّقة. (I797bf)

الإصدار 2.3.0-beta03

10 آذار (مارس) 2021

تم إصدار "androidx.room:room-*:2.3.0-beta03". يتضمّن الإصدار 2.3.0-beta03 هذه الالتزامات.

الميزات الجديدة

  • تمت إضافة دعم متزايد إلى عملية التجميع في برنامج KSP. (I031c1، b/176453350)

إصلاح الأخطاء

  • تم إصلاح خطأ تسبب في حدوث خطأ ANR أثناء إنشاء PagingSource في سلسلة التعليمات الرئيسية. (I42b74، b/181221318)
  • تم إصلاح مستوى رؤية @ExperimentalRoomApi ليكون "علنيًا" بدلاً من "خاص" للحزمة. (b/181356119)

المساهمة الخارجية

  • اسمح لغرفة بقبول نوع عرض POJO في طريقة DAO التي تتضمن تعليقات توضيحية @Query عندما تكون هناك أيضًا تعليقات توضيحية عليها باستخدام @SkipQueryVerification. ستبذل Room قصارى جهدها لتحويل نتيجة الطلب إلى نوع العرض POJO بالطريقة نفسها التي يتم بها استخدام طريقة DAO ذات التعليقات التوضيحية @RawQuery. شكرًا لـ Markus Riegel | hey@marcorei.com (I45acb)

الإصدار 2.3.0-beta02

18 شباط (فبراير) 2021

تم إصدار "androidx.room:room-*:2.3.0-beta02". يتضمّن الإصدار 2.3.0-beta02 هذه الالتزامات.

الميزات الجديدة

  • تتوفّر الآن في الغرفة الدعم التجريبي لمعالجة رموز لغة البرمجة Kotlin KSP.

    يحلّ KSP محلّ KAPT من أجل تشغيل معالِجات التعليقات التوضيحية في الأصل على المحول البرمجي بلغة Kotlin، ما يقلّل بشكل كبير من أوقات الإصدار.

    لاستخدام Room مع KSP، يمكنك تطبيق المكوّن الإضافي KSP Gradle واستبدال الإعدادات kapt في ملف الإصدار بـ ksp. على سبيل المثال، بدلاً من kapt 'androidx.room:room-compiler:2.3.0-beta02'، استخدِم ksp 'androidx.room:room-compiler:2.3.0-beta02'. اطّلِع على مستندات برنامج مشاركة المعلومات (KSP) للتعرّف على مزيد من التفاصيل.

    لاحظ أنه نظرًا لأن KSP في مرحلة تجريبية، يوصى بمواصلة استخدام KAPT للترميز الإنتاجي. يمكن تقليل أوقات الإصدار فقط في حال عدم توفُّر معالِجات أخرى تستخدم KAPT. راجع b/160322705 للتعرّف على المشاكل المعروفة.

الإصدار 2.3.0-beta01

27 كانون الثاني (يناير) 2021

تم إصدار "androidx.room:room-*:2.3.0-beta01". يتضمّن الإصدار 2.3.0-beta01 هذه الالتزامات.

الميزات الجديدة

  • قواعد البيانات القابلة للإغلاق تلقائيًا: يمكن الآن لتطبيق Room إغلاق قواعد البيانات التي لا يتم الوصول إليها بعد فترة زمنية معيَّنة. هذه ميزة تجريبية ويمكن تفعيلها من خلال الاتصال بـ RoomDatabase.Builder#setAutoCloseTimeout(). هذه الميزة مفيدة للتطبيقات التي تحتوي على قواعد بيانات متعددة.

إصلاح الأخطاء

  • أصلِح المشكلة التي تؤدي فيها طُرق Dao باستخدام طُرق @Update أو @Delete متعددة ذات استراتيجيات تعارض مختلفة إلى إنشاء رمز باستخدام إحدى الاستراتيجيتَين فقط، مع تجاهل الاستراتيجية المحدَّدة. (/I0b90d، b/176138543)

الإصدار 2.3.0-alpha04

16 كانون الأول (ديسمبر) 2020

تم إصدار "androidx.room:room-*:2.3.0-alpha04". يحتوي الإصدار 2.3.0-alpha04 على هذه الالتزامات.

الميزات الجديدة

  • توفّر Room الآن واجهة برمجة تطبيقات عامة لمعاودة الاتصال RoomDatabase.QueryCallback للاستخدام عندما تكون طلبات البحث على وشك التنفيذ، ويمكن الاستفادة من هذه الواجهة في تسجيل الدخول إلى إصدارات تصحيح الأخطاء. يمكن ضبط معاودة الاتصال من خلال RoomDatabase.Builder#setQueryCallback(). (Iaa513، b/174478034، b/74877608)
  • سيتم الآن استخدام الغرفة تلقائيًا لاستخدام محوِّل من النوع "رقم إلى سلسلة" والعكس صحيح في حال عدم توفير أي هدف. في حال توفُّر محوّل نوع لأحد التعدادات حاليًا، ستعطي الغرفة الأولوية لاستخدامه على المحوِّل التلقائي. (b/73132006)

مشكلة معروفة

  • إذا كان هناك محوّل من نوع أحادي الاتجاه للقراءة بالفعل للعدد، فقد تستخدم Room عن طريق الخطأ السلسلة المضمنة إلى محول التعداد وهو ما قد لا يكون مرغوبًا فيه. هذه مشكلة معروفة ويمكن حلها من خلال جعلها محوّلاً ثنائي الاتجاه. يُرجى الاطّلاع على: b/175707691

إصلاح الأخطاء

  • تم إصلاح المشكلة المتمثلة في إيقاف Room للمعالجة المتزايدة للتعليقات التوضيحية بشكلٍ غير صحيح في إصدارات JDK الجديدة. (b/171387388)
  • تم إصلاح مشكلة متعلقة بالعثور على الغرفة للفئة التي تم إنشاؤها عند استخدام محمّلات متعددة للصفوف. نشكرك على إصلاح المشكلة "Serendipity | 892449346@qq.com". (b/170141113)
  • تم إصلاح المشكلة المتمثلة في إنشاء غرفة لرمز غير صحيح عندما يكون لـ @Dao في لغة البرمجة Kotlin فئة أساسية تكون سماتها العامة أولية في JVM. (b/160258066)

المساهمة الخارجية

  • سيتم الآن استخدام "beginTransactionNonExclusive" تلقائيًا في الغرفة إذا كان وضع WAL مفعَّلاً وكانت واجهة برمجة التطبيقات 16 أو أكثر. بفضل "أحمد الأول". خليل | ahmedibrahimkhali@gmail.com’! (b/126258791)

الإصدار 2.3.0-alpha03

14 تشرين الأول (أكتوبر) 2020

تم إصدار "androidx.room:room-*:2.3.0-alpha03". يحتوي الإصدار 2.3.0-alpha03 على هذه الالتزامات.

الميزات الجديدة

  • تحتوي الغرفة الآن على واجهات برمجة تطبيقات لتوفير مثيلات من أنواع المحولات التي يتمكن التطبيق من التحكم في إعدادها. لوضع علامة على محوِّل نوع سيتم تقديمه إلى Room، استخدِم التعليق التوضيحي الجديد @ProvidedTypeConverter. شكرًا لـ "mzgreen yairobbe@gmail.com". (Ie4fa5، b/121067210)

  • تحتوي الغرفة الآن على واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات مجمعة مسبقًا للقراءة من ساحة مشاركات إدخال. وهذا يسمح بحالات مثل ضغط قاعدة بيانات الحزمة السابقة باستخدام gzip. شكرًا لـ "أحمد الحلو ahmedre@gmail.com" (3e6792، b/146911060)

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة الهدف الناقص إلى التعليق التوضيحي @ForeignKey لمنع استخدامه خارج التعليق التوضيحي @Entity. (Iced1e)

  • أصبح الحقل mCallbacks في RoomDatabase.java مخفيًا الآن. (d576cb، b/76109329)

إصلاح الأخطاء

  • عدِّل المستند لتوضيح أنه لا يمكن استخدام Typeconversioners إلا لتحويل الأعمدة / الحقول وليس لتحويل الصفوف. (I07c56، b/77307836)

  • يُرجى تعديل وحدة معالجة البيانات (DaoProcessor) لإصلاح خطأ في برنامج تجميع البيانات في Dao من خلال نوع متميّز عام يستخدم لغة البرمجة Kotlin. (Ice6bb، b/160258066)

  • تعديل مستندات إضافة/إزالة طُرق المراقب لتوضيح سلسلة المحادثات (Ifd1d9، b/153948821)

  • حل مشكلة متعلقة بالتحقق من صحة جداول FTS بشكل غير صحيح والتي أعلنت عن عمود الصف الخاص بها (d62ebc، b/145858914)

المساهمات الخارجية

  • حلّ مشاكل اللغة التركية (5746e3) وb/68159494

  • استبدِل ConcurrentHashMap داخل RoomDatabase بـ Collections.synchronizedMap() لتجنُّب المشاكل على Android Lollipop (d1cfc7، b/162431855).

  • أضف استدعاء onOpenPrepackagedDatabase عند نسخ قاعدة بيانات مسبقة التجميع. (I1ba74، b/148934423)

الإصدار 2.3.0-alpha02

22 تموز (يوليو) 2020

تم إصدار "androidx.room:room-*:2.3.0-alpha02". يحتوي الإصدار 2.3.0-alpha02 على هذه الالتزامات.

الميزات الجديدة

  • دعم RxJava3: تتيح الغرفة الآن أنواع RxJava3. على غرار RxJava2، يمكنك إعلان طرق DAO التي يكون نوع الإرجاع الخاص بها "Flowable" و"Single" و"ربما" و"متكامل". بالإضافة إلى ذلك، يتوفّر عنصر androidx.room:room-rxjava3 جديد لدعم RxJava3. (b/152427884)

تغييرات واجهة برمجة التطبيقات

  • أصبح تعريف @TypeConverter في فئة كائن Kotlin متاحًا. (b/151110764)
  • خيار معالجة التعليقات التوضيحية المتزايدة في الغرفة مفعَّل الآن تلقائيًا. (b/112110217)

الإصدار 2.3.0-alpha01

10 حزيران (يونيو) 2020

تم إصدار "androidx.room:room-*:2.3.0-alpha01". يحتوي الإصدار 2.3.0-alpha01 على هذه الالتزامات.

الميزات الجديدة

  • دعم الانتقال من صفحة إلى 3.0: ستوفّر الغرفة الآن عمليات تنفيذ للطرق @Query التي تتضمّن تعليقات توضيحية يكون نوعها من النوع androidx.paging.PagingSource.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun pagingSource(): PagingSource<Int, User>
    }
    

تغييرات واجهة برمجة التطبيقات

  • @RewriteQueriesToDropUnusedColumns هو تعليق توضيحي جديد مناسب يجعل غرفة تُعيد كتابة إسقاط "*" في طلب بحث بحيث تتم إزالة الأعمدة غير المستخدمة في النتيجة.
  • تم إيقاف خيار المعالج room.expandProjection نهائيًا الآن. يمكنك استخدام @RewriteQueriesToDropUnusedColumns كبديل لطلبات تحسين الغرفة من خلال إسقاط النجوم. تجدر الإشارة إلى أنّ @RewriteQueriesToDropUnusedColumns لا يحلّ محلّ حل تعارض الأعمدة room.expandProjection المقدَّم في ما يتعلق بأنواع النتائج التي تحتوي على حقول @Embedded.

إصلاح الأخطاء

  • تم إصلاح الخطأ المتمثل في عدم اكتشاف Room بشكل صحيح لإصدار JDK المستخدَم لتفعيل معالج التعليقات التوضيحية التزايدية. شكرًا لـ Blaz Solar (me@flaz.solar) (b/155215201)
  • يتم الآن تضمين تبعية ANTLR مع معالج التعليقات التوضيحية لتجنب تعارض الإصدارات مع المعالجات الأخرى التي تستخدم أيضًا ANTLR. (b/150106190)

الإصدار 2.2.6

الإصدار 2.2.6

16 كانون الأول (ديسمبر) 2020

تم إصدار "androidx.room:room-*:2.2.6". يتضمّن الإصدار 2.2.6 هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح المشكلة المتمثلة في إيقاف Room للمعالجة المتزايدة للتعليقات التوضيحية بشكلٍ غير صحيح في إصدارات JDK الجديدة. (b/171387388)

الإصدار 2.2.5

الإصدار 2.2.5

18 آذار (مارس) 2020

تم إصدار "androidx.room:room-*:2.2.5". يحتوي الإصدار 2.2.5 على هذه الالتزامات.

إصلاح الأخطاء

  • إنشاء MultiInstanceInvalidationService directBootAware بفضل "Mygod contact-git@mygod.be" (b/148240967)
  • تم إصلاح خطأ قد يؤدي إلى تعطُّل عندما كانت ميزة إلغاء المثيلات المتعددة مفعَّلة وكانت قاعدة البيانات تحتوي على كيان FTS. (b/148969394)
  • تم إصلاح مشكلة عند تحميل مكتبات SQLite الأصلية في معالج التعليقات التوضيحية للغرفة والتي قد تؤدي إلى تعطُّل المحول البرمجي بسبب التجميعات المتوازية. (b/146217083)

الإصدار 2.2.4

الإصدار 2.2.4

19 شباط (فبراير) 2020

تم إصدار androidx.room:room-common:2.2.4 وandroidx.room:room-compiler:2.2.4 وandroidx.room:room-guava:2.2.4 وandroidx.room:room-ktx:2.2.4 وandroidx.room:room-migration:2.2.4 وandroidx.room:room-runtime:2.2.4 وandroidx.room:room-rxjava2:2.2.4 وandroidx.room:room-testing:2.2.4. يتضمّن الإصدار 2.2.4 هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح مشكلة تعليق المعاملات التي تؤدي إلى توقفها في حال تم إلغاء الكوروتين بسرعة قبل بدء المعاملة فعليًا. (b/148181325)
  • تم إصلاح مشكلة استخدام @Generated بشكل خاطئ عند الإنشاء باستخدام JDK 9. (b/146538330)
  • تم إصلاح المشكلة المتمثلة في إنشاء غرفة لرمز غير صحيح عندما تتضمن واجهة DAO في لغة Kotlin دالة ملموسة. (b/146825845)

الإصدار 2.2.3

الإصدار 2.2.3

18 كانون الأول (ديسمبر) 2019

تم إصدار "androidx.room:room-*:2.2.3". يحتوي الإصدار 2.2.3 على هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح خطأ يفشل فيه غرفة Room في التحقق من صحة قاعدة بيانات لم تخضع لأي عملية نقل بيانات وتحتوي على تجزئة قديمة مع فهارس في مخططها. (b/139306173)

الإصدار 2.2.2

الإصدار 2.2.2

20 تشرين الثاني (نوفمبر) 2019

تم إصدار "androidx.room:room-*:2.2.2". يحتوي الإصدار 2.2.2 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • تم إصلاح خطأ كان سيؤدي جمع علاقة فردية تحتوي على أكثر من 999 صفًا إلى عرض الغرفة للعناصر ذات الصلة الفارغة. (b/143105450)

الإصدار 2.2.1

الإصدار 2.2.1

23 تشرين الأول (أكتوبر) 2019

تم إصدار "androidx.room:room-*:2.2.1". يحتوي الإصدار 2.2.1 على هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يتسبب في ظهور تحذير لـ Room على نحو خاطئ بشأن CURSOR_MISMATCH عند تشغيل خيار المحول البرمجيexpandProjection. (b/140759491)
  • تمت إضافة آلية إعادة محاولة للتعامل مع المكتبة الأصلية المفقودة والتي يتم استخدامها للتحقّق من طلبات البحث أثناء وقت التجميع.

الإصدار 2.2.0

الإصدار 2.2.0

9 تشرين الأول (أكتوبر) 2019

تم إصدار "androidx.room:room-*:2.2.0". يحتوي الإصدار 2.2.0 على هذه الالتزامات.

تغييرات مهمة بعد الإصدار 2.1.0

  • قاعدة بيانات تتضمّن حزمًا مسبقًا: تتوفَّر الآن واجهتا برمجة تطبيقات جديدتان في RoomDatabase.Builder لإنشاء RoomDatabase وفقًا لملف قاعدة بيانات تمت تعبئته مسبقًا. تُستخدم السمة createFromAsset() عندما يكون ملف قاعدة البيانات الذي تتم تعبئته تلقائيًا في مجلد "مواد العرض" لحزمة APK، بينما يُستخدم الرمز createFromFile() عندما يكون الملف في موقع عشوائي. وتؤدي استخدامات واجهة برمجة التطبيقات هذه إلى تغيير سلوك عمليات نقل البيانات التخريبية، بحيث تحاول Room أثناء عملية نقل احتياطية إعادة نسخ قاعدة البيانات التي تمت تعبئتها تلقائيًا إن توفّرت، وإلا ستلجأ فقط إلى إسقاط جميع الجداول وإعادة إنشائها. b/62185732
  • القيم التلقائية للمخطط: تحتوي @ColumnInfo الآن على سمة جديدة defaultValue يمكن استخدامها لتحديد القيمة التلقائية لعمود. تُعد القيم التلقائية جزءًا من مخطط قاعدة بيانات وسيتم التحقّق منها أثناء عمليات نقل البيانات في حال تحديدها. b/64088772
  • علاقات كثيرة إلى كثيرة: أصبح لـ @Relation الآن الموقع associateBy الجديد الذي يضم تعليقًا توضيحيًا جديدًا @Junction، ويُستخدَم للإشارة إلى علاقة يجب استيفاؤها من خلال جدول تقاطعات (يُعرف أيضًا باسم جدول الضم). b/69201917
  • العلاقات الأحادية: تم إلغاء القيد المفروض على حقول POJO التي تم وضع تعليقات توضيحية عليها بالرمز @Relation لتكون من النوع List أو Set، ما سمح فعليًا بتمثيل العلاقات الأحادية القيمة.b/62905145
  • الكيان المستهدف: تحتوي الآن تعليقات DAO التوضيحية @Insert و@Update و@Delete على خاصية جديدة targetEntity تسمح بتحديد الجدول المستهدف الذي من المفترض أن تتّخذ طريقة DAO عملاً عليه. ويسمح هذا بأن تكون معلمات طرق DAO هذه عناصر POJO عشوائية سيتم تفسيرها على أنها كيانات جزئية. عمليًا، يتيح ذلك عمليات الإدراج والحذف والتحديثات الجزئية. b/127549506
  • تدفق الكوروتينات: @Query يمكن أن تكون طرق DAO الآن من نوع العرض Flow<T>. سيعيد التدفق المعروض مجموعة جديدة من القيم إذا تم إبطال صلاحية جداول الملاحظة في طلب البحث. يعد تعريف دالة DAO بنوع عرض Channel<T> خطأً، وبدلاً من ذلك، يشجعك Room على استخدام Flow ثم استخدام الدوال المجاورة لتحويل Flow إلى Channel. b/130428884
  • معالِج التعليقات التوضيحية الإضافية في Gradle: أصبحت Room الآن معالجًا للتعليقات التوضيحية من Gradle ويمكن تفعيل ميزة زيادة التعليقات من خلال خيار المعالج room.incremental. يُرجى الاطّلاع على خيارات أداة تحويل الغرف للحصول على مزيد من المعلومات. إذا واجهت أي مشاكل، يُرجى الإبلاغ عن خطأ هنا. ونحن نخطط لتفعيل إمكانية الزيادة تلقائيًا في إصدار مستقبلي وثابت. b/112110217
  • توسيع التوقّعات: تمت إضافة خيار برنامج تجميع تجريبي جديد room.expandProjection يؤدي إلى إعادة كتابة طلب بحث باستخدام إسقاط نجمة لكي يحتوي فقط على الأعمدة في النوع المعروض POJO. على سبيل المثال، بالنسبة إلى طريقة DAO باستخدام @Query("SELECT * FROM Song") التي تعرض طلب شراء (POJO) باسم SongIdAndTitle مع حقلَين فقط. بعد ذلك، ستعيد شركة Room كتابة طلب البحث إلى SELECT id, title FROM Song بحيث يتم استرجاع الحدّ الأدنى من مجموعة الأعمدة التي تلبّي نوع الإرجاع. يؤدي ذلك بشكل أساسي إلى إزالة تحذير CURSOR_MISMATCH الذي يظهر عندما يعرض طلب البحث أعمدة إضافية لا تتطابق مع أي حقل في نوع POJO الذي يتم عرضه.

الإصدار 2.2.0-rc01

5 أيلول (سبتمبر) 2019

تم إصدار "androidx.room:room:2.2.0-rc01". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.

ما مِن تغييرات علنية منذ الغرفة 2.2.0-beta01.

الإصدار 2.2.0-beta01

22 آب (أغسطس) 2019

تم إصدار "androidx.room:room-*:2.2.0-beta01". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يتوقّف فيه طلب بحث "تدفق الكوروتين" عن إعادة إرسال قيم جديدة بعد فترة زمنية معيّنة. (b/139175786)
  • تم إصلاح خطأ كان لا يقبل Room رمز تجزئة مخطط قديم أثناء فتح قاعدة بيانات لم تخضع لعملية نقل بيانات منذ الغرفة 1.0، ما تسبّب في تعطُّل وقت التشغيل بسبب مخطط غير صالح. (b/139306173)

الإصدار 2.2.0-alpha02

7 آب (أغسطس) 2019

تم إصدار "androidx.room:room-*:2.2.0-alpha02". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.

الميزات الجديدة

  • تدفق الكوروتينات: @Query يمكن أن تكون طرق DAO الآن من نوع العرض Flow<T>. سيعيد التدفق المعروض مجموعة جديدة من القيم إذا تم إبطال صلاحية جداول الملاحظة في طلب البحث. يعد تعريف دالة DAO بنوع عرض Channel<T> خطأً، وبدلاً من ذلك، يشجعك Room على استخدام Flow ثم استخدام الدوال المجاورة لتحويل Flow إلى Channel. b/130428884
  • توسيع التوقّعات: تمت إضافة خيار برنامج تجميع تجريبي جديد room.expandProjection يؤدي إلى إعادة كتابة طلب بحث باستخدام إسقاط نجمة لكي يحتوي فقط على الأعمدة في النوع المعروض POJO. على سبيل المثال، بالنسبة إلى طريقة DAO باستخدام @Query("SELECT * FROM Song") التي تعرض طلب شراء (POJO) باسم SongIdAndTitle مع حقلَين فقط. بعد ذلك، ستعيد شركة Room كتابة طلب البحث إلى SELECT id, title FROM Song بحيث يتم استرجاع الحدّ الأدنى من مجموعة الأعمدة التي تلبّي نوع الإرجاع. يؤدي ذلك بشكل أساسي إلى إزالة تحذير CURSOR_MISMATCH الذي يظهر عندما يعرض طلب البحث أعمدة إضافية لا تتطابق مع أي حقل في نوع POJO الذي يتم عرضه.
  • onDestructiveMigrate هي واجهة برمجة تطبيقات جديدة لرد الاتصال تمت إضافتها إلى RoomDatabase.Callback في الحالات التي يتم فيها نقل بيانات غرفة بيانات بشكل مدمر. b/79962330

إصلاح الأخطاء

  • تم إصلاح الخطأ المتمثل في إنشاء غرفة لرمز غير صحيح باستخدام طريقة كدالة ضبط الحقل عندما يكون الحقل محميًا. b/136194628
  • تم إصلاح خطأ تسبب في أن يُنشئ نظام غير صالح لخطأ (NPE) في عملية ثانية عند تفعيل إبطال المثيلات المتعددة وتم إنهاء خدمة الإبطال. b/137454915
  • تم إصلاح خطأ عدم تعرّف Room بشكل صحيح على نوع إرجاع دالة التعليق المكتسبة التي تم التعليق عليها باستخدام @RawQuery. b/137878827
  • تم تعديل الرمز الذي تم إنشاؤه لـ @Relation عندما يكون المفتاح المرتبط من النوع BLOB لاستخدام ByteBuffer قابل للمقارنة. b/137881998
  • تم إصلاح الخطأ الذي كان يشكو فيه Room من عدم وجود قيم مجموعة البيانات في POJO التي يتم استخدامها كمعلَمات عناصر جزئية لـ @Insert و@Update و@Delete. b/138664463
  • تم إصلاح الخطأ الذي كان يشكو فيه Room من عدم وجود رموز get وseters لعمود تم تجاهله عبر @Entity عند استخدام فئة الكيان في طرق DAO معينة. b/138238182
  • تم إصلاح خطأ كانت فيه الغرفة لا تحوّل بشكل صحيح وسيطات الربط المُسمّاة إلى وسيطات موضعية تتسبب في استثناء وقت التشغيل عند تنفيذ طلب بحث يحتوي على معلَمات معاد استخدامها. b/137254857

الإصدار 2.2.0-alpha01

10 تموز (يوليو) 2019

الميزات الجديدة

  • قاعدة بيانات تتضمّن حزمًا مسبقًا: تتوفَّر الآن واجهتا برمجة تطبيقات جديدتان في RoomDatabase.Builder لإنشاء RoomDatabase وفقًا لملف قاعدة بيانات تمت تعبئته مسبقًا. تُستخدم السمة createFromAsset() عندما يكون ملف قاعدة البيانات الذي تتم تعبئته تلقائيًا في مجلد "مواد العرض" لحزمة APK، بينما يُستخدم الرمز createFromFile() عندما يكون الملف في موقع عشوائي. وتؤدي استخدامات واجهة برمجة التطبيقات هذه إلى تغيير سلوك عمليات نقل البيانات التخريبية، بحيث تحاول Room أثناء عملية نقل احتياطية إعادة نسخ قاعدة البيانات التي تمت تعبئتها تلقائيًا إن توفّرت، وإلا ستلجأ فقط إلى إسقاط جميع الجداول وإعادة إنشائها. b/62185732
  • القيم التلقائية للمخطط: تحتوي @ColumnInfo الآن على سمة جديدة defaultValue يمكن استخدامها لتحديد القيمة التلقائية لعمود. تُعد القيم التلقائية جزءًا من مخطط قاعدة بيانات وسيتم التحقّق منها أثناء عمليات نقل البيانات في حال تحديدها. b/64088772

    ملاحظة: إذا كان مخطط قاعدة البيانات يحتوي على قيم تلقائية، مثل تلك التي تمت إضافتها عبر ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z، وقرّرت تحديد قيم تلقائية من خلال @ColumnInfo إلى الأعمدة نفسها، قد تحتاج إلى إجراء عملية نقل بيانات للتحقق من صحة القيم التلقائية غير المحتسبة. يُرجى الاطّلاع على صفحة عمليات نقل بيانات الغرف للحصول على مزيد من المعلومات.

  • علاقات كثيرة إلى كثيرة: أصبح لـ @Relation الآن الموقع associateBy الجديد الذي يضم تعليقًا توضيحيًا جديدًا @Junction، ويُستخدَم للإشارة إلى علاقة يجب استيفاؤها من خلال جدول تقاطعات (يُعرف أيضًا باسم جدول الضم). b/69201917
  • العلاقات الأحادية: تم إلغاء القيد المفروض على حقول POJO التي تم وضع تعليقات توضيحية عليها بالرمز @Relation لتكون من النوع List أو Set، ما سمح فعليًا بتمثيل العلاقات الأحادية القيمة.b/62905145
  • الكيان المستهدف: تحتوي الآن تعليقات DAO التوضيحية @Insert و@Update و@Delete على خاصية جديدة targetEntity تسمح بتحديد الجدول المستهدف الذي من المفترض أن تتّخذ طريقة DAO عملاً عليه. ويسمح هذا بأن تكون معلمات طرق DAO هذه عناصر POJO عشوائية سيتم تفسيرها على أنها كيانات جزئية. عمليًا، يتيح ذلك عمليات الإدراج والحذف والتحديثات الجزئية. b/127549506
  • معالِج التعليقات التوضيحية الإضافية في Gradle: أصبحت Room الآن معالجًا للتعليقات التوضيحية من Gradle ويمكن تفعيل ميزة زيادة التعليقات من خلال خيار المعالج room.incremental. يُرجى الاطّلاع على خيارات أداة تحويل الغرف للحصول على مزيد من المعلومات. إذا واجهت أي مشاكل، يُرجى الإبلاغ عن خطأ هنا. ونحن نخطط لتفعيل إمكانية الزيادة تلقائيًا في إصدار مستقبلي وثابت. b/112110217

إصلاح الأخطاء

  • لن تنشر الغرفة EmptySetResultException بعد ذلك إلى معالج الأخطاء العام عند التخلص من دفق Rx لطلب بحث قبل اكتماله.b/130257475
  • تم إصلاح الخطأ المتمثل في عرض Room لرسالة خطأ غير صحيحة عندما لا يكون لدالة DAO التعليق التوضيحية التي تم التعليق عليها باستخدام @RawQuery نوع عرض. b/134303897
  • لن تنشئ Room محوّلات DAO بأنواع أوّلية. b/135747255

الإصدار 2.1.0

الإصدار 2.1.0

13 حزيران (يونيو) 2019

تم إلغاء حجز الغرفة 2.1.0 بدون أي تغييرات من 2.1.0-rc01. يمكن الاطّلاع هنا على الالتزامات المضمَّنة في الإصدار.

تغييرات مهمة منذ الإصدار 2.0.0

  • FTS: تتيح الغرفة الآن للكيانات التي تحتوي على جدول ربط FTS3 أو FTS4. أصبح بالإمكان الآن إضافة تعليقات توضيحية إلى الصفوف التي أُضيفت تعليقات توضيحية باستخدام @Entity باستخدام @Fts3 أو @Fts4 للإعلان عن صف باستخدام جدول بحث يتضمّن نصًا كاملاً للتعيين. تتوفّر خيارات FTS لمزيد من التخصيص من خلال طرق التعليق التوضيحي.
  • الملفات الشخصية: تتيح الغرفة الآن الإعلان عن فئة كطلب بحث مخزَّن، وهو ما يُعرف أيضًا باسم طريقة عرض، باستخدام التعليق التوضيحي @DatabaseView.
  • الإجراءات الروتينية: يمكن الآن أن تكون طرق DAO تعليق الدوال. عليك تضمين room-ktx في العناصر الاعتمادية للاستفادة من هذه الوظيفة. توفر أداة ktx أيضًا دالة الإضافة RoomDatabase.withTransaction لإجراء معاملات قاعدة البيانات داخل الكوروتين.
  • القيمة التلقائية: تتيح الغرفة الآن الإعلان عن فئات AutoValue التي تتضمن تعليقات توضيحية ككيانات وعمليات POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة @PrimaryKey و@ColumnInfo و@Embedded و@Relation في الطرق المجرّدة للفئة التي تمت إضافة تعليقات توضيحية إليها. يُرجى العلم أنّه يجب أيضًا أن تكون هذه التعليقات التوضيحية مصاحبة @CopyAnnotations لكي تفهمها جيدًا.
  • دعم إضافي غير متزامن: إن طرق DAO التي تم التعليق عليها باستخدام @Insert أو @Delete أو @Update، إلى جانب عبارات @Query التي تحتوي على عبارات INSERT أو DELETE أو UPDATE، تتوافق الآن مع أنواع عرض Rx Completable وSingle وMaybe ونوع العرض ListenableFuture من Guava، ويمكن أيضًا أن تكون دوال تعليق.
  • enableMultiInstanceInvalidation هي واجهة برمجة تطبيقات جديدة في RoomDatabase.Builder لتفعيل الإلغاء عبر مثيلات متعددة من RoomDatabase باستخدام ملف قاعدة البيانات نفسه.
  • fallbackToDestructiveMigrationOnDowngrade هي واجهة برمجة تطبيقات جديدة في RoomDatabase.Builder لإعادة إنشاء قاعدة البيانات تلقائيًا في حال حدوث عملية الرجوع إلى إصدار سابق.
  • ignoredColumns هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي @Entity، ويمكن استخدامها لسرد الحقول التي تم تجاهلها حسب الاسم.
  • ستستخدم الغرفة الآن الدالة الإنشائية الأساسية للغة Kotlin بشكل صحيح في فئات البيانات، مع تجنُّب الحاجة إلى تعريف الخصائص بصفتها vars.

الإصدار 2.1.0-rc01

29 أيار (مايو) 2019

إصلاح الأخطاء

  • تم إصلاح خطأ إعداد الغرفة الذي قد يحدث بسبب ضبط temp_store الذي تم إعداده مسبقًا. b/132602198
  • تم إصلاح تحذير استخدام الاقتباس المزدوج للمستخدمين الذين لديهم الإصدار 3.27.0 من SQLite والإصدارات الأحدث. b/131712640
  • تم إصلاح الخطأ الذي يتسبّب فيه حدث إبطال حالة الأحرف في حدوث تعطُّل عند حدوث عدة عمليات تحقّق من إبطال التوازي. b/133457594

الإصدار 2.1.0-beta01

7 أيار (مايو) 2019

تم إصدار androidx.room 2.1.0-beta01 بدون أي تغييرات من الإصدار 2.1.0-alpha07. يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.

الإصدار 2.1.0-alpha07

25 نيسان (أبريل) 2019

التغييرات في واجهات برمجة التطبيقات أو السلوك

  • تم تغيير دالة الامتداد RoomDatabase.withTransaction بحيث لا تأخذ مجموعة وظائف عندما يكون CoroutineScope كمستلم. يمنع ذلك تخطّي برنامج تضمين coroutineScope { } الإضافي المطلوب لتشغيل العناصر في حظر المعاملات بشكل متزامن.

إصلاح الأخطاء

  • تم إصلاح الخطأ المتمثل في عدم مطابقة Room لدالة TypeAdapter لدالة Kotlin DAO التي تحتوي على مَعلمة من نوع المجموعة. b/122066791

الإصدار 2.1.0-alpha06

22 آذار (مارس) 2019

التغييرات في واجهات برمجة التطبيقات أو السلوك

  • أصبحت طلبات البحث عن المعاملات غير المتزامنة الآن تسلسلية، لذلك لن تستخدم Room أكثر من سلسلة تعليمات واحدة لتنفيذ معاملات قاعدة البيانات. تمت إضافة RoomDatabase.Builder.setTransactionExecutor(Executor) للسماح بإعداد جهة التنفيذ ليتم استخدامها في المعاملات.
  • لن يدمج RoomDatabase.runInTransaction(Callable) الاستثناءات المحدَّدة في RuntimeExceptions. b/128623748

إصلاح الأخطاء

  • تم إصلاح خطأ سيتوقف فيه أداة تتبع الإبطال عن مراقبة جدول المحتوى إذا تمت إضافة مراقبين لكل من جدول المحتوى وجدول FTS للمحتوى الخارجي. b/128508917
  • تم تحديث قواعد SQLite في الغرفة لتتناسب مع الإصدار 3.24.0 من SQLite. b/110883668

الإصدار 2.1.0-alpha05

13 آذار (مارس) 2019

الميزات الجديدة

  • تسمح لك دالة الإضافة RoomDatabase.withTransaction بإجراء معاملات قاعدة البيانات بأمان داخل الكوروتين. تتوفّر إضافات الغرف، إلى جانب إتاحة الكوروتيين، في عنصر room-ktx.
  • يمكن الآن أن تكون طرق DAO غير المجردة التي تم التعليق عليها بـ @Transaction دوال تعليق. b/120241587

التغييرات في واجهات برمجة التطبيقات أو السلوك

  • تمت إعادة تسمية العنصر room-coroutines إلى room-ktx بعد تسمية العناصر الأخرى المتوفّرة في Androidx.
  • تم إيقاف واجهات برمجة التطبيقات beginTransaction وsetTransactionSuccessful وendTransaction في RoomDatabase لصالح runInTransaction ودالة الإضافة room-ktx withTransaction.

إصلاح الأخطاء

  • إصلاح خطأ كان يتم فيه تجاهل وسيطات أداة إنشاء الرموز المميّزة إذا كانت أداة إنشاء الرموز المميّزة بسيطة. b/125427014
  • تم إصلاح خطأ يتسبّب في عدم تمكّن Room من التعرّف بشكل صحيح على دوال التعليق التي تستخدم المعلمات التي يكون نوعها فئة داخلية. b/123767877
  • تم إصلاح خطأ كان يتسبب في تأجيل طريقة DAO @Query باستخدام عبارات INSERT أو UPDATE أو DELETE في إعداد الطلب في سلسلة التعليمات الرئيسية. b/123695593
  • تم إصلاح أخطاء مختلفة حيث ينشئ Room رمزًا غير صحيح لبعض دوال التعليق. b/123466702 وb/123457323
  • تم إصلاح خطأ يتمثّل في عدم منع الاستخدام المتوقف للطرق بشكل صحيح في الرمز الذي تم إنشاؤه. b/117602586
  • تم تحديث تبعية الغرفة لنظام androidx.sqlite إلى الإصدار 1.0.2، والتي تحتوي على إصلاحات للتعامل مع قواعد البيانات التالفة بشكل صحيح. b/124476912

المشاكل المعروفة

  • تعتمد الغرفة 2.1.0-alpha05 على عناصر kotlinx-metadata-jvm غير المتاحة حاليًا في Maven Central (KT-27991). ويمكن حل هذه التبعية عن طريق إضافة maven { url "https://kotlin.bintray.com/kotlinx/" } إلى مستودعات مشروعك.

الإصدار 2.1.0-alpha04

25 كانون الثاني (يناير) 2019

الميزات الجديدة

  • يمكن الآن لطرق DAO التي تمت إضافة تعليقات توضيحية إليها باستخدام @Query والتي تحتوي على عبارات INSERT أو UPDATE أو DELETE عرض أنواع غير متزامنة Single وMayble وCompletable وListenableFuture. بالإضافة إلى ذلك، يمكن أن تكون دوالّ تعليق الدوال. b/120227284

التغييرات في واجهات برمجة التطبيقات أو السلوك

  • ستعرض Room رسالة خطأ الآن إذا كانت طريقة DAO غير المجدية التي تم التعليق عليها باستخدام @Transaction تعرض نوعًا غير متزامن، مثل Single أو Mayble أو Completable أو LiveData أو ListenableFuture. ولأنّ المعاملات تقتصر على سلسلة تعليمات، من المستحيل حاليًا أن تبدأ الغرفة معاملة وينهيها حول دالة قد تُجري طلبات بحث في سلاسل محادثات مختلفة. b/120109336
  • إنّ الترميزَين OnConflictStrategy.FAIL وOnConflictStrategy.ROLLBACK هما @Deprecated بسبب عدم عملهما على النحو المطلوب مع روابط SQLite الحالية في Android. b/117266738

إصلاح الأخطاء

  • تم إصلاح خطأ لا تستخدم غرفة فيه محوِّل Typeconversion من نوع الإرجاع بشكل صحيح إذا كانت طريقة DAO دالة تعليق. b/122988159
  • تم إصلاح الخطأ المتمثل في تحديد Room بشكل خاطئ لوظائف التعليق الموروثة على أنها غير معلقة. b/122902595
  • تم إصلاح خطأ كانت فيه غرفة ستنشئ رمزًا غير صحيح عندما يكون الحقل @Embedded في أحد الصفوف الرئيسية ويتم استخدامه في صفوف فرعية متعددة. b/121099048
  • تم إصلاح مشكلة توقُّف قاعدة البيانات عند استدعاء دوال تعليق DAO بين beginTransaction() وendTransaction(). b/120854786

الإصدار 2.1.0-alpha03

4 كانون الأول (ديسمبر) 2018

تغييرات واجهة برمجة التطبيقات

  • أصبحت قيمة FTS tokenizer في @Fts3/@Fts4 الآن تتخذ سلسلة بدلاً من Enum. يسمح هذا الإجراء باستخدام برامج الرموز المميّزة المخصّصة بواسطة Room. لا تزال الرموز المميّزة المضمّنة محدّدة في FtsOptions كثوابت السلسلة. b/119234881

الميزات الجديدة

  • الإجراءات الروتينية: يمكن الآن أن تكون طرق DAO تعليق الدوال. لإتاحة تعليق الدوال في الغرفة، تم إصدار عنصر جديد، room-coroutines. b/69474692
  • طرق DAO التي تم التعليق عليها باستخدام @Insert أو @Delete أو @Update تتيح الآن استخدام ListenableFuture كنوع عرض. b/119418331

إصلاح الأخطاء

  • تم إصلاح خطأ كانت فيه محاولة Room عن طريق الخطأ للعثور على دالة إنشائية تحتوي على أعمدة في السمة ignoredColumns في @Entity. b/119830714
  • تم إصلاح خطأ كان لا يُدرج فيه Room علامة على معلَمات طريقة DAO كنهائية في عملية التنفيذ التي يتم إنشاؤها. b/118015483
  • تم إصلاح الخطأ المتمثل في تعطل معالج الغرفة عند الإبلاغ عن خطأ في طلب بحث يحتوي على رموز خاصة. b/119520136
  • تم إصلاح خطأ كان يرفض غرفة ترفض عمليات تنفيذ Collection المختلفة كوسيطات لتعبير IN. b/119884035
  • تم إصلاح الخطأ المتمثل في حصول بيانات LiveData التي يتم إرجاعها من Room على بيانات غير صالحة تم جمعها عندما تتم ملاحظتها على نحو دائم، ما أدى إلى توقفها عن إرسال بيانات جديدة. b/74477406
  • تم تحديث قفل RoomDatabase للتقليل من تزايد الطلب على دالة الاستبعاد المتبادل. b/117900450

الإصدار 2.1.0-alpha02

30 تشرين الأول (أكتوبر) 2018

الميزات الجديدة

  • تمت إضافة إمكانية الإشارة إلى @DatabaseView في @Relation. b/117680932

إصلاح الأخطاء

  • تم إصلاح الخطأ المتمثل في إجراء غرفة لإدخال/إخراج القرص في سلسلة التعليمات الرئيسية عند الاشتراك والتخلص من نوع إرجاع Rx. b/117201279
  • تم إصلاح خطأ تعذُّر العثور على محوِّل نوع مناسب لحقل في فئة كيان Kotlin. b/111404868
  • تم إصلاح خطأ يتمثّل في إنشاء غرفة رمز غير صحيح لتطبيق واجهة DAO تحتوي على طريقة تلقائية بلغة Kotlin لا تحتوي على أي وسيطات. b/117527454
  • تم تحديث المحلل اللغوي لقواعد SQLite في الغرفة، مع حل مشكلة في الأداء قد تؤدي إلى أوقات إصدار طويلة. b/117401230

الإصدار 2.1.0-alpha01

8 تشرين الأول (أكتوبر) 2018

الميزات الجديدة

  • FTS: تتيح الغرفة الآن الكيانات التي تحتوي على جدول FTS3 أو FTS4 للتعيين. يمكن الآن إضافة تعليقات توضيحية إلى الصفوف التي أُضيفت تعليقات توضيحية باستخدام @Entity باستخدام @Fts3 أو @Fts4 للإعلان عن صف يتضمّن جدول بحث يتضمّن النص الكامل للتعيين. تتوفّر خيارات FTS لمزيد من التخصيص من خلال طرق التعليق التوضيحي. b/62356416
  • طرق العرض: تتيح الغرفة الآن الإعلان عن فئة كطلب بحث مخزَّن، وهو ما يُعرف أيضًا باسم طريقة عرض باستخدام التعليق التوضيحي @DatabaseView. b/67033276
  • القيمة التلقائية: تتيح الغرفة الآن الإعلان عن الفئات التي تتضمّن تعليقات توضيحية ضمن القيمة التلقائية ككيانات وعناصر POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة @PrimaryKey و@ColumnInfo و@Embedded و@Relation في الطرق المجرّدة للفئة التي تمت إضافة تعليقات توضيحية إليها. يجب أن تكون هذه التعليقات التوضيحية مصحوبةً بـ @CopyAnnotations لكي تفهمها الغرفة بشكل صحيح. b/62408420
  • دعم إضافي لأنواع إرجاع Rx: أصبحت طرق DAO التي تم التعليق عليها باستخدام @Insert أو @Delete أو @Update تتوافق الآن مع أنواع عرض Rx Completable و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 وستتم إزالتهما في الإصدار الرئيسي التالي من الغرفة. b/76109329

إصلاح الأخطاء

  • تم إصلاح مشكلتين حيث لا يتم استرداد Room بشكل صحيح من قاعدة بيانات تالفة أو عملية نقل بيانات غير صالحة أثناء التهيئة. b/111504749 وb/111519144
  • ستستخدم الغرفة الآن الدالة الإنشائية الأساسية للغة Kotlin بشكلٍ صحيح في فئات البيانات لتجنُّب الحاجة إلى تعريف الحقول بأنّها vars. b/105769985

الإصدار 2.0.0

الإصدار 2.0.0

1 تشرين الأول (أكتوبر) 2018

تم إصدار androidx.room 2.0.0 بدون أي تغييرات من الإصدار 2.0.0-rc01.

الإصدار 2.0.0-rc01

20 أيلول (سبتمبر) 2018

تم إصدار androidx.room 2.0.0-rc01 بدون أي تغييرات من الإصدار 2.0.0 إلى الإصدار التجريبي 01.

الإصدار 2.0.0-beta01

2 تموز (يوليو) 2018

التغييرات في واجهات برمجة التطبيقات أو السلوك

  • تمت إضافة RoomDatabase.Builder.setQueryExecutor() للسماح بتخصيص أماكن تنفيذ طلبات البحث.
  • تمت إضافة دعم RxJava2 Observable.
  • عمليات تنفيذ قاعدة البيانات وقواعد البيانات التي تم إنشاؤها أصبحت نهائية الآن

إصلاح الأخطاء

  • تحديد اسم الفئة/الحقل في الخطأ "لا يمكن العثور على قيمة للحقل" b/73334503
  • إصلاح توافق RoomOpenHelper مع الأنظمة القديمة مع الإصدارات القديمة من Room b/110197391

التبعيات السابقة لنظام التشغيل AndroidX

بالنسبة إلى الإصدارات السابقة لنظام التشغيل AndroidX من Room، عليك تضمين هذه التبعيات:

dependencies {
    def room_version = "1.1.1"

    implementation "android.arch.persistence.room:runtime:$room_version"
    annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

    // optional - RxJava support for Room
    implementation "android.arch.persistence.room:rxjava2:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "android.arch.persistence.room:guava:$room_version"

    // Test helpers
    testImplementation "android.arch.persistence.room:testing:$room_version"
}

الإصدار 1.1.1

الإصدار 1.1.1

19 حزيران (يونيو) 2018

الغرفة 1.1.1 مماثلة للغرفة 1.1.1-rc1.

الإصدار 1.1.1-rc1

16 أيار (مايو) 2018 ننصحك بشدة باستخدام الغرفة 1.1.1-rc1 بدلاً من 1.1.0 في حال كنت تستخدم عمليات نقل البيانات.

تم إصلاح الخطأ المتمثل في عدم تعامل الغرفة مع تهيئة ما بعد نقل البيانات بشكل صحيح b/79362399

الإصدار 1.1.0

الإصدار 1.1.0-beta3

19 نيسان (أبريل) 2018

إصلاح الأخطاء

  • إصلاح خطأ التحويل البرمجي عندما يشير طلب POJO في Kotlin إلى كيان علاقي تم تحديده في Java b/78199923

الإصدار 1.1.0-تجريبي2

5 نيسان (أبريل) 2018

إصلاح الأخطاء

  • تم إصلاح خطأ فادح في عمليات تنفيذ Rx Single وMaybe في الغرفة حيث قد يؤدي إلى إعادة تدوير طلب البحث مسبقًا، مما يتسبب في حدوث مشاكل إذا أضفت أكثر من مراقب واحد إلى الأخطاء Single أو Maybe المعروضة. b/76031240

  • لن تضيف ميزة [RoomDatabase.clearAllTables][ref-clearAllTables] VACUUM قاعدة البيانات إذا تم استدعائها داخل معاملة. b/77235565

الإصدار 1.1.0-تجريبي1

21 آذار (مارس) 2018

تغييرات واجهة برمجة التطبيقات

  • استنادًا إلى الملاحظات والآراء بشأن مراجعة واجهة برمجة التطبيقات، لم يعُد @RawQuery يقبل تمرير String باعتباره مَعلمة طلب البحث. تحتاج إلى استخدام [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (راجع [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] لإنشاء مثيل [SupportSQLiteQuery][ref-SupportSQLiteQuery] باستخدام الوسيطة بسهولة).
  • أصبحت طريقة RoomDatabase.Builder [fallbackToDestructive MigrationFrom][ref-fallbackToDestructive MigrationFrom] تقبل الآن vararg int بدلاً من vararg Integer.

إصلاح الأخطاء

  • تحاول الآن [RoomDatabase.clearAllTables][ref-clearAllTables] إعادة المسافة إلى نظام التشغيل من خلال ضبط نقطة تفتيش WAL VACUUMوإضافة قاعدة البيانات.
  • [@RawQuery] يقبل [ref-RawQuery] الآن أي حرف Pojo للسمة observedEntities طالما أنّ Pojo يشير إلى كيان واحد أو أكثر من خلال حقول Embedded أو Relation. b/74041772
  • الانتقال من صفحة إلى أخرى: أصبح تنفيذ DataSource في الغرفة يعالج بشكل صحيح التبعيات متعددة الجداول (مثل العلاقات وضمات). في السابق، كانت لا تنجح في ظهور نتائج جديدة، أو قد تفشل في تجميعها. b/74128314

الإصدار 1.1.0-alpha1

22 كانون الثاني (يناير) 2018

الميزات الجديدة

  • RawQuery: تسمح واجهة برمجة التطبيقات الجديدة هذه لطرق @Dao بتلقّي لغة الاستعلامات البنيوية (SQL) كمَعلمة طلب بحث b/62103290، b/71458963
  • fallBackToDestructiveMigrationsFrom: تتيح واجهة برمجة التطبيقات الجديدة هذه في RoomDatabase.Builder إمكانية تحكُّم أكثر دقة في عمليات بدء عمليات نقل البيانات التخريبية لإصدارات المخطط (مقارنةً بـ fallbackToDestructive Migration) b/64989640
  • لا تتوافق غرفة الآن إلا مع واجهات برمجة التطبيقات الأحدث (الإصدار alpha-4 والإصدارات الأحدث) التي لن تتيح استخدام الإصدار LivePagedListProvider المتوقّف نهائيًا. لاستخدام الإصدار الأولي الجديد من الغرفة، عليك استخدام التقسيم على صفحات alpha-4 أو الإصدارات الأحدث، والتبديل من LivePagedListProvider إلى LivePagedListBuilder إذا لم يسبق لك ذلك.

إصلاح الأخطاء

  • توافق محسَّن مع أنواع Kotlin Kapt. b/69164099
  • لا يؤدي ترتيب الحقول إلى إلغاء صلاحية المخطط بعد الآن. b/64290754