Room

توفر مكتبة تثبيت الغرفة طبقة تجريدية على SQLite للسماح بوصول أكثر قوة إلى قاعدة البيانات مع الاستفادة من القوة الكاملة لـ SQLite.
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
10 يوليو 2024 2.6.1 - - 2.7.0-alpha05

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

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

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

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

رائع

dependencies {
    def room_version = "2.6.1"

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

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

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

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

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

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

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

Kotlin

dependencies {
    val room_version = "2.6.1"

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

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

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

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

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

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

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

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

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

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

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

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

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

تكوين خيارات برنامج التحويل البرمجي

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

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

استخدام المكوّن الإضافي لنظام Gradle للغرفة

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

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

رائع

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

Kotlin

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

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

رائع

plugins {
    id 'androidx.room'
}

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

Kotlin

plugins {
    id("androidx.room")
}

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

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

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

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

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

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

رائع

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

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

Kotlin

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

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

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

ملاحظات

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

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

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

الإصدار 2.7

الإصدار 2.7.0-alpha05

10 يوليو 2024

تم طرح androidx.room:room-*:2.7.0-alpha05. يحتوي الإصدار 2.7.0-alpha05 على عمليات التنفيذ هذه.

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

  • تمت إعادة تسمية "SQLiteKt" إلى "SQLite" و"BundledSQLiteKt" إلى "BundledSQLite". (I8b501)

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

  • تم إصلاح الخطأ الذي يؤدي إلى توقف RoomDatabase أو تعطُّل مهلة الاتصال عند استخدام AndroidSQLiteDriver.

الإصدار 2.7.0-alpha04

12 يونيو 2024

تم طرح androidx.room:room-*:2.7.0-alpha04. يحتوي الإصدار 2.7.0-alpha04 على عمليات التنفيذ هذه.

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

  • تم إصلاح مشكلة في معالج التعليقات التوضيحية في الغرفة، والتي كانت ستؤدي إلى إنشاء رمز KMP غير متوافق عند تحديد نوع إرجاع خرائط متعددة في DAO. (b/340983093)
  • تم إصلاح مشكلة تعذّر على الغرفة العثور على تنفيذ قاعدة البيانات التي تم إنشاؤها إذا لم يكن لدى الفئة التي تتضمّن تعليقات توضيحية في @Database أيّ حزمة. (b/342097292)
  • تم إصلاح مشكلة كانت تؤدي أحيانًا إلى ظهور ConcurrentModificationException عندما يتم إغلاق قاعدة البيانات تلقائيًا بسبب عدم نشاطها، وذلك عند تفعيل ميزة الإغلاق التلقائي وإيقاف المثيلات المتعددة.

الإصدار 2.7.0-alpha03

29 مايو 2024

تم طرح androidx.room:room-*:2.7.0-alpha03. يحتوي الإصدار 2.7.0-alpha03 على عمليات التنفيذ هذه.

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

  • إصلاح مشكلات متنوعة بخصوص Kotlin 2.0 وKSP 2.0. يُرجى ملاحظة أنّ لغة Kotlin 2.0 مع دعم KSP 2 لم تكتمل، ويعمل الفريق على تطوير واجهات برمجة التطبيقات وتغييرات السلوك في برنامج التجميع الجديد. (b/314151707)

الإصدار 2.7.0-alpha02

14 مايو 2024

تم طرح androidx.room:room-*:2.7.0-alpha02. يحتوي الإصدار 2.7.0-alpha02 على عمليات التنفيذ هذه.

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

  • تمّ إصلاح مشاكل مختلفة في KSP.

الإصدار 2.7.0-alpha01

1 مايو 2024

تم طرح androidx.room:room-*:2.7.0-alpha01. يحتوي الإصدار 2.7.0-alpha01 على عمليات التنفيذ هذه.

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

  • دعم Kotlin Multiplatform (KMP): في هذا الإصدار، تمت إعادة هيكلة Room لتصبح مكتبة Kotlin Multiplatform (KMP) متعددة. على الرغم من أنّه لا يزال هناك بعض العمل الذي يجب إنجازه، يقدّم هذا الإصدار إصدارًا جديدًا من Room حيث تم تصنيف معظم الوظائف على أنّه شائع الاستخدام على أنظمة أساسية متعدّدة. الأنظمة الأساسية المعتمدة حاليًا هي Android وiOS وJVM (للكمبيوتر المكتبي) وMac الأصلي ونظام التشغيل Linux الأصلي. ستصبح أي وظائف غير متوفّرة في الأنظمة الأساسية المتوافقة حديثًا "ميزة مكتملة" في إصدارات الغرف القادمة.

لمزيد من المعلومات حول كيفية البدء باستخدام "منصّة KMP" في الغرفة، يُرجى الرجوع إلى مستندات "منصّة KMP" الرسمية للغرفة.

  • تم تفعيل ميزة إنشاء رموز Kotlin على KSP تلقائيًا في حال تمت المعالجة من خلال KSP. بالنسبة إلى مشاريع KAPT أو Java فقط، ستظل الغرفة تنشئ مصادر Java.

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

  • تمّت إضافة حِمل زائد لـ Room.databaseBuilder() يستخدم مَعلمة lambda التي تهدف إلى استخدامها مع الدالة التي تم إنشاؤها في الغرفة لتجنُّب استخدام الانعكاس عند إنشاء مثيل لعملية تنفيذ RoomDatabase التي تم إنشاؤها. مثال على الاستخدام:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • تمّت إضافة واجهة برمجة تطبيقات لإعداد غرفة باستخدام CoroutineContext إلى أداة الإنشاء: RoomDatabase.Builder.setQueryCoroutineContext. يُرجى العِلم أنّه لا يمكن إعداد RoomDatabase إلا مع جهات تنفيذ باستخدام setQueryExecutor أو من خلال سياق الكوروتين، وليس كليهما.
  • تمت إضافة واجهة برمجة تطبيقات لإعداد الغرفة باستخدام برنامج تشغيل "SQLite": RoomDatabase.Builder.setDriver(). لمزيد من المعلومات حول SQLite Driver API، يمكنك الاطّلاع على مستندات KMP من SQLite.
  • تمت إضافة واجهتَي برمجة تطبيقات للوصول إلى SQLiteConnection الأساسي من واجهات برمجة تطبيقات برنامج التشغيل: RoomDatabase.useReaderConnection وRoomDatabase.useWriterConnection.
  • تحتوي عمليات معاودة الاتصال ذات الصلة بـ Varios Room الآن على إصدار تم تحميله بشكل زائد ويتلقّى SQLiteConnection بدلاً من SupportSQLiteDatabase. يتم إلغاء هذه القواعد عند الانتقال إلى مشروع KMP. لمزيد من المعلومات حول نقل استخدامات الغرفة في أحد تطبيقات Android إلى وحدة "منصة KMP" شائعة، يُرجى الرجوع إلى دليل نقل البيانات. عمليات معاودة الاتصال هي:
    • Migration.migrate(SQLiteConnection)
    • AutoMigrationSpec.onPostMigrate(SQLiteConnection)
    • RoomDatabase.Callback.onCreate(SQLiteConnection)
    • RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
    • RoomDatabase.Callback.onOpen(SQLiteConnection)
  • تم دمج عنصر KTX androidx.room:room-ktx في androidx.room:room-runtime مع كل واجهات برمجة التطبيقات الخاصة به. وأصبح العنصر فارغًا الآن. يُرجى إزالته من قائمة الاعتمادية.

الإصدار 2.6

الإصدار 2.6.1

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

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

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

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

الإصدار

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

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

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

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

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

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

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

الإصدار 2.6.0-rc01

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

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

الإصدار 2.6.0-beta01

23 آب (أغسطس) 2023

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

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

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

الإصدار 2.6.0-alpha03

9 آب (أغسطس) 2023

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

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

  • تتوفّر الآن أنواع إرجاع "الخرائط المتداخلة" في دوال 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 الخاص بالغرفة

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

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

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

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

  • تم تعريف "RoomDatabase.QueryCallback" على أنّه واجهة وظيفية تتيح استخدام الإحالات الناجحة من خلال ميزة "إدارة العلامات من Google". (Iab8ea، b/281008549)

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

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

الإصدار 2.6.0-alpha01

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

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

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

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

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

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

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

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

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

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

الإصدار 2.5.2

الإصدار 2.5.2

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

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

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

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

الإصدار 2.5.1

الإصدار 2.5.1

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

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

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

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

الإصدار 2.5.0

الإصدار 2.5.0

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

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

الإصدار 2.5.0

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

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

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

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

الإصدار 2.5.0-rc01

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

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

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

الإصدار 2.5.0-beta02

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

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

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

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

الإصدار 2.5.0-beta01

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

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

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

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

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

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

الإصدار 2.5.0-alpha03

24 آب (أغسطس) 2022

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

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

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

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

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

الإصدار 2.5.0-alpha02

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

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

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

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

  • تم تحويل جميع room-runtime من Java إلى Kotlin. (If2069 وb/206859668) و(Ie4b55 وb/206859668) و(I697ee وb/206859668) و(I96c25 وb

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

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

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

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

الإصدار 2.5.0-alpha01

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

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

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

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

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

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

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

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

الإصدار 2.4.3

الإصدار 2.4.3

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

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

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

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

الإصدار 2.4.2

الإصدار 2.4.2

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

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

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

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

الإصدار 2.4.1

الإصدار 2.4.1

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

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

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

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

الإصدار

الإصدار

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

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

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

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

الإصدار 2.4.0-rc01

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

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

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

  • يجب تعديل اعتماد الغرفة على KSP إلى 1.6.0-1.0.1 للتوافق مع الإصدار 1.6 من لغة Kotlin.

الإصدار 2.4.0-beta02

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

تم طرح androidx.room:room-*:2.4.0-beta02. يحتوي الإصدار 2.4.0-beta02 على عمليات التنفيذ هذه.

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

  • لقد أتحنا استخدام SparseArray وlongSparseArray في @MapInfo. (Ic91a2b/138910317)

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

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

الإصدار 2.4.0-beta01

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

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

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

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

الإصدار 2.4.0-alpha05

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha04

21 يوليو 2021

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

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

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

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

    خريطة العلاقات الفردية

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

    خريطة العلاقات الثنائية (خريطة متعددة عادية)

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

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

نقل بيانات الغرف

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

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

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

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

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

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

الإصدار 2.4.0-alpha03

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

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

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

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

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

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

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

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

التحديثات المتعلقة بالاعتمادية

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

الإصدار 2.4.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha01

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

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

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

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

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

  • يجب حلّ مشكلة يتم فيها التحقّق من صحة defaultValue بأقواس إضافية بشكل خاطئ من خلال عملية التحقّق من مخطّط الغرفة. b/182284899

الإصدار 2.3.0

الإصدار 2.3.0

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

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

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

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

الإصدار 2.3.0-rc01

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

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

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

  • حلّ مشكلة منعت استخدام طلبات بحث "تدفق الكوروتين" التي أنشأها الغرفة في جزء "withTransaction" معلَّق. (I797bf)

الإصدار 2.3.0-beta03

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

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

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

  • تمت إضافة دعم التجميع التدريجي للوحة مفاتيح KSP. (I031c1، b/176453350)

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

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

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

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

الإصدار 2.3.0-beta02

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

تم طرح androidx.room:room-*:2.3.0-beta02. يحتوي الإصدار 2.3.0-beta02 على عمليات التنفيذ هذه.

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

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

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

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

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

الإصدار 2.3.0-beta01

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

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

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

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

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

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

الإصدار 2.3.0-alpha04

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

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

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

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

مشكلة معروفة

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

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

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

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

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

الإصدار 2.3.0-alpha03

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.3.0-alpha02

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

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

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

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

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

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

الإصدار 2.3.0-alpha01

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

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

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

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

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

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

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

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

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

الإصدار 2.2.6

الإصدار 2.2.6

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

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

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

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

الإصدار 2.2.5

الإصدار 2.2.5

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

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

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

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

الإصدار 2.2.4

الإصدار 2.2.4

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

تم طرح الإصدارات androidx.room:room-common:2.2.4 وandroidx.room:room-compiler:2.2.4 وandroidx.room:room-guava:2.2.4 وandroidx.room:room-ktx:2.2.4 وandroidx.room:room-migration:2.2.4 وandroidx.room:room-runtime:2.2.4 وandroidx.room:room-rxjava2:2.2.4 وandroidx.room:room-testing:2.2.4. يحتوي الإصدار 2.2.4 على عمليات الالتزام هذه.

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

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

الإصدار 2.2.3

الإصدار 2.2.3

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

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

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

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

الإصدار 2.2.2

الإصدار 2.2.2

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

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

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

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

الإصدار 2.2.1

الإصدار 2.2.1

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

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

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

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

الإصدار 2.2.0

الإصدار 2.2.0

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

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

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

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

الإصدار 2.2.0-rc01

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

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

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

الإصدار 2.2.0-beta01

22 آب (أغسطس) 2019

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

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

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

الإصدار 2.2.0-alpha02

7 آب (أغسطس) 2019

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

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

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

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

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

الإصدار 2.2.0-alpha01

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

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

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

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

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

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

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

الإصدار

الإصدار

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

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

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

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

الإصدار 2.1.0-rc01

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

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

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

الإصدار 2.1.0-beta01

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

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

الإصدار 2.1.0-alpha07

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

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

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

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

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

الإصدار 2.1.0-alpha06

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

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

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

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

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

الإصدار 2.1.0-alpha05

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

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

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

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

  • تمت إعادة تسمية العنصر "room-coroutines" إلى "room-ktx" وفقًا للتسمية نفسها مثل عناصر androidx الأخرى.
  • تم إيقاف beginTransaction وsetTransactionSuccessful وendTransaction في RoomDatabase نهائيًا لصالح runInTransaction ووظيفة الإضافة room-ktx withTransaction.

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

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

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

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

الإصدار 2.1.0-alpha04

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha03

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha02

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

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

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

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

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

الإصدار 2.1.0-alpha01

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

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

  • FTS: تتيح الغرفة الآن الكيانات التي تتضمّن جدول ربط FTS3 أو FTS4. يمكن الآن إضافة تعليقات توضيحية أيضًا باستخدام @Fts3 أو @Fts4 للفئات التي تحتوي على تعليقات توضيحية باستخدام @Entity، وذلك للإعلان عن فئة باستخدام جدول بحث في النص الكامل للتعيين. تتوفّر خيارات FTS لإجراء المزيد من التخصيص من خلال طرق التعليق التوضيحي. b/62356416
  • العروض: تتيح الغرفة الآن الإعلان عن فئة باعتبارها طلب بحث مخزَّنًا، وتُعرف أيضًا باسم طريقة العرض باستخدام التعليق التوضيحي @DatabaseView. b/67033276
  • القيمة التلقائية: تتيح الغرفة الآن تعريف فئات القيمة التلقائية التي تتضمن تعليقات توضيحية على أنّها كيانات ونقاط POJO. يمكن الآن الإعلان عن التعليقات التوضيحية للغرفة @PrimaryKey و@ColumnInfo و@Embedded و@Relation في الطرق المجرّدة للصف الذي يتضمّن قيمة تلقائية. يُرجى العلم أنّه يجب أيضًا أن يكون هذا التعليق التوضيحي مصحوبًا بـ @CopyAnnotations لكي تفهمه الغرفة بشكل صحيح. b/62408420
  • دعم أنواع إرجاع السلع Rx: إنّ طُرق DAO التي تحتوي على تعليقات توضيحية باستخدام @Insert أو @Delete أو @Update تتوافق الآن مع أنواع إرجاع Rx: Completable وSingle<T> وMaybe<T>. b/63317956
  • الأنواع غير القابلة للتغيير التي تتضمّن @Relation: كانت الغرف تتطلب سابقًا أن تكون حقول @Relation التي تمت إضافة تعليقات توضيحية إليها قابلة للضبط، ولكن يمكن الآن أن تكون مَعلمات دالة الإنشاء.
  • enableMultiInstanceInvalidation: واجهة برمجة تطبيقات جديدة في RoomDatabase.Builder لتفعيل عمليات الإيقاف في مثيلات متعددة من RoomDatabase باستخدام ملف قاعدة البيانات نفسه. تعمل آلية إلغاء المثيلات المتعددة أيضًا في عمليات متعددة. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: واجهة برمجة تطبيقات جديدة في RoomDatabase.Builder لإعادة إنشاء قاعدة البيانات تلقائيًا في حال الرجوع إلى إصدار سابق. b/110416954
  • ignoredColumns: هي واجهة برمجة تطبيقات جديدة في التعليق التوضيحي @Entity يمكن استخدامها لإدراج الحقول التي تم تجاهلها حسب الاسم. ويفيد ذلك في تجاهل الحقول المكتسَبة في أحد الكيانات. b/63522075

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

  • أصبحت mCallback وmDatabase في RoomDatabase الآن @Deprecated وستتم إزالتها في الإصدار الرئيسي التالي من الغرفة. b/76109329

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

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

الإصدار 2.0.0

الإصدار 2.0.0

1 أكتوبر 2018

تم طرح androidx.room 2.0.0 بدون أي تغييرات من 2.0.0-rc01.

الإصدار 2.0.0-rc01

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

تم طرح androidx.room 2.0.0-rc01 بدون أي تغييرات من 2.0.0-beta01.

الإصدار 2.0.0-beta01

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

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

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

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

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

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

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

dependencies {
    def room_version = "1.1.1"

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

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

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

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

الإصدار 1.1.1

الإصدار 1.1.1

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

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

الإصدار 1.1.1-rc1

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

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

الإصدار 1.1.0

الإصدار 1.1.0-beta3

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

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

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

الإصدار 1.1.0-beta2

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

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

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

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

الإصدار 1.1.0-beta1

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

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

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

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

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

الإصدار 1.1.0-alpha1

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

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

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

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

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