تم إصدار الإصدار الأوّلي الأول من Room 3.0. Room 3.0 هو إصدار رئيسي يتضمّن تغييرات غير متوافقة في المكتبة، ويركّز على Kotlin Multiplatform (KMP) ويضيف إمكانية استخدام JavaScript وWebAssembly (WASM) بالإضافة إلى إمكانية الاستخدام الحالية على Android وiOS وJVM على الكمبيوتر.
في هذه المدونة، نوضّح التغييرات غير المتوافقة، والأسباب التي أدّت إلى إطلاق الإصدار 3.0 من Room، والإجراءات المختلفة التي يمكنك اتّخاذها للانتقال من الإصدار 2.0 من Room.
تغييرات قد تؤدي إلى أعطال
يتضمّن الإصدار 3.0 من Room التغييرات التالية على واجهة برمجة التطبيقات والتي قد تؤدي إلى أعطال:
- إيقاف واجهات برمجة تطبيقات SupportSQLite: يعتمد الإصدار 3.0 من Room بشكل كامل على واجهات برمجة تطبيقات برنامج التشغيل androidx.sqlite. تتوافق واجهات برمجة التطبيقات SQLiteDriver مع KMP، كما أنّ إزالة اعتماد Room على واجهة برمجة التطبيقات لنظام التشغيل Android يؤدي إلى تبسيط مساحة واجهة برمجة التطبيقات لنظام التشغيل Android لأنّه يتجنّب توفّر نظامَين خلفيَين محتملَين.
- التوقّف عن إنشاء رموز Java البرمجية: لا ينشئ Room 3.0 سوى رموز Kotlin البرمجية. يتوافق ذلك مع نموذج Kotlin أولاً المتطوّر، كما أنّه يبسّط قاعدة الرموز البرمجية وعملية التطوير، ما يتيح إجراء تكرارات أسرع.
- التركيز على KSP: سنوقف أيضًا إتاحة استخدام Java Annotation Processing (AP) وKAPT. الإصدار 3.0 من Room هو معالج KSP (معالجة رموز Kotlin البرمجية) فقط، ما يتيح معالجة أفضل لقواعد رموز Kotlin البرمجية بدون أن تكون محدودة بلغة Java.
- الكوروتينات أولاً: يستخدم الإصدار 3.0 من Room كوروتينات Kotlin، ما يجعل واجهات برمجة التطبيقات فيه متوافقة مع الكوروتينات. إنّ الروتينات المشتركة هي إطار عمل غير متزامن متوافق مع 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 أولاً
وبما أنّ Room 3.0 لم يعُد يتيح إنشاء رموز Java البرمجية، فهو يتطلّب أيضًا استخدام KSP ومترجم Kotlin حتى إذا كانت قاعدة الرموز البرمجية التي تتفاعل مع Room مكتوبة بلغة Java. ننصحك بإنشاء مشروع متعدد الوحدات يتم فيه تركيز استخدام Room، ويمكن تطبيق إضافة Kotlin Gradle وKSP بدون التأثير في بقية قاعدة الرموز البرمجية.
يتطلّب Room 3.0 أيضًا استخدام Coroutines، وبشكلٍ أكثر تحديدًا، يجب أن تكون دوال DAO قابلة للتعليق ما لم تعرض نوعًا تفاعليًا، مثل Flow. لا تسمح الإصدار 3.0 من Room بحظر دوال 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
تتيح هذه النسخة استخدام Kotlin Multiplatform مع استهداف JS وWasmJS، كما تتضمّن بعضًا من أهم التغييرات في واجهة برمجة التطبيقات. على وجه التحديد، العديد من واجهات برمجة التطبيقات في 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.
على سبيل المثال، سيكون محوّل Paging في العنصر androidx.room3:room3-paging ويُطلق عليه اسم PagingSourceDaoReturnTypeConverter. في الوقت نفسه، تتوفر أداة التحويل في LiveData في androidx.room3:room3-livedata ويُطلق عليها اسم LiveDataDaoReturnTypeConverter.
لمزيد من التفاصيل، اطّلِع على قسم "محوّلات نوع الإرجاع في DAO" ضمن ملاحظات إصدار Room 3.0.
وضع الصيانة في Room 2.x
بما أنّ عملية تطوير Room ستركز على الإصدار 3، سيدخل الإصدار الحالي 2.x من Room وضع الصيانة. وهذا يعني أنّه لن يتم تطوير أي ميزات رئيسية، ولكن سيستمر إصدار حِزم التصحيح (2.8.1 و2.8.2 وما إلى ذلك) مع إصلاحات الأخطاء وتحديثات التبعيات. يواصل الفريق العمل على هذه الميزة إلى أن يصبح Room 3 مستقرًا.
أفكار أخيرة
نحن متحمّسون جدًا بشأن إمكانات Room 3.0 والفرص التي تتيحها لمنظومة Kotlin المتكاملة. يُرجى متابعتنا لمعرفة آخر الأخبار بينما نواصل هذه الرحلة.
-
أخبار المنتجاتعلى Google Play، نعمل باستمرار على توسيع منصة الاشتراكات لمساعدتك في تعزيز النمو والتكيّف مع نماذج الأعمال الجديدة وتلبية احتياجات المستخدمين أينما كانوا.
Sheenam Mittal • مدّة القراءة: 4 دقائق -
أخبار المنتجاتفي العام الماضي، أصبح بإمكان "استوديو Android" استخدام أي نموذج للذكاء الاصطناعي. واليوم، نتّخذ الخطوة التالية من خلال توفير إمكانية اختيار وكلاء الترميز.
Matthew Warner • مدّة القراءة: 3 دقائق -
أخبار المنتجاتتقدّم Googlebook فئة جديدة من أجهزة الكمبيوتر المحمول المستندة إلى أساس Android المشترك. تجمع أجهزة Chromebook Plus بين سهولة استخدام الأجهزة الجوّالة وقوة أجهزة الكمبيوتر المكتبي، وهي مزوّدة بأجهزة عالية الأداء من شركاء مثل HP وDell وLenovo وAcer وAsus.
Fahd Imtiaz, Loryn Hairston • مدّة القراءة: 4 دقائق
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.