مراحل نشاط "مراسلة Firebase السحابية"

يحتوي إصدار إطار عمل Android على عدة "مصفوفات توافق إطار العمل" (FCM)، واحدة لكل إصدار مستهدف من FCM يمكن ترقيته، وتحدّد هذه المصفوفات ما يمكن أن يستخدمه إطار العمل ومتطلبات الإصدار المستهدف من FCM. كجزء من دورة حياة FCM، توقف منصة Android نهائيًا عن استخدام طبقات تجريد الأجهزة (HAL) المستندة إلى HIDL وتزيلها، ثم تعدّل ملفات FCM لتعكس حالة إصدار HAL.

لتفعيل حِزم OTA التي تتضمّن إطار العمل فقط في الأنظمة الأساسية الخاصة بالشركاء الذين يوسّعون نطاق واجهات المورّدين، يجب أيضًا إيقاف نهائيًا وإزالة حِزم HAL المستندة إلى HIDL باستخدام الطرق نفسها.

المصطلحات

مصفوفة توافق إطار العمل (FCM)
ملف XML يحدّد متطلبات إطار العمل بشأن عمليات التنفيذ المتوافقة مع البائعين. يتم إصدار مصفوفة التوافق، ويتم تجميد إصدار جديد مع كل إصدار من إطار العمل. يحتوي كل إصدار من إطار العمل على عدة رسائل FCM.
إصدارات FCM للمنصّة (SF)
مجموعة جميع إصدارات FCM في إصدار إطار عمل. يمكن أن يعمل إطار العمل مع أي عملية تنفيذ من المورّد تستوفي أحد هذه النماذج الشائعة.
إصدار FCM (F)
أعلى إصدار بين جميع رسائل FCM في إصدار إطار عمل
إصدار FCM المستهدف (V)
إصدار FCM المستهدف (من SF)، والذي تم تحديده بشكل صريح في بيان الجهاز، والذي يفي به تنفيذ المورّد. يجب إنشاء عملية تنفيذ المورّد استنادًا إلى واجهة برمجة تطبيقات HAL المنشورة، على الرغم من أنّه يمكنها الإعلان عن إصدارات أحدث من واجهة HAL في بيان الجهاز.
إصدار طبقة تجريد الأجهزة (HAL)
يتّبع إصدار HAL التنسيق foo@x.y، حيث يمثّل foo اسم HAL وx.y الإصدار المحدّد، مثلاً nfc@1.0 وkeymaster@3.0 (يتم حذف البادئة الجذرية، مثل android.hardware، في جميع أجزاء هذا المستند).
بيان الجهاز
ملفات XML التي تحدّد إصدارات HAL التي يوفّرها جانب الجهاز من واجهة المورّد، بما في ذلك صور المورّد وODM تخضع محتويات بيان الجهاز لإصدار FCM المستهدف للجهاز، ولكن يمكن أن تتضمّن قوائم ببرامج HAL أحدث من إصدار FCM المتوافق مع V.
طبقات تجريد الأجهزة (HAL)
طبقات تجريد الأجهزة (HAL) المُدرَجة (الموفّرة) في بيان الجهاز والمُدرَجة في مصفوفة توافق إطار العمل (FCM).
مصفوفة توافق الأجهزة (DCM)
ملف XML يحدّد متطلبات المورّد بشأن عمليات تنفيذ إطار العمل المتوافق. يحتوي كل جهاز على وحدة تحكّم واحدة في إدارة الأجهزة الجوّالة (DCM).
ملف بيان حزمة تطوير البرامج
ملف XML يحدّد إصدارات HAL التي يوفّرها جانب إطار العمل لواجهة المورّد، بما في ذلك صور النظام وsystem_ext والمنتج. يتم إيقاف حِزم HAL في بيان إطار العمل بشكل ديناميكي وفقًا لإصدار FCM المستهدف للجهاز.
طبقات HAL الخاصة بإطار العمل
طبقات تجريد الأجهزة (HAL) المُدرَجة على أنّها متوفّرة في ملف بيان إطار العمل والمُدرَجة في مصفوفة توافق الأجهزة (DCM).

دورة حياة "المراسلة من خلال السحابة الإلكترونية من Firebase" في قاعدة الرموز

يوضّح هذا المستند دورة حياة FCM بشكل مجرّد. للاطّلاع على البيانات الوصفية المتوافقة، يُرجى الرجوع إلى hardware/interfaces/compatibility_matrices/compatibility_matrix.<FCM>.xml حيث يمكن العثور على FCM في system/libvintf/include/vintf/Level.h.

من المتوقّع أن يكون للجهاز الذي يتم شحن إصدار Android المتوافق معه قيمة FCM أكبر من أو تساوي المستوى المكافئ. على سبيل المثال، يكون مستوى FCM على الجهاز الذي يعمل بالإصدار 11 من نظام التشغيل Android هو 5 بشكل عام، ولكن يجب أن يتضمّن المستوى 6 أو مستوى أعلى من FCM، والذي يتضمّن متطلبات إضافية مختلفة محدّدة في مصفوفات التوافق. في ما يلي المستويات المتوافقة مع نظام التشغيل Android 15:

FCM إصدار Android
5 ‫Android 11/R
6 ‫Android 12/S
7 ‫Android 13/T
8 ‫Android 14/U
202404 ‫Android 15/V

يجب أن يكون مستوى FCM هو نفسه مستوى واجهة برمجة التطبيقات الخاصة بالمورّد أو أحدث منه.

عندما يتوقف نظام التشغيل Android عن إتاحة مستوى معيّن من FCM، سيظل هذا المستوى متاحًا للأجهزة الحالية. يُسمح ضمنيًا للأجهزة التي تستهدف مستويات FCM أقل باستخدام طبقات HAL المُدرَجة في مستويات FCM الأحدث، طالما أنّها متاحة في الفرع.

التطوير في إصدار جديد من FCM

يزيد نظام التشغيل Android إصدار FCM مع كل إصدار من إطار العمل (مثل Android 8 و8.1). أثناء التطوير، يتم إنشاء compatibility_matrix.F.xml الجديد ولا يتم تغيير compatibility_matrix.f.xml الحالي (حيث f < F).

لبدء التطوير في إصدار جديد من FCM F:

  1. انسخ أحدث compatibility_matrix.<F-1>.xml إلى compatibility_matrix.F.xml.
  2. عدِّل السمة level في الملف إلى F.
  3. أضِف قواعد الإصدار المناسبة لتثبيت مصفوفة التوافق هذه على الجهاز.

تقديم طبقة تجريد الأجهزة (HAL) جديدة

أثناء عملية التطوير، عند إضافة طبقة تجريد أجهزة جديدة (مثل Wi-Fi وNFC وما إلى ذلك) إلى نظام التشغيل Android على إصدار FCM الحالي F، أضِف طبقة تجريد الأجهزة إلى compatibility_matrix.F.xml.

على سبيل المثال، قدّم الإصدار 8.1 من نظام التشغيل Android cas@1.0. يمكن للأجهزة التي تعمل بالإصدار 8.1 من نظام التشغيل Android تنفيذ طبقة HAL هذه، لذا تمت إضافة الإدخال التالي إلى compatibility_matrix.F.xml (الذي كان يُطلق عليه اسم compatibility_matrix.current.xml مؤقتًا أثناء تطوير هذا الإصدار):

<hal format="hidl">
    <name>android.hardware.cas</name>
    <version>1.0</version>
    <interface>
        <name>IMediaCasService</name>
        <instance>default</instance>
    </interface>
</hal>

ترقية طبقة تجريد الأجهزة (HAL) (إصدار ثانوي)

يتم احتساب إصدارات AIDL HAL كإصدارات ثانوية من HAL. تحتوي إصدارات واجهة HIDL على إصدارات major.minor مثل 1.2.

أثناء عملية التطوير، عندما تتم ترقية إصدار AIDL HAL من 2 إلى 3 في إصدار FCM الحالي F، تتم إضافة الإصدار الجديد إلى إدخال HAL في compatibility_matrix.F.xml. يقبل حقل الإصدار في إدخال HAL نطاقات مثل 2-3.

على سبيل المثال، تم تقديم F في Android FCM foo@3 كترقية طفيفة لإصدار HAL. يتم استخدام الإصدار الأقدم، foo@2، للأجهزة التي تستهدف إصدارات FCM الأقدم، بينما يمكن استخدام الإصدار الأحدث، foo@3، للأجهزة التي تستهدف الإصدار F من FCM على Android. يبدو الإدخال في رسائل FCM القديمة قبل الإصدار 2 على النحو التالي:

<hal format="aidl">
    <name>foo</name>
    <version>2</version>
    <interface>
        <name>IFoo</name>
        <instance>default</instance>
    </interface>
</hal>

تم نسخ هذه الإدخال إلى compatibility_matrix.F.xml وتعديله ليتوافق مع الإصدار 3 على النحو التالي:

<hal format="aidl">
    <name>foo</name>
    <version>2-3</version>
    <interface>
        <name>IFoo</name>
        <instance>default</instance>
    </interface>
</hal>

ترقية طبقة تجريد الأجهزة (HAL) (إصدار رئيسي)

أثناء عملية التطوير، عندما يتم ترقية إصدار رئيسي من HAL إلى الإصدار الحالي من FCM ‏(Version F)، تتم إضافة الإصدار الرئيسي الجديد x.0 إلى compatibility_matrix.F.xml مع الإعدادات التالية:

  • الإصدار x.0 فقط، إذا كان يجب أن يتم إطلاق الأجهزة التي يتم شحنها مع V = F باستخدام x.0.
  • مع الإصدارات الرئيسية القديمة في العلامة <hal> نفسها، إذا كانت الأجهزة التي يتم شحنها مع V = F يمكنها التشغيل بإصدار رئيسي قديم.

على سبيل المثال، يقدّم إصدار FCM F foo@2.0 كترقية للإصدار الرئيسي من HAL 1.0، ويوقف نهائيًا HAL 1.0. يتم استخدام الإصدار الأقدم، foo@1.0، للأجهزة التي تستهدف إصدارات سابقة من FCM. يجب أن توفّر الأجهزة التي تستهدف الإصدار F من FCM الإصدار 2.0 الجديد إذا كانت توفّر طبقة تجريد الأجهزة (HAL). في هذا المثال، تحتوي إصدارات FCM السابقة على الإدخال التالي:

<hal format="hidl">
    <name>foo</name>
    <version>1.0</version>;
    <interface>
        <name>IFoo</name>
        <instance>default</instance>
    </interface>
</hal>

انسخ هذا الإدخال إلى compatibility_matrix.F.xml وعدِّله كما يلي:

<hal format="hidl">
    <name>foo</name>
    <version>2.0</version>
    <interface>
        <name>IFoo</name>
        <instance>default</instance>
    </interface>
</hal>

التقييدات:

  • بما أنّ الإصدار 1.0 من طبقة تجريد الأجهزة (HAL) غير متوفّر في compatibility_matrix.F.xml، يجب ألا توفّر الأجهزة التي تستهدف الإصدار F من FCM الإصدار 1.0 من طبقة تجريد الأجهزة (HAL) (لأنّ هذا الإصدار من طبقة تجريد الأجهزة (HAL) يُعدّ قديمًا).
  • بما أنّ الإصدار 1.0 من طبقة تجريد الأجهزة (HAL) متوفّر في إصدارات FCM القديمة، سيظل بإمكان إطار العمل العمل مع الإصدار 1.0 من طبقة تجريد الأجهزة، وبالتالي سيكون متوافقًا مع الأجهزة القديمة التي تستهدف إصدارات FCM القديمة.

إصدارات جديدة من "مراسلة Firebase السحابية"

تتولّى Google وحدها عملية طرح إصدار من FCM على قسم النظام كجزء من إصدار AOSP، وتشمل هذه العملية الخطوات التالية:

  1. تأكَّد من أنّ compatibility_matrix.F.xml يتضمّن السمة level="F".
  2. تأكَّد من إمكانية إنشاء جميع الأجهزة وتشغيلها.
  3. تحديث اختبارات VTS لضمان أنّ الأجهزة التي يتم إطلاقها باستخدام أحدث إطار عمل (استنادًا إلى مستوى واجهة برمجة التطبيقات Shipping) تتضمّن الإصدار V >= F من FCM المستهدف.
  4. انشر الملف في "مشروع Android مفتوح المصدر" (AOSP).

على سبيل المثال، تضمن اختبارات VTS أنّ الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android تتضمّن الإصدار 3 من FCM أو إصدارًا أحدث.

بالإضافة إلى ذلك، قد تتضمّن رسائل FCM الخاصة بالمنتج وsystem_ext أيضًا متطلبات لكل إصدار من إصدارات FCM على المنصات. يتم إصدار إصدارات FCM على أقسام المنتج وsystem_ext من قِبل مالك هذه الصور، على التوالي. يجب أن تتطابق أرقام إصدارات FCM على قسمَي المنتج وsystem_ext مع أرقام الإصدارات على قسم النظام. على غرار إصدارات FCM في قسم النظام، تعكس مصفوفة التوافق في إصدار FCM F في أقسام المنتج وsystem_ext المتطلبات على جهاز بإصدار FCM F المستهدف.

إيقاف إصدار HAL

إيقاف إصدار HAL نهائيًا هو قرار يتخذه المطوّر (أي أنّ Google تتخذ القرار بشأن حِزم HAL في AOSP). وقد يحدث ذلك عند إصدار نسخة HAL أعلى (سواء كانت ثانوية أو رئيسية).

إيقاف HAL لجهاز نهائيًا

عند إيقاف الإصدار foo@x.y من طبقة تجريد الأجهزة (HAL) لجهاز معيّن في الإصدار F من "المراسلة عبر السحابة الإلكترونية من Firebase"، يعني ذلك أنّه يجب ألا يتضمّن أي جهاز يتم إطلاقه بالإصدار V = F أو إصدار أحدث من "المراسلة عبر السحابة الإلكترونية من Firebase" الإصدار foo أو أي إصدار أقدم من x.y.x.y لا يزال إطار العمل يتيح استخدام إصدار قديم من طبقة HAL لترقية الأجهزة.

عند طرح الإصدار F من FCM، سيتم اعتبار الإصدار foo@x.y من طبقة تجريد الأجهزة (HAL) إصدارًا قديمًا إذا لم يتم ذكر إصدار طبقة تجريد الأجهزة (HAL) تحديدًا في أحدث إصدار من FCM للإصدار المستهدف V = F من FCM. بالنسبة إلى الأجهزة التي يتم إطلاقها مع V = F، يجب استيفاء أحد الشروط التالية:

  • يتطلّب إطار العمل إصدارًا أحدث (رئيسيًا أو ثانويًا).
  • لم يعُد الإطار يتطلّب طبقة تجريد الأجهزة.

على سبيل المثال، في الإصدار 9 من نظام التشغيل Android، تم تقديم health@2.0 كترقية رئيسية للإصدار 1.0 من طبقة HAL. تمت إزالة health@1.0 من compatibility_matrix.3.xml ولكنّه متوفّر في compatibility_matrix.legacy.xml و compatibility_matrix.1.xml و compatibility_matrix.2.xml. وبالتالي، تُعتبر السمة health@1.0 متوقفة نهائيًا.

إيقاف طبقة تجريد الأجهزة (HAL) لإطار عمل نهائيًا

عند إيقاف إحدى طبقات HAL foo@x.y في إطار العمل نهائيًا في الإصدار F من FCM، يعني ذلك أنّه يجب ألا يتوقّع أي جهاز يتم إطلاقه بالإصدار V = F أو إصدار أحدث من FCM أن يوفّر إطار العمل foo في الإصدار x.y أو أي إصدار أقدم من x.y. لا يزال إطار العمل يوفّر إصدارًا قديمًا من طبقة تجريد الأجهزة (HAL) لترقية الأجهزة.

عند طرح الإصدار F من FCM، يُعد الإصدار foo@x.y من HAL قديمًا إذا كان ملف بيان إطار العمل يحدّد max-level="F - 1" للإصدار foo@x.y. بالنسبة إلى الأجهزة التي تعمل بالإصدار V = F، لا يوفّر إطار العمل foo@x.y HAL. يجب ألا تتضمّن مصفوفة توافق الأجهزة التي يتم إطلاقها مع V = F وحدات HAL لإطار العمل تتضمّن max-level < V.

على سبيل المثال، في Android 12، تم إيقاف schedulerservice@1.0 نهائيًا. تم ضبط السمة max-level على 5، وهو إصدار "المراسلة عبر السحابة الإلكترونية من Firebase" الذي تم طرحه في Android 11. اطّلِع على ملف بيان إطار عمل Android 12.

إزالة التوافق مع إصدارات FCM المستهدَفة

عندما ينخفض عدد الأجهزة النشطة التي تستخدم إصدارًا معيّنًا من المراسلة عبر السحابة الإلكترونية من Firebase V إلى ما دون حد معيّن، تتم إزالة إصدار المراسلة عبر السحابة الإلكترونية من Firebase المستهدَف من المجموعة SF لإصدار إطار العمل التالي. يتم ذلك من خلال اتّباع الخطوتَين التاليتَين:

  1. إزالة compatibility_matrix.V.xml من قواعد الإنشاء (حتى لا يتم تثبيته على صورة النظام)، وحذف أي رمز برمجي نفَّذ الإمكانات التي تمت إزالتها أو اعتمد عليها

  2. إزالة حِزم HAL للإطار التي تكون قيمتها max-level أقل من أو تساوي V من ملف بيان الإطار، وحذف أي رمز برمجي ينفّذ حِزم HAL للإطار التي تمت إزالتها

لا يمكن ترقية الأجهزة التي يتضمّن إصدارها المستهدَف من FCM إصدارًا خارج نطاق SF لإصدار معيّن من إطار العمل.

إزالة طبقات HAL التي تم إيقافها نهائيًا

عند إزالة إصدار من FCM، لن تكون بعض واجهات HAL أو إصدارات واجهات HAL متوفّرة في أي من إصدارات FCM. وهذا يعني أنّ Android لم يعُد يتيح استخدامها على الإطلاق، حتى عند ترقية الأجهزة.

بعد إيقاف إتاحة طبقة تجريد الأجهزة (HAL)، يزيل المطوّرون الإشارات إلى واجهة طبقة تجريد الأجهزة هذه من Android، بما في ذلك رمز العميل في إطار العمل والتنفيذ التلقائي وحالات اختبار VTS.

إذا لم تكن هناك أي طبقات HAL متوافقة موروثة من طبقة HAL التي تتم إزالتها، يمكن إزالة تعريف طبقة HAL نفسه باتّخاذ بضع خطوات إضافية.

  1. أزِل تعريف واجهة HAL من رمز المصدر. ويشمل ذلك ملفات *.aidl ووحدة Android.bp aidl_interface.
  2. إذا كان HIDL، أزِل الرمز HASH من hardware/interfaces/current.txt.
  3. إذا كان AIDL، أزِل الدليل aidl_api الذي يحتوي على ملفات AIDL المجمدة.
  4. أزِل الواجهة من hardware/interfaces/compatibility_matrices/exclude/fcm_exclude.cpp.

حالة إصدار HAL

توضّح الأقسام التالية (حسب التسلسل الزمني) الحالات المحتملة لإصدار HAL.

لم تُطرح

بالنسبة إلى طبقات تجريد الأجهزة (HAL)، إذا لم يكن إصدار طبقة تجريد الأجهزة (HAL) متوفّرًا في أي من مصفوفات التوافق العامة والثابتة، يُعد هذا الإصدار غير متاح وقد يكون قيد التطوير. ويشمل ذلك إصدارات طبقة تجريد الأجهزة (HAL) المتوفّرة في compatibility_matrix.F.xml فقط. أمثلة:

  • أثناء تطوير الإصدار 9 من نظام التشغيل Android، تم اعتبار health@2.0 HAL إصدارًا غير نهائي من HAL، ولم يكن متاحًا إلا في compatibility_matrix.3.xml.
  • لا يتوفّر teleportation@1.0 HAL في أي من مصفوفات التوافق التي تم إصدارها، ويُعد أيضًا من واجهات HAL التي لم يتم إصدارها.

بالنسبة إلى حِزم HAL الخاصة بإطار العمل، إذا كان إصدار حزمة HAL متوفّرًا فقط في بيان إطار العمل الخاص بفرع تطوير غير ذي صلة، يُعد هذا الإصدار غير متاح.

الإصدار الحالي

بالنسبة إلى طبقات تجريد الأجهزة (HAL)، إذا كان إصدار طبقة تجريد الأجهزة (HAL) متوفّرًا في أي مصفوفة توافق عامة وثابتة، يتم إصداره. على سبيل المثال، بعد تجميد الإصدار 3 من FCM ونشره في مشروع AOSP، يتم اعتبار health@2.0 HAL إصدارًا حاليًا من HAL.

إذا كان إصدار HAL متوفّرًا في مصفوفة توافق عامة وثابتة تتضمّن أعلى إصدار من FCM، يكون إصدار HAL هو الإصدار الحالي (أي غير متوقّف نهائيًا). على سبيل المثال، يتم أيضًا اعتبار إصدارات HAL الحالية (مثل nfc@1.0 التي تم طرحها في compatibility_matrix.legacy.xml) التي لا تزال متوفرة في compatibility_matrix.3.xml إصدارات HAL حالية وتم طرحها.

بالنسبة إلى طبقات HAL الخاصة بالإطار، إذا كان إصدار HAL متوفّرًا في بيان الإطار الخاص بأحدث فرع تم إصداره بدون السمة max-level أو (في حالات نادرة) مع السمة max-level التي تساوي أو تزيد عن إصدار FCM الذي تم إصداره في هذا الفرع، يُعد إصدار HAL هذا إصدارًا حاليًا تم إصداره. على سبيل المثال، تم إصدار displayservice طبقة HAL وهي متوافقة مع الإصدار 12 من نظام التشغيل Android، كما هو محدّد في بيان إطار عمل Android 12.

تم إصداره ولكن تم إيقافه نهائيًا

بالنسبة إلى طبقات تجريد الأجهزة (HAL)، يتم إيقاف إصدار طبقة تجريد الأجهزة نهائيًا إذا تم استيفاء جميع الشروط التالية فقط:

  • تم إصداره.
  • لا يتضمّن مصفوفة التوافق العامة والثابتة التي تتضمّن أعلى إصدار من FCM.
  • وهي متوفّرة في مصفوفة توافق عامة وثابتة لا يزال إطار العمل يتيح استخدامها.

أمثلة:

وبالتالي، فإنّ power@1.0 هو الإصدار الحالي، ولكن لم يتم إيقافه نهائيًا في Android 9.

بالنسبة إلى حِزم HAL الخاصة بإطار العمل، إذا كان إصدار حزمة HAL متوفّرًا في بيان إطار العمل الخاص بأحدث فرع تم إصداره مع السمة max-level التي تقل عن إصدار FCM في هذا الفرع، يُعد إصدار حزمة HAL هذا متوفّرًا ولكنّه متوقف نهائيًا. على سبيل المثال، تم إصدار schedulerservice HAL ولكن تم إيقافه نهائيًا في Android 12، كما هو موضّح في بيان إطار عمل Android 12.

مُزال

بالنسبة إلى طبقات تجريد الأجهزة (HAL)، تتم إزالة إصدار طبقة تجريد الأجهزة (HAL) إذا وفقط إذا تحققت الشروط التالية:

  • تم إصداره سابقًا.
  • لا يتوفّر في أي مصفوفة توافق علنية وثابتة يتيحها إطار العمل.

يتم الاحتفاظ في قاعدة الرموز بمصفوفات التوافق المتاحة للجميع والمجمّدة وغير المتوافقة مع إطار العمل، وذلك لتحديد مجموعة إصدارات HAL التي تمت إزالتها، ما يتيح كتابة اختبارات VTS لضمان عدم توفّر وحدات HAL التي تمت إزالتها على الأجهزة الجديدة.

بالنسبة إلى حِزم HAL الخاصة بإطار العمل، تتم إزالة إصدار حزمة HAL إذا تم استيفاء الشروط التالية فقط:

  • تم إصداره سابقًا.
  • وهو غير مضمّن في أي بيان إطار للفرع الأخير الذي تم إصداره.

رسائل FCM القديمة

‫Target FCM Version legacy هي قيمة خاصة بجميع الأجهزة التي لا تتوافق مع Treble. تسرد إصدار FCM القديم، compatibility_matrix.legacy.xml، متطلبات إطار العمل على الأجهزة القديمة (أي الأجهزة التي تم طرحها قبل Android 8.0).

إذا كان هذا الملف متوفّرًا لإصدار F من FCM، يمكن ترقية أي جهاز غير متوافق مع Treble إلى الإصدار F، شرط أن يكون بيان الجهاز متوافقًا مع هذا الملف. تتم إزالة هذه الخدمة باتّباع الإجراء نفسه المتّبع مع إصدارات FCM الأخرى المستهدَفة (تتم إزالتها بعد أن ينخفض عدد الأجهزة النشطة التي تعمل بإصدارات أقدم من 8.0 إلى ما دون حدّ معيّن).

إصدارات FCM التي تم طرحها

يمكنك الاطّلاع على قائمة بإصدارات "المراسلة عبر السحابة الإلكترونية من Firebase" التي تم طرحها ضمن hardware/interfaces/compatibility_matrices.

للعثور على إصدار FCM الذي تم إصداره مع إصدار Android معيّن، راجِع Level.h.