تم إطلاق الإصدار الأوّلي الأول من Room 3.0. الإصدار 3.0 من Room هو إصدار رئيسي يتضمّن تغييرات غير متوافقة مع الإصدارات السابقة من المكتبة، ويركّز على Kotlin Multiplatform (KMP) ويتيح استخدام JavaScript وWebAssembly (WASM) بالإضافة إلى إمكانية استخدامه على Android وiOS وJVM.
في هذه المدوّنة، نوضّح التغييرات غير المتوافقة، والأسباب التي أدّت إلى إطلاق الإصدار 3.0 من Room، والإجراءات المختلفة التي يمكنك اتّخاذها للانتقال من الإصدار 2.0.
التغييرات التي قد تؤدي إلى أعطال
يتضمّن الإصدار 3.0 من Room التغييرات التالية في واجهة برمجة التطبيقات التي قد تؤدي إلى أعطال:
- إيقاف واجهات برمجة تطبيقات SupportSQLite: يعتمد الإصدار 3.0 من Room بشكل كامل على واجهات برمجة التطبيقات لبرنامج التشغيل androidx.sqlite. تتوافق واجهات برمجة التطبيقات SQLiteDriver مع KMP، كما أنّ إزالة اعتماد Room على واجهة برمجة تطبيقات Android يسهّل مساحة واجهة برمجة التطبيقات لنظام التشغيل Android لأنّه يتجنّب وجود نظامَين خلفيَين محتملَين.
- التوقّف عن إنشاء رموز Java البرمجية: لا ينشئ Room 3.0 سوى رموز Kotlin البرمجية. يتوافق ذلك مع نموذج Kotlin-first المتطوّر، كما أنّه يبسّط قاعدة الرموز البرمجية وعملية التطوير، ما يتيح إجراء تكرارات أسرع.
- التركيز على KSP: سنوقف أيضًا إتاحة استخدام Java Annotation Processing (AP) وKAPT. الإصدار 3.0 من Room هو معالج KSP (معالجة رموز Kotlin البرمجية) فقط، ما يتيح معالجة أفضل لقواعد رموز Kotlin البرمجية بدون أن تكون محدودة بلغة Java.
- الكوروتينات أولاً: يتوافق الإصدار 3.0 من Room مع كوروتينات Kotlin، ما يجعل واجهات برمجة التطبيقات فيه متوافقة مع الكوروتينات أولاً. إنّ Coroutines هو إطار عمل غير متزامن متوافق مع KMP، ويُعدّ جعل Room غير متزامن بطبيعته شرطًا أساسيًا لتوفير الدعم لمنصات الويب.
حزمة جديدة
لمنع حدوث مشاكل في التوافق مع عمليات التنفيذ الحالية للإصدار 2.x من Room ومع المكتبات التي تتضمّن تبعيات متعدّية إلى Room (مثل WorkManager)، يتوفّر الإصدار 3.0 من Room في حزمة جديدة، ما يعني أنّه يتضمّن أيضًا معرّفات مجموعة Maven ومعرّفات عناصر جديدة. على سبيل المثال، أصبح androidx.room:room-runtime هو androidx.room3:room3-runtime، وسيتم الآن العثور على الصفوف مثل androidx.room.RoomDatabase في androidx.room3.RoomDatabase.
Kotlin وCoroutines أولاً
وبما أنّه لم يعُد يتم إنشاء رموز Java، يتطلّب الإصدار 3.0 من Room أيضًا استخدام KSP ومترجم Kotlin حتى إذا كانت قاعدة الرموز البرمجية التي تتفاعل مع Room مكتوبة بلغة Java. يُنصح بإنشاء مشروع متعدد الوحدات يتم فيه تركيز استخدام Room، ويمكن تطبيق إضافة Kotlin Gradle وKSP بدون التأثير في بقية قاعدة الرموز البرمجية.
يتطلّب الإصدار 3.0 من Room أيضًا استخدام Coroutines، وبشكلٍ أكثر تحديدًا، يجب أن تكون دوال DAO قابلة للتعليق ما لم تعرض نوعًا تفاعليًا، مثل Flow. لا يسمح Room 3.0 بحظر دوال DAO. يمكنك الاطّلاع على مستندات "كوروتين" على Android حول كيفية بدء دمج "كوروتين" في تطبيقك.
نقل البيانات إلى واجهات برمجة تطبيقات SQLiteDriver
مع التوقّف عن استخدام SupportSQLite، ستحتاج التطبيقات إلى نقل البيانات إلى واجهات برمجة التطبيقات SQLiteDriver. يُعدّ نقل البيانات هذا ضروريًا للاستفادة من جميع مزايا Room 3.0، بما في ذلك السماح باستخدام مكتبة SQLite المجمَّعة من خلال BundledSQLiteDriver. يمكنك البدء في نقل البيانات إلى واجهات برمجة التطبيقات الخاصة بمشغّلات قواعد البيانات اليوم باستخدام Room 2.7.0 والإصدارات الأحدث. وننصحك بشدة بتجنُّب أي استخدام آخر لمكتبة SupportSQLite. في حال نقل عمليات دمج Room إلى واجهات برمجة تطبيقات SQLiteDriver، ستكون عملية الانتقال إلى الإصدار 3.0 من Room أسهل لأنّ تغيير الحزمة يتضمّن في الغالب تعديل مراجع الرموز (عمليات الاستيراد) وقد يتطلّب إجراء تغييرات بسيطة في مواقع الاستدعاء.
للحصول على نظرة عامة موجزة حول واجهات برمجة التطبيقات SQLiteDriver، يُرجى الاطّلاع على مستندات واجهات برمجة التطبيقات SQLiteDriver.
لمزيد من التفاصيل حول كيفية نقل Room لاستخدام واجهات برمجة التطبيقات SQLiteDriver، اطّلِع على المستندات الرسمية لنقل البيانات من SupportSQLite.
برنامج تضمين Room SupportSQLite
ندرك أنّ إزالة SupportSQLite بالكامل قد لا يكون ممكنًا على الفور لجميع المشاريع. لتسهيل عملية الانتقال هذه، قدّم الإصدار 2.8.0 من Room، وهو أحدث إصدار من سلسلة Room 2.0، عنصرًا جديدًا يُسمى androidx.room:room-sqlite-wrapper. يوفّر هذا العنصر واجهة برمجة تطبيقات متوافقة تتيح لك تحويل RoomDatabase إلى SupportSQLiteDatabase، حتى إذا تم إيقاف واجهات برمجة تطبيقات SupportSQLite في قاعدة البيانات بسبب تثبيت SQLiteDriver. يوفّر ذلك حلاً مؤقتًا للمطوّرين الذين يحتاجون إلى مزيد من الوقت لنقل قاعدة الرموز البرمجية بالكامل. يظل هذا العنصر موجودًا في Room 3.0 باسم androidx.room3:room3-sqlite-wrapper لتفعيل عملية نقل البيانات إلى Room 3.0 مع مواصلة إتاحة الاستخدام المهم لـ SupportSQLite.
على سبيل المثال، يمكن استبدال استدعاءات roomDatabase.openHelper.writableDatabase بـ roomDatabase.getSupportWrapper() وسيتم توفير برنامج تضمين حتى إذا تم استدعاء setDriver() في أداة إنشاء Room.
لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات room-sqlite-wrapper.
توافق Room وSQLite مع الويب
يتوافق الإصدار مع استهداف JS وWasmJS في Kotlin Multiplatform، ويتضمّن بعض أهم التغييرات في واجهة برمجة التطبيقات. على وجه التحديد، العديد من واجهات برمجة التطبيقات في Room 3.0 هي دوال تعليق لأنّ التوافق السليم مع مساحة التخزين على الويب غير متزامن. تم أيضًا تعديل واجهات برمجة التطبيقات SQLiteDriver لتتوافق مع الويب، ويتوفّر برنامج تشغيل جديد غير متزامن على الويب في androidx.sqlite:sqlite-web. وهو برنامج تشغيل مستند إلى Web Worker يتيح إمكانية الاحتفاظ بقاعدة البيانات في نظام الملفات الخاص بالمصدر (OPFS).
لمزيد من التفاصيل حول كيفية إعداد Room for the Web، يُرجى الاطّلاع على ملاحظات إصدار Room 3.0.
أنواع العائدات المخصّصة من DAO
يتيح الإصدار 3.0 من Room إمكانية إضافة عمليات دمج مخصّصة إلى Room، على غرار RxJava وPaging. من خلال واجهة برمجة تطبيقات جديدة للتعليقات التوضيحية تُسمى @DaoReturnTypeConverter، يمكنك إنشاء عملية الدمج الخاصة بك بحيث يصبح الرمز البرمجي الذي تم إنشاؤه في Room متاحًا في وقت التشغيل، ما يتيح للدوال @Dao الحصول على أنواع الإرجاع المخصّصة بدون الحاجة إلى انتظار فريق Room لإضافة الدعم. يتم نقل عمليات الدمج الحالية لاستخدام هذه الوظيفة، وبالتالي ستتطلّب الآن من المستخدمين الذين يعتمدون عليها إضافة المحوّلات إلى تعريفات @Database أو @Dao.
على سبيل المثال، سيكون محوّل التصفّح على صفحات متعدّدة في العنصر androidx.room3:room3-paging واسمه PagingSourceDaoReturnTypeConverter. في الوقت الحالي، يتوفّر المحوّل LiveData في androidx.room3:room3-livedata ويُطلق عليه اسم LiveDataDaoReturnTypeConverter.
لمزيد من التفاصيل، اطّلِع على قسم "محوّلات نوع الإرجاع في DAO" ضمن ملاحظات الإصدار 3.0 من Room.
وضع الصيانة في Room 2.x
بما أنّ عملية تطوير Room ستركز على الإصدار 3، سيدخل الإصدار الحالي 2.x من Room وضع الصيانة. وهذا يعني أنّه لن يتم تطوير أي ميزات رئيسية، ولكن سيظل يتم إصدار حِزم تصحيح (2.8.1 و2.8.2 وما إلى ذلك) تتضمّن إصلاحات للأخطاء وتحديثات للتبعيات. يواصل الفريق العمل على ذلك إلى أن يصبح الإصدار 3 من Room مستقرًا.
أفكار أخيرة
نحن متحمّسون جدًا بشأن إمكانات Room 3.0 والفرص التي يتيحها لمنظومة Kotlin المتكاملة. يُرجى متابعتنا لمعرفة المزيد من الأخبار بينما نواصل هذه الرحلة.
متابعة القراءة
-
أخبار المنتجات
يقدّم مؤتمر Google I/O كل عام إعلانات ومراجع جديدة في جميع الأنظمة المتكاملة والمنتجات، بما في ذلك تطوير تطبيقات Android. مع توجّه التطوير نحو الذكاء الاصطناعي والأدوات المستندة إلى وكيل، وسّعنا عروضنا لتقديم الدعم لك بشكل أفضل، بغض النظر عن الطريقة التي تختارها لتطوير تطبيقات Android.
Simona Milanovic • مدة القراءة: دقيقتان
-
أخبار المنتجات
في مؤتمر Google I/O لعام 2026، عرضنا كيف يمكن لأحدث التطورات في نظام Android المتكامل أن تساعدك في تحسين جودة تطبيقك إلى أقصى حدّ مع زيادة كفاءة التطوير.
Ataul Munim • مدة القراءة: 3 دقائق
-
أخبار المنتجات
في مؤتمر Google I/O 2026، أعلنّا عن تحوّل Android من نظام تشغيل إلى نظام ذكي، وأوضحنا كيف يمكنك إنشاء تجارب ذكية بشكلٍ مدمج مع النظام والاستفادة من إمكانات الذكاء الاصطناعي من Google في تطبيقاتك.
Jingyu Shi • مدة القراءة: دقيقتان
البقاء على اطّلاع على آخر التحديثات
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.