Room

توفّر مكتبة Room للحفاظ على البيانات طبقة تجريدية فوق SQLite للسماح بالوصول إلى قاعدة البيانات بشكل أكثر فعالية مع الاستفادة من الإمكانات الكاملة لـ SQLite.
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
11 كانون الأول (ديسمبر) 2024 2.6.1 - - 2.7.0-alpha12

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

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

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

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

Kotlin

dependencies {
    val room_version = "2.6.1"

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

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See Add the KSP plugin to your project
    ksp("androidx.room:room-compiler:$room_version")

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor("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")
}

رائع

dependencies {
    def room_version = "2.6.1"

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

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See KSP Quickstart to add KSP to your build
    ksp "androidx.room:room-compiler:$room_version"

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor "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"
}

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

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

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

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

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

ضبط خيارات المُجمِّع

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

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

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

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

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

رائع

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

Kotlin

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

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

رائع

plugins {
    id 'androidx.room'
}

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

Kotlin

plugins {
    id("androidx.room")
}

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

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

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

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

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

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

رائع

// 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 من معرفة هذا الدليل عند إجراء عمليات التحقّق من التحديثات. نقل بيانات قاعدة بيانات Room: يعرض هذا القسم تنفيذًا كاملاً لـ CommandLineArgumentsProvider يقدّم الموقع الجغرافي للنموذج.

ملاحظات

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

إنشاء مشكلة جديدة

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

الإصدار 2.7

الإصدار 2.7.0-alpha12

11 كانون الأول (ديسمبر) 2024

تم إصدار androidx.room:room-*:2.7.0-alpha12. يتضمّن الإصدار 2.7.0-alpha12 عمليات الربط هذه.

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

  • أضِف واجهة برمجة التطبيقات التجريبية RoomDatabase.Builder.setInMemoryTrackingMode() لضبط ما إذا كان تطبيق Room سيستخدم جدولاً في الذاكرة أم لا لتتبُّع عمليات الإبطال. (I2a9b2، b/185414040)

إصلاح الأخطاء - تؤدي عمليات نقل البيانات التدميرية الآن إلى حذف طرق العرض لضمان إعادة إنشائها، ما يؤدي إلى مواءمة السلوك عندما يكون الخيار allowDestructiveMigrationForAllTables مفعّلاً (الإعداد التلقائي في KMP) مع السلوك الحالي عندما يكون الخيار غير مفعّل. (0a3e83، b/381518941)

الإصدار 2.7.0-alpha11

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

تم إصدار androidx.room:room-*:2.7.0-alpha11. يتضمّن الإصدار 2.7.0-alpha11 عمليات الربط هذه.

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

  • راجِع توقيع طريقة convertRows() المُضافة حديثًا ليكون وظيفة تعليق تتلقّى RawRoomQuery لفهرسة الغرف. (Ie57b5، b/369136627)

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

  • تم إصلاح المشكلة في تقسيم الغرف التي كان يتم فيها إنشاء رمز غير صالح عند استخدام @Relation مع PagingSource.

الإصدار 2.7.0-alpha10

16 أكتوبر 2024

تم إصدار androidx.room:room-*:2.7.0-alpha10. يتضمّن الإصدار 2.7.0-alpha10 عمليات الربط هذه.

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

  • أنشئ فئة ByteArrayWrapper داخلية لتفعيل العلاقات مع ByteBuffer في الأنظمة الأساسية غير المستندة إلى Android وJVM. (I75543، b/367205685)
  • أضِف SQLiteStatement.getColumnType() مع الثوابت المختلفة للنتائج SQLITE_DATA_* لتفعيل استرداد نوع البيانات لعمود معيّن. (I1985c، b/369636251)

الإصدار 2.7.0-alpha09

2 أكتوبر 2024

تم إصدار androidx.room:room-*:2.7.0-alpha09. يتضمّن الإصدار 2.7.0-alpha09 هذه المساهمات.

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

  • إصلاح مشكلة في تنفيذ KMP لـ room-paging التي قد تؤدي إلى Error code: 8, message: attempt to write a readonly database بسبب بدء معاملة كتابة على اتصال للقراءة (b/368380988)

الإصدار 2.7.0-alpha08

18 أيلول (سبتمبر) 2024

تم إصدار androidx.room:room-*:2.7.0-alpha08. يتضمّن الإصدار 2.7.0-alpha08 عمليات الربط هذه.

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

  • تم نقل عناصر room-paging لتكون متوافقة مع KMP. (Ib8756، b/339934824)
  • تمّت إتاحة واجهة برمجة التطبيقات invalidationTrackerFlow() كواجهة برمجة تطبيقات تابعة للطرف الأول باسم InvalidationTracker.createFlow()، وهي متاحة الآن لمجموعات المصادر غير المخصّصة لنظام التشغيل Android في مشاريع KMP. (I1fbfa، (I8fb29b/329291639، b/329315924)

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

  • تمّت إزالة أو استبدال جميع التحذيرات ورسائل الخطأ في Room التي تستخدم الكلمة Cursor، لأنّ Cursor لم تعُد عبارة عامة دقيقة لاستخدامها في إصدار KMP من Room. (Id8cd9، b/334087492)

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

  • تم إصلاح مشكلة كانت تؤدي إلى محاولة Room KMP إنشاء رمز باستخدام UUID لمنصّات غير منصّة Java Virtual Machine. (b/362994709)
  • تم إصلاح مشكلة في مكوّن Room Gradle الإضافي كانت تؤدي إلى ظهور خطأ مثل "لا يمكن تغيير سمات الإعدادات … بعد قفلها للتغيير" عند استخدامه في مشروع KMP مع Compose Multiplatform. (b/343408758)

الإصدار 2.7.0-alpha07

21 آب (أغسطس) 2024

تم إصدار androidx.room:room-*:2.7.0-alpha07. يتضمّن الإصدار 2.7.0-alpha07 عمليات الربط هذه.

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

  • سيضيف الآن "مكوّن Room Gradle الإضافي" المخططات التي تم تصديرها تلقائيًا إلى مصادر موارد "اختبار أداة قياس الأداء من Android" حتى يمكن استخدامها من قِبل MigrationTestHelper.

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

  • تم إصلاح مشكلة في القيمة "الفعلية" التي تم إنشاؤها للدالة RoomDatabaseConstructor والتي لا تتضمّن المُعدِّل "الفعلية" في الدالة initialize إذا تم إلغاء هذه الدالة أيضًا في بيان "التوقّع". (359631627)
  • تم إصلاح مشكلة في القيمة "الفعلية" التي تم إنشاؤها للعنصر RoomDatabaseConstructor والتي لا تتطابق مع مستوى ظهور العنصر "توقّع". (358138953)

الإصدار 2.7.0-alpha06

7 آب (أغسطس) 2024

تم إصدار androidx.room:room-*:2.7.0-alpha06. يتضمّن الإصدار 2.7.0-alpha06 عمليات الربط هذه.

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

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

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

  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 Multiplatform (I139d3 وb/338268719)

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

  • تم إصلاح مشكلة كانت تؤدي إلى إنشاء Room بشكلٍ غير صحيح لطلب recursiveFetchArrayMap في استهدافات غير Android. (710c36، b/352482325)
  • تم إصلاح مشكلة كانت تؤدي أحيانًا إلى ظهور استثناء في Room بشأن "انتهت مهلة محاولة الاتصال" في مشروع 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 هذه المراجعات.

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

  • تم إصلاح مشكلة في معالِج التعليقات التوضيحية في Room التي كانت تؤدي إلى إنشاء رمز KMP غير متوافق عند تحديد نوع إرجاع متعدد الخرائط في DAO. (b/340983093)
  • تم إصلاح مشكلة تعذُّر العثور على تنفيذ قاعدة البيانات التي تم إنشاؤها في Room إذا لم تكن الفئة التي تمت عليها التعليقات التوضيحية @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 يُرجى العِلم أنّ الإصدار 2.0 من Kotlin مع دعم 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 الأصلي. وسيتم توفير أي وظائف غير متوفّرة في الإصدارات القادمة من Room على المنصات التي تمّت إتاحتها حديثًا.

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

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

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

  • تمت إضافة طريقة تحميل زائدة لدالة Room.databaseBuilder() تأخذ مَعلمة lambda مخصّصة للاستخدام مع دالة تم إنشاؤها في Room لتجنُّب استخدام ميزة Reflection عند إنشاء مثيل لتنفيذ RoomDatabase الذي تم إنشاؤه. في ما يلي أمثلة على الاستخدام:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • تمت إضافة واجهة برمجة تطبيقات لضبط "غرفة" باستخدام CoroutineContext إلى أداة الإنشاء: RoomDatabase.Builder.setQueryCoroutineContext. يُرجى العِلم أنّه لا يمكن ضبط RoomDatabase إلا باستخدام أحد اثنين: إما مشغّلات باستخدام setQueryExecutor أو سياق Coroutine، ولكن ليس كليهما.
  • تمت إضافة واجهة برمجة تطبيقات لضبط Room باستخدام برنامج تشغيل SQLite: RoomDatabase.Builder.setDriver(). لمزيد من المعلومات حول SQLite Driver API، يُرجى الرجوع إلى مستندات SQLite KMP.
  • تمّت إضافة واجهات برمجة تطبيقات للوصول إلى SQLiteConnection الأساسية من واجهات برمجة تطبيقات برامج التشغيل: RoomDatabase.useReaderConnection وRoomDatabase.useWriterConnection.
  • تم الآن إضافة إصدار مُحمَّل بشكل زائد إلى عمليات تسجيل المكالمات ذات الصلة بتطبيق Varios Room، حيث يتلقّى هذا الإصدار SQLiteConnection بدلاً من SupportSQLiteDatabase. ومن المفترض أن يتم إلغاء هذه الإعدادات عند نقل البيانات إلى مشروع KMP. لمزيد من المعلومات عن نقل استخدامات Room في تطبيق 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. تم أيضًا تضمين حلّ محتمل لحالة طارئة مشابهة للأعمدة من النوع Float. (Id75f5، b/304584179)
  • سيتم الآن نشر الاستثناءات التي يتم طرحها من عمليات تحميل PagingSource كLoadStateUpdate من LoadResult.Error يحتوي على Throwable. يمكن ملاحظة حالة الخطأ هذه من خلال PagingDataAdapter.loadStateFlow(Views) أو LazyPagingItems.loadState(Compose). يُرجى العلم أنّ هذا يشير إلى تغيير في السلوك حيث كانت أخطاء التحميل في السابق تظهر كاستثناء تم طرحه من خلال طريقة dao التي تسبّبت في التحميل. (I93887، b/302708983)

الإصدار 2.6.0

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

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

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

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

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

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

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

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

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

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

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

الإصدار 2.6.0-alpha02

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

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

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

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

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

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

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

  • تمّ تحديد RoomDatabase.QueryCallback كواجهة وظيفية للسماح باستخدام الإحالات الناجحة في نموذج تقييم الأداء التسويقي (SAM). (Iab8ea، b/281008549)

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

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

الإصدار 2.6.0-alpha01

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

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

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

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

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

تحذير: قد تلاحظ أنّ مشروعاتك أكثر صرامة من حيث إمكانية قبول القيم الفارغة عند استخدام Kotlin CodeGen. في Kotlin CodeGen، تكون قيمة عدم تحديد الهوية لوسيطات النوع مهمة، في حين يتم تجاهل ذلك في Java في معظم الأحيان. على سبيل المثال، لنفترض أنّ لديك نوع إرجاع "Flow<foo\>" والجدول فارغ. لن يتسبب ذلك في أي مشاكل في CodeGen في Java، ولكن سيظهر لك خطأ في CodeGen في Kotlin. لتجنُّب ذلك، عليك استخدام 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). أثناء إجراء معاملة معلّقة، يستخدم Room سلسلة محادثات من منفّذ المعاملة، ويشغّل حلقة أحداث فيها ويرسل إليها عمليات تعليق قاعدة البيانات حتى يتم تجميعها جميعًا في سلسلة محادثات إعادة التشغيل المتزامنة للمعاملة. من المتوقّع عادةً أن تكون سلسلة محادثات المعاملة مختلفة عن سلسلة المحادثات التي تبدأ المعاملة، ولكن في بعض الحالات تكونا متطابقتَين. لمعالجة هذه الحالات التي تتكرّر فيها المهام، تمت إعادة صياغة 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/206859668)

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

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

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

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

الإصدار 2.5.0-alpha01

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

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

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

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

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

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

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

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

الإصدار 2.4.3

الإصدار 2.4.3

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

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

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

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

الإصدار 2.4.2

الإصدار 2.4.2

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

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

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

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

الإصدار 2.4.1

الإصدار 2.4.1

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

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

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

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

الإصدار 2.4.0

الإصدار 2.4.0

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

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

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

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

الإصدار 2.4.0-rc01

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

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

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

  • تعديل الاعتمادية على KSP في Room إلى 1.6.0-1.0.1 لتتوافق مع Kotlin 1.6

الإصدار 2.4.0-beta02

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

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

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

  • أضفنا دعمًا لـ SparseArray وLongSparseArray في @MapInfo. (Ic91a2b/138910317)

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

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

الإصدار 2.4.0-beta01

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

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

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

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

الإصدار 2.4.0-alpha05

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

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

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

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

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

  • السماح باستخدام مفاتيح/قيم غير POJO لأنواع عرض Multimap في DAO من خلال التعليق التوضيحي @MapInfo (I4d704)

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

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

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

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

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

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

الإصدار 2.4.0-alpha04

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

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

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

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

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

    خريطة العلاقات بين العناصر

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

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

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

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

الإشارة إلى الغرف

  • تم إصدار androidx.room:room-paging، ما يتيح استخدام Paging 3.0 الأصلي لطلبات البحث عن الغرف التي تعرض androidx.paging.PagingSource.

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

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

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

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

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

الإصدار 2.4.0-alpha03

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

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

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

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

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

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

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

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

تعديلات على التبعيات

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

الإصدار 2.4.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 2.4.0-alpha01

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

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

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

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

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

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

الإصدار 2.3.0

الإصدار 2.3.0

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

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

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

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

الإصدار 2.3.0-rc01

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

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

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

  • تم إصلاح مشكلة كانت تمنع استخدام طلبات بحث Coroutine Flow التي أنشأتها Room في كتلة withTransaction معلّقة. (I797bf)

الإصدار 2.3.0-beta03

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

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

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

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

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

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

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

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

الإصدار 2.3.0-beta02

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

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

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

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

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

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

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

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

مشكلة معروفة

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

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

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

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

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

الإصدار 2.3.0-alpha03

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

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

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

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

  • تتضمّن Room الآن واجهات برمجة تطبيقات لإنشاء قاعدة بيانات باستخدام قاعدة بيانات مُجمَّعة مسبقًا يتم قراءتها من مصدر إدخال. ويتيح ذلك حالات مثل استخدام تنسيق 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)

  • تم إصلاح مشكلة في Room تؤدي إلى التحقّق بشكل غير صحيح من جداول FTS التي أعلنت عن عمود rowid. (d62ebc، b/145858914)

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

  • حلّ مشاكل اللغة بالتنسيق الكبير/الصغير ذات الصلة باللغة التركية (5746e3b/68159494

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

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

الإصدار 2.3.0-alpha02

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

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

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

  • التوافق مع RxJava3: تتيح أداة Room الآن أنواع RxJava3. على غرار RxJava2، يمكنك تحديد طرق DAO التي يكون نوع الإرجاع فيها Flowable وSingle وMaybe وCompletable. بالإضافة إلى ذلك، يتوفّر عنصر جديد 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 على هذه المراجعات.

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

  • إتاحة Paging 3.0: ستتيح Room الآن إنشاء عمليات تنفيذ ل@Query الطرق المُشارَك عليها تعليقات توضيحية والتي يكون نوع الإرجاع فيها androidx.paging.PagingSource.

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

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

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

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

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

الإصدار 2.2.6

الإصدار 2.2.6

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

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

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

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

الإصدار 2.2.5

الإصدار 2.2.5

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

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

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

  • اجعل MultiInstanceInvalidationService directBootAware. مع أطيب التحيّات، "مايجود" contact-git@mygod.be (b/148240967)
  • تم إصلاح خطأ كان يؤدي إلى حدوث عطل عند تفعيل إيقاف العناصر غير الصالحة في النُسخ المتعددة واحتواء قاعدة البيانات على عنصر FTS. (b/148969394)
  • تم إصلاح مشكلة عند تحميل المكتبات المجمّعة من رموز برمجية أصلية لـ SQLite في معالج التعليقات التوضيحية في Room، والتي كانت تؤدي إلى تعطُّل المُجمِّع بسبب عمليات الترجمة المجمّعة المتوازيّة. (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 على هذه المراجعات.

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

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

الإصدار 2.2.3

الإصدار 2.2.3

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

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

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

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

الإصدار 2.2.2

الإصدار 2.2.2

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

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

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

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

الإصدار 2.2.1

الإصدار 2.2.1

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

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

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

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

الإصدار 2.2.0

الإصدار 2.2.0

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

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

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

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

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

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

الإصدار 2.2.0-alpha02

7 آب (أغسطس) 2019

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

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

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

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

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

الإصدار 2.2.0-alpha01

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

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

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

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

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

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

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

الإصدار 2.1.0

الإصدار 2.1.0

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

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

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

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

الإصدار 2.1.0-rc01

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

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

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

الإصدار 2.1.0-beta01

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

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

الإصدار 2.1.0-alpha07

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

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

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

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

  • تم إصلاح خطأ كان يؤدي إلى تعذُّر مطابقة Room لواجهة TypeConverter لدالة Kotlin DAO التي تحتوي على مَعلمة من نوع Collection. b/122066791

الإصدار 2.1.0-alpha06

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

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

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

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

  • تم إصلاح خطأ كان يؤدي إلى إيقاف أداة تتبُّع الإبطال عن مراقبة جدول المحتوى في حال إضافة مراقبين لكل من جدول المحتوى وجدول FTS الخارجي للمحتوى. b/128508917
  • تم تعديل قواعد SQLite في Room لتتطابق مع 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
  • تم إصلاح خلل كان يؤدي إلى تعذُّر تحديد Room بشكل صحيح للوظائف المعلّقة التي تحتوي على مَعلمات من النوع "صف دراسي داخلي". b/123767877
  • تم إصلاح خطأ كان يتسبب في أن تحضّر طريقة @Query DAO المؤجلة باستخدام عبارات INSERT أو UPDATE أو DELETE الطلب في الخيط الرئيسي بشكلٍ مُلحّ. b/123695593
  • تم إصلاح أخطاء متنوعة كانت تؤدي إلى إنشاء Room لرمز غير صحيح لبعض وظائف التعليق. b/123466702 وb/123457323
  • تم إصلاح خلل كان يؤدي إلى عدم إيقاف استخدام الطرق المتوقّفة نهائيًا بشكل صحيح في الرمز الذي تم إنشاؤه. b/117602586
  • تم تعديل الاعتماد على Room في androidx.sqlite إلى الإصدار 1.0.2 الذي يحتوي على إصلاحات للتعامل بشكل صحيح مع قواعد البيانات التالفة. b/124476912

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

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

الإصدار 2.1.0-alpha04

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha03

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

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

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

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

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

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

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

الإصدار 2.1.0-alpha02

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

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

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

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

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

الإصدار 2.1.0-alpha01

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

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

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

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

  • تم استبدال mCallback وmDatabase في RoomDatabase بـ @Deprecated، وسيتمّت إزالتهما في الإصدار الرئيسي التالي من Room. b/76109329

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

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

الإصدار 2.0.0

الإصدار 2.0.0

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

تم طرح الإصدار androidx.room 2.0.0 بدون أي تغييرات عن الإصدار 2.0.0-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 وقاعدة البيانات التي تم إنشاؤها نهائية الآن

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

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

التبعيات التي تم استخدامها قبل AndroidX

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

dependencies {
    def room_version = "1.1.1"

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

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

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

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

الإصدار 1.1.1

الإصدار 1.1.1

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

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

الإصدار 1.1.1-rc1

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

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

الإصدار 1.1.0

الإصدار 1.1.0-beta3

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

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

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

الإصدار 1.1.0-beta2

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

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

  • تم إصلاح خطأ خطير في عمليات تنفيذ Rx Single وMaybe في Room، حيث كان يتم إعادة استخدام الطلب مسبقًا، ما يتسبب في حدوث مشاكل في حال إضافة أكثر من مراقب واحد إلى مثيلَي 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
  • الفهرسة: يعالج الآن تنفيذ DataSource في Room بشكل صحيح التبعيات في الجداول المتعددة (مثل العلاقات والدمج). في السابق، كان من الممكن ألا تؤدي هذه الطلبات إلى عرض نتائج جديدة أو قد يتعذّر تجميعها. b/74128314

الإصدار 1.1.0-alpha1

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

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

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

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

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