Room

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

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

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

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

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

Groovy

dependencies {
    def room_version = "2.6.1"

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

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

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

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

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

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

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

Kotlin

dependencies {
    val room_version = "2.6.1"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Groovy

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

Kotlin

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

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

Groovy

plugins {
    id 'androidx.room'
}

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

Kotlin

plugins {
    id("androidx.room")
}

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

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

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

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

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

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

Groovy

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

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

Kotlin

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

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

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

ملاحظات

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

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

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

الإصدار 2.7

الإصدار 2.7.0-alpha06

7 أغسطس 2024

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

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

  • تغيير إعداد إنشاء مثيل لـ RoomDatabase في مشروع KMP.

بسبب نموذج تجميع البيانات في لغة Kotlin 2.0، أصبحت استراتيجية الإشارة إلى دالة سيتم إنشاؤها باسم "instantiateImpl()" أكثر قابلية للتطبيق. تمّ طرح واجهتَي برمجة تطبيقات جديدتين، وهما @ConstructedBy وRoomDatabaseConstructor، وستحلّ محلّ استراتيجية instantiateImpl(). في ما يلي الاستراتيجية الجديدة:

  1. تحديد كائن متوقع ينفّذ RoomDatabaseConstructor

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. ربط الكائن ببيان @Database باستخدام @ConstructedBy

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. إنشاء مثيل قاعدة بيانات جديد ولكن بدون تمرير وسيطة على الإعدادات الأصلية

      fun createNewDatabase(path: String) =
        Room.databaseBuilder<AppDatabase>(name = path)
          .setDriver(BundledSQLiteDriver())
          .setQueryCoroutineContext(Dispatchers.IO)
          .build()
    

إصلاحات b/316978491، b/338446862 b/342905180

  • توفير @RawQuery في Room KMP عن طريق إضافة واجهة برمجة تطبيقات جديدة تُسمى RoomRawQuery تشبه SupportSQLiteQuery من حيث الاحتفاظ ببيانات سلسلة SQL الأولية ودالة لربط الوسيطات في عبارة. يمكن الآن لدوال @RawQuery التي تتضمّن تعليقات توضيحية قبول RoomRawQuery كمَعلمة واحدة. (Iea844، وb/330586815)
  • يمكنك إضافة حمولة زائدة لـ setQueryCallback() تقبل CoroutineContext. (Id66ff، وb/309996304)
  • تمت إضافة معلومات عن linuxArm64 أهداف Kotlin المتعددة المنصات (I139d3 وb/338268719)

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

  • يُرجى حلّ مشكلة إنشاء الغرفة لإجراء مكالمة إلى recursiveFetchArrayMap عن طريق الخطأ في الاستهدافات التي لا تعمل بنظام التشغيل Android. (710c36، b/352482325)
  • حلّ مشكلة طرحت فيها الغرفة أحيانًا استثناءً بشأن "انتهاء المهلة أثناء محاولة الاتصال" في مشروع KMP. (fa72d0، وb/347737870)
  • حل مشكلة في عمليات نقل البيانات التلقائية التي تبحث عن المفاتيح الخارجية في وقت مبكر جدًا قبل أن تغير الجداول الأخرى مخططاتها لتتوافق مع المفاتيح الخارجية الجديدة. (7672c0، b/352085724)

الإصدار 2.7.0-alpha05

10 يوليو 2024

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

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

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

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

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

الإصدار 2.7.0-alpha04

12 يونيو 2024

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

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

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

الإصدار 2.7.0-alpha03

29 مايو 2024

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

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

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

الإصدار 2.7.0-alpha02

14 مايو 2024

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

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

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

الإصدار 2.7.0-alpha01

1 مايو 2024

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

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

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

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

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

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

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

الإصدار 2.6

الإصدار 2.6.1

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

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

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

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

الإصدار

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

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

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

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

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

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

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

الإصدار 2.6.0-rc01

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

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

الإصدار 2.6.0-beta01

23 آب (أغسطس) 2023

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

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

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

الإصدار 2.6.0-alpha03

9 آب (أغسطس) 2023

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

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

  • تتوفّر الآن أنواع إرجاع "الخرائط المتداخلة" في دوال 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، ويُتوقع إعادة كتابتها كدوال بدلاً من ذلك لتجنب الاعتقاد الخاطئ بأنّ قيمة الخاصية غير قابلة للتغيير ولها نتيجة مخزنة ثابتة. هناك قيد آخر تمّت إضافته وهو أنّ أنواع إرجاع المجموعات القابلة للإلغاء لم تعد مسموحًا بها في Room for Kotlin CodeGen.

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

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

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

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

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

الإصدار 2.5.2

الإصدار 2.5.2

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

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

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

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

الإصدار 2.5.1

الإصدار 2.5.1

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

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

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

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

الإصدار 2.5.0

الإصدار 2.5.0

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

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

الإصدار 2.5.0

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

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

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

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

الإصدار 2.5.0-rc01

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

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

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

الإصدار 2.5.0-beta02

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

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

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

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

الإصدار 2.5.0-beta01

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

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

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

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

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

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

الإصدار 2.5.0-alpha03

24 آب (أغسطس) 2022

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

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

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

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

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

الإصدار 2.5.0-alpha02

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

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

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

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

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

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

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

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

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

الإصدار 2.5.0-alpha01

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

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

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

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

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

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

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

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

الإصدار 2.4.3

الإصدار 2.4.3

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

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

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

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

الإصدار 2.4.2

الإصدار 2.4.2

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

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

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

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

الإصدار 2.4.1

الإصدار 2.4.1

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

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

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

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

الإصدار

الإصدار

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

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

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

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

الإصدار 2.4.0-rc01

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

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

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

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

الإصدار 2.4.0-beta02

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

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

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

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

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

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

الإصدار 2.4.0-beta01

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

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

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

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

الإصدار 2.4.0-alpha05

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha04

21 يوليو 2021

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha03

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

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

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha01

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

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

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

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

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

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

الإصدار 2.3.0

الإصدار 2.3.0

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

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

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

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

الإصدار 2.3.0-rc01

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

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

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

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

الإصدار 2.3.0-beta03

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

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

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

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

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

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

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

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

الإصدار 2.3.0-beta02

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

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

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

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

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

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

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

الإصدار 2.3.0-beta01

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

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

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

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

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

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

الإصدار 2.3.0-alpha04

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

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

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

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

مشكلة معروفة

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

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

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

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

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

الإصدار 2.3.0-alpha03

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.3.0-alpha02

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

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

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

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

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

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

الإصدار 2.3.0-alpha01

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

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

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

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

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

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

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

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

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

الإصدار 2.2.6

الإصدار 2.2.6

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

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

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

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

الإصدار 2.2.5

الإصدار 2.2.5

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

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

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

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

الإصدار 2.2.4

الإصدار 2.2.4

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

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

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

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

الإصدار 2.2.3

الإصدار 2.2.3

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

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

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

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

الإصدار 2.2.2

الإصدار 2.2.2

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

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

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

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

الإصدار 2.2.1

الإصدار 2.2.1

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

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

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

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

الإصدار 2.2.0

الإصدار 2.2.0

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

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

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

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

الإصدار 2.2.0-rc01

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

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

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

الإصدار 2.2.0-beta01

22 آب (أغسطس) 2019

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

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

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

الإصدار 2.2.0-alpha02

7 آب (أغسطس) 2019

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

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

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

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

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

الإصدار 2.2.0-alpha01

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

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

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

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

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

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

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

الإصدار

الإصدار

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

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

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

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

الإصدار 2.1.0-rc01

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

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

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

الإصدار 2.1.0-beta01

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

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

الإصدار 2.1.0-alpha07

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

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

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

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

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

الإصدار 2.1.0-alpha06

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

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

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

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

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

الإصدار 2.1.0-alpha05

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

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

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha04

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha03

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha02

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

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

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

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

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

الإصدار 2.1.0-alpha01

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

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

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

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

الإصدار 1.1.0-beta1

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

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

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

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

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

الإصدار 1.1.0-alpha1

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

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

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

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

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