Room

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

إعلان التبعيات

لإضافة تبعية إلى الغرفة، يجب إضافة مستودع 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.

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

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

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

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

room.schemaLocation directory
تفعيل تصدير مخططات قواعد البيانات إلى ملفات JSON في الدليل المحدد. يمكنك الاطّلاع على عمليات نقل بيانات الغرف لمزيد من المعلومات.
room.incremental boolean
يفعِّل هذا الإعداد معالج التعليقات التوضيحية المتزايدة في Gradle. والقيمة التلقائية هي true.
room.generateKotlin boolean
عليك إنشاء ملفات مصدر Kotlin بدلاً من Java. تتطلّب هذه الميزة "نظام مشاركة المعلومات (KSP)". القيمة التلقائية هي false. لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات الإصدار 2.6.0.

استخدام المكوّن الإضافي Room Gradle

باستخدام إصدار الغرفة 2.6.0 والإصدارات الأحدث، يمكنك استخدام مكوّن Gradle الإضافي للغرفة لضبط خيارات برنامج التحويل البرمجي للغرفة. يهيئ المكوّن الإضافي المشروع بحيث يتم تكوين المخططات (التي تكون أحد مخرجات مهام التجميع ويتم استخدامها من أجل عمليات الترحيل التلقائية) بشكل صحيح بحيث تحتوي على إصدارات قابلة لإعادة الإنتاج وقابلة للتخزين المؤقت.

لإضافة المكوّن الإضافي، حدِّد المكوّن الإضافي وإصداره في ملف إنشاء Gradle ذي المستوى الأعلى.

رائع

plugins {
    id 'androidx.room' version "$room_version" apply false
}

Kotlin

plugins {
    id("androidx.room") version "$room_version" apply false
}

في ملف تصميم Gradle على مستوى الوحدة، طبِّق المكوّن الإضافي واستخدِم الإضافة room.

رائع

plugins {
    id 'androidx.room'
}

android {
    ...
    room {
        schemaDirectory "$projectDir/schemas"
    }
}

Kotlin

plugins {
    id("androidx.room")
}

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

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

لا يمكن ضبط بعض الخيارات في جميع إصدارات مكوّن Gradle الإضافي، على الرغم من توفُّرها في برنامج تجميع الغرف. يعرض الجدول أدناه كل خيار ويعرض إصدارًا من المكوّن الإضافي لغرفة Gradle للغرف الذي أتاح إمكانية ضبط هذا الخيار باستخدام الإضافة room. إذا كان الإصدار أقدم من الإصدار أو إذا كان هذا الخيار غير متاح بعد، يمكنك استخدام خيارات معالج التعليقات التوضيحية بدلاً من ذلك.

الخيار منذ الإصدار
room.schemaLocation (مطلوب) 2.6.0
room.incremental -
room.generateKotlin -

استخدام خيارات معالج التعليقات التوضيحية

إذا كنت لا تستخدم مكوّن Room Gradle الإضافي، أو إذا كان الخيار الذي تريده غير متوافق مع الإصدار الذي تستخدمه، يمكنك إعداد Room باستخدام خيارات معالج التعليقات التوضيحية، كما هو موضّح في إضافة تبعيات الإصدار. وتعتمد كيفية تحديدك لخيارات التعليقات التوضيحية على ما إذا كنت تستخدم KSP أو KAPT للغرف.

رائع

// For KSP
ksp {
    arg("option_name", "option_value")
    // other otions...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += [
                    "option_name":"option_value",
                    // other options...
                    ]
            }
        }
    }
}

Kotlin

// For KSP
ksp {
    arg("option_name", "option_value")
    // other options...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf(
                    "option_name" to "option_value",
                    // other options...
                )
            }
        }
    }
}

ولأنّ room.schemaLocation هو دليل وليس نوعًا أساسيًا، من الضروري استخدام CommandLineArgumentsProvider عند إضافة هذا الخيار حتى يعرف Gradle عن هذا الدليل عند إجراء عمليات تحقّق حديثة. تعرض عملية نقل قاعدة بيانات الغرفة تنفيذًا كاملاً لـ CommandLineArgumentsProvider الذي يوفر موقع المخطط.

ملاحظات

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

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

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

الإصدار 2.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) متاحًا الآن في ميزة KSP للغرفة. (4297ec0). لتفعيل Kotlin CodeGen في Room، عليك إضافة اسم خيار 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\>

  • تمت إضافة العنصر الجديد للمكوّن الإضافي Room Gradle الإضافي إلى Room برقم التعريف androidx.room، والذي يعمل على حل العديد من المشكلات الحالية في Room المتعلقة بالحصول على مدخلات ومخرجات من المخططات من خلال خيارات معالج تعليقات Gradle التوضيحية. لمزيد من التفاصيل، يُرجى الرجوع إلى ملاحظات إصدار الغرفة 2.6.0-alpha02.
  • يمكن الآن توفير فئات القيمة في "كيانات الغرفة" في وسيط عرض الإعلان. (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 هذه الالتزامات.

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

  • أصبحت أنواع إرجاع الخريطة المتداخلة في دوال 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 على هذه الالتزامات.

المكوّن الإضافي لغرفة Gradle الإضافية

يحتوي هذا الإصدار الجديد على عنصر جديد للمكوّن الإضافي Room Gradle الذي يشتمِل على المُعرّف androidx.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، عليك إضافة اسم خيار 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. علاوة على ذلك، تم تحويل بعض طرق getter إلى خصائص تتطلب بنية الوصول إلى الخاصية في ملفات 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 هذه الالتزامات.

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

  • يجب حصر الإصدار 16 من واجهة برمجة التطبيقات على الإصدار الأدنى الذي يتوافق مع @Upsert. ويرجع ذلك إلى عدم القدرة على تحديد تعارض أحد قيود المفتاح الأساسي في واجهات برمجة التطبيقات القديمة. (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،6/9066)

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

  • تم تحويل كل room-runtime من لغة Java إلى لغة Kotlin. (If2069 وb/206859668)،(Ie4b55، b/206859668)، (I697ee، b/206859668)، (I96c25، 6085b/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)
  • تمت إضافة واجهة برمجة التطبيقات لقفل وعمليات استخدام متعددة العمليات على مستوى *FrameSQLite* لحماية إنشاء قاعدة بيانات متعددة العمليات ونقلها للمرة الأولى. (Ied267، b/193182592)

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

  • تمت إضافة الدعم للخصائص الداخلية في مصادر Kotlin. هذا تغيير طفيف في السلوك في Room حيث سيتم استخدام اسم المصدر للدوال مع مطابقتها مع الخصائص مثل getters/setters (في السابق، كان يستخدم اسم JVM للدالة يختلف عن الدوالّ/الخصائص الداخلية). إذا كنت تستخدم تعليقات @JvmName التوضيحية المخصصة لمطابقة getter/setters مع الملكية الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التحديث (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 هذه الالتزامات.

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

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

الإصدار 2.4.1

الإصدار 2.4.1

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

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

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

  • تمت إضافة الدعم للخصائص الداخلية في مصادر Kotlin. هذا تغيير طفيف في السلوك في Room حيث سيتم استخدام اسم المصدر للدوال مع مطابقتها مع الخصائص مثل getters/setters (في السابق، كان يستخدم اسم JVM للدالة يختلف عن الدوالّ/الخصائص الداخلية). إذا كنت تستخدم تعليقات @JvmName التوضيحية المخصصة لمطابقة getter/setters مع الملكية الخاصة، يُرجى التحقّق جيدًا من الرمز الذي تم إنشاؤه بعد التحديث (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)

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

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

الإصدار 2.4.0-beta01

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

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

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

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

الإصدار 2.4.0-alpha05

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

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

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

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

  • تمت إضافة خاصية جديدة إلى التعليق التوضيحي 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" أداة مطلوبة عند استخدام Paging3 مع Room. (Ieaffe)

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

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

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

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

الإصدار 2.4.0-alpha04

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

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

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

  • تتيح الغرفة الآن استخدام طرق @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 التي تم إنشاؤها من خلال Room، وتحلّ محلّها واجهة برمجة تطبيقات Paging 3.0. تحلِّل طريقة تنفيذ PagingSource المفاتيح بشكل مختلف، لذا فإن أي مفتاح يتم توفيره يدويًا في PagingSource (مصدر الدفع) الخاص بالغرفة سيحتاج إلى مراعاة هذا التغيير في السلوك، بما في ذلك firstKey الذي تم تمريره عبر الدالة الإنشائية لجهاز النداء. سيبدأ تحميل الصفحات من Key بحيث يكون Key أول عنصر تم تحميله. وينحرف ذلك عن السلوك الحالي حيث يتم التعامل مع LoadParams.Refresh.Key كموضع تمرير المستخدِم وتحميل العناصر قبل المفتاح وبعده.

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

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

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

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

الإصدار 2.4.0-alpha03

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

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

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

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

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

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

  • تم إصلاح مشكلة عدم ظهور خطأ Room عندما يكون نوع العرض لدالة @Transaction عبارة عن مسار (I56ddd، b/190075899)

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

التعديلات على المهام التابعة للتبعية

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

الإصدار 2.4.0-alpha02

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

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

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

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

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

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

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

  • يمكنك حل مشكلة في JournalMode.TRUNCATE للغرفة حيث يتم أحيانًا استدعاء الإجراء "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، استخدِم التعليق التوضيحي الجديد @OfferdTypeConverter.
  • دعم RxJava3: تتوافق الغرفة الآن مع أنواع RxJava3. على غرار RxJava2، يمكنك الإعلان عن طرق DAO التي يكون نوع الإرجاع الخاص بها قابلاً للانسياب، وفردي، وربما، ومتكامل. بالإضافة إلى ذلك، يتوفّر عنصر androidx.room:room-rxjava3 جديد لدعم RxJava3.
  • التوافق مع الإصدار 3.0 من AMP: سيدعم تطبيق Room الآن إنشاء عمليات تنفيذ لطُرق @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)

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

  • تم إصلاح الخطأ الذي كان يؤدي إلى ظهور خطأ ANR عند إنشاء PagingSource في سلسلة التعليمات الرئيسية. (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، ما يقلّل بشكل كبير من وقت الإنشاء.

    لاستخدام 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 على هذه الالتزامات.

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

  • توفِّر الغرفة الآن واجهة برمجة تطبيقات عامة لمعاودة الاتصال 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 على فئة أساسية تكون جنسها العام هي عناصر أولية في JavaScript. (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)

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

  • يُرجى التعديل على وثائق TypeConverters لتوضيح أنّه لا يمكن استخدام TypeConverters إلا لتحويل الأعمدة / الحقول وليس لتحويل الصفوف. (I07c56، b/77307836)

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

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

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

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

  • إصلاح المشاكل المتعلّقة بالأحرف اللاتينية الكبيرة والصغيرة المتعلقة باللغة التركية (5746e3b/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 من نقطة الاتصال: سيدعم تطبيق Room الآن إنشاء عمليات تنفيذ @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@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 هذه الالتزامات.

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

  • تم إصلاح المشكلة المتمثلة في إيقاف 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)
  • تم إصلاح مشكلة إنشاء Room لرمز غير صحيح عندما تتضمّن واجهة DAO في Kotlin دالة ملموسة. (b/146825845)

الإصدار 2.2.3

الإصدار 2.2.3

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

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

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

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

الإصدار 2.2.2

الإصدار 2.2.2

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

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

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

  • تم إصلاح خطأ كان يؤدي جمع علاقة فردية مع أكثر من 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() عندما يكون الملف في موقع عشوائي. وتؤدي استخدامات واجهة برمجة التطبيقات هذه إلى تغيير سلوك عمليات النقل المدمرة، إذ تحاول غرفة أثناء عملية نقل البيانات الاحتياطية إعادة نسخ قاعدة البيانات التي تمت تعبئتها تلقائيًا إن توفّرت، وإلا ستتراجع فقط عن إسقاط جميع الجداول وإعادة إنشائها. 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
  • تدفق الكوروتينات: يمكن أن تكون الآن طرق DAO @Query من النوع المعروض Flow<T>. سيعيد التدفق الذي يتم إرجاعه مجموعة جديدة من القيم إذا تم إبطال صلاحية جداول الملاحظة في طلب البحث. إعلان دالة DAO مع نوع الرجوع Channel<T> هو خطأ، وبدلاً من ذلك، تشجعك Room على استخدام Flow ثم استخدام الدوال المجاورة لتحويل Flow إلى Channel. b/130428884
  • معالج التعليقات التوضيحية التزايدية في Gradle: أصبحت الغرفة الآن معالجًا لعزل التعليقات التوضيحية وفقًا لـ 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". يمكنك الاطّلاع هنا على العمولات التي تم تضمينها في هذا الإصدار.

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

  • تدفق الكوروتينات: يمكن أن تكون الآن طرق DAO @Query من النوع المعروض 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
  • تم إصلاح خطأ كان يتسبب في أن تطرح أداة AuthenticationTracker اسم NPE في عملية ثانية عند تفعيل الإبطال متعدد المثيلات وإنهاء خدمة الإبطال. b/137454915
  • تم إصلاح خطأ يتمثّل في عدم تعرّف Room بشكل صحيح على نوع إرجاع دالة تعليق مُكتسَبة تم تضمينها في تعليقات توضيحية باستخدام @RawQuery. b/137878827
  • تم تحديث الرمز الذي تم إنشاؤه لـ @Relation عندما يكون المفتاح ذو الصلة من نوع BLOB لاستخدام ByteBuffer مشابه. b/137881998
  • تم إصلاح خطأ يشتكي فيه غرفة Room من عدم وجود قيم ضبط في POJO، ويتم استخدامها كمعلَمات كيانات جزئية لـ @Insert و@Update و@Delete. b/138664463
  • تم إصلاح خطأ يشتكي فيه غرفة Room من عدم وجود علامات اقتباس ودوال لعمود تم تجاهله عبر @Entity عند استخدام فئة الكيان في طرق DAO معينة. b/138238182
  • تم إصلاح خطأ يتمثّل في عدم تحويل Room بشكل صحيح لوسيطات ربط مُسماة إلى وسيطات موضعية تتسبب في استثناء وقت التشغيل عند تنفيذ طلب بحث يتضمّن معلَمات مُعاد استخدامها. b/137254857

الإصدار 2.2.0-alpha01

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

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

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

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

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

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

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

الإصدار 2.1.0

الإصدار 2.1.0

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

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

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

  • FTS: أصبحت ميزة Room توفّر الآن الكيانات التي تتضمّن جدول ربط 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 ونوع إرجاع Guava ListenableFuture، ويمكن أيضًا أن تكون دوال تعليق.
  • enableMultiInstanceInvalidation هي واجهة برمجة تطبيقات جديدة في RoomDatabase.Builder لتفعيل الإلغاء في العديد من الحالات من RoomDatabase باستخدام ملف قاعدة البيانات نفسه.
  • "fallbackToDestructiveMigrationOnDowngrade" هي واجهة برمجة تطبيقات جديدة في RoomDatabase.Builder لإعادة إنشاء قاعدة البيانات تلقائيًا في حال حدوث عملية الرجوع إلى إصدار سابق.
  • ignoredColumns هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي @Entity ويمكن استخدامها لإدراج الحقول التي تم تجاهلها حسب الاسم.
  • ستستخدم غرفة Room الآن الدالة الإنشائية الأساسية للغة Kotlin الأساسية في فئات البيانات بشكل صحيح، بدون الحاجة إلى تعريف السمات على أنّها vars.

الإصدار 2.1.0-rc01

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

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

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

الإصدار 2.1.0-beta01

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

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

الإصدار 2.1.0-alpha07

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

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

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

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

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

الإصدار 2.1.0-alpha06

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

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

  • أصبحت استعلامات المعاملات غير المتزامنة الآن تسلسلية بحيث لن تستخدم الغرفة أكثر من سلسلة تعليمات واحدة لتنفيذ معاملات قاعدة البيانات. تمت إضافة 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

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

  • ستعرض الغرفة خطأ الآن إذا كانت طريقة 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
  • تم إصلاح خطأ يتسبّب في إنشاء تطبيق Room لرمز غير صحيح عندما يكون الحقل @Embedded في أحد الصفوف الرئيسية ويتم استخدامه في صفوف فرعية متعددة. b/121099048
  • تم إصلاح مشكلة تؤدي إلى توقف قاعدة البيانات عند استدعاء دوال التعليق بتنسيق DAO بين beginTransaction() وendTransaction(). b/120854786

الإصدار 2.1.0-alpha03

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

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

  • أصبحت قيمة FTS tokenizer في @Fts3/@Fts4 الآن سلسلة بدلاً من تعداد. يسمح هذا الإجراء باستخدام برامج الرموز المميّزة المخصّصة بواسطة 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 من الغرفة عن طريق الخطأ، عندما يتم رصدها بشكل دائم، ما يؤدي إلى توقفها عن إرسال بيانات جديدة. 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 اللغوي الخاص بـ SQLite، لحل مشكلة في الأداء قد تؤدي إلى وقت طويل للإصدار. b/117401230

الإصدار 2.1.0-alpha01

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

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

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

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

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

الإصدار 2.0.0

الإصدار 2.0.0

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

تم إطلاق androidx.room 2.0.0 بدون أي تغييرات من الإصدار 2.0.0 إلى Rrc01.

الإصدار 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.
  • عمليات تنفيذ قاعدة البيانات وقواعد البيانات التي تم إنشاؤها أصبحت نهائية الآن

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

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

اعتماديات ما قبل AndroidX

بالنسبة إلى إصدارات Room التي تسبق AndroidX، يجب تضمين التبعيات التالية:

dependencies {
    def room_version = "1.1.1"

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

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

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

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

الإصدار 1.1.1

الإصدار 1.1.1

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

تتطابق الغرفة 1.1.1 مع الغرفة 1.1.1-rc1.

الإصدار 1.1.1-rc1

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

تم إصلاح خطأ عدم تعامل Room بشكل صحيح مع الإعداد بعد نقل البيانات بشكل صحيح b/79362399

الإصدار 1.1.0

الإصدار 1.1.0-beta3

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

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

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

الإصدار 1.1.0-beta2

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

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

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

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

الإصدار 1.1.0-beta1

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

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

  • استنادًا إلى الملاحظات والآراء بشأن مراجعة واجهة برمجة التطبيقات، لم يعُد @RawQuery يقبل تمرير String كمَعلمة طلب بحث. يجب استخدام [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (راجع [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] لإنشاء مثيل [SupportSQLiteQuery][ref-SupportSQLiteQuery] بسهولة باستخدام الوسيطات)
  • تستخدم طريقة 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
  • الترتيب: تعالج الآن عملية تنفيذ مصدر البيانات في الغرفة التبعيات متعددة الجداول (مثل العلاقات وضمات) بشكل صحيح. في السابق، كانت لا تؤدي إلى ظهور نتائج جديدة، أو قد يتعذّر تجميعها. b/74128314

الإصدار 1.1.0-alpha1

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

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

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

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

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