يحتوي إصدار إطار عمل Android على عدة "مصفوفات توافق إطار العمل" (FCM)، واحدة لكل إصدار مستهدَف من FCM قابل للترقية، تحدّد ما يمكن لإطار العمل استخدامه ومتطلبات الإصدار المستهدَف من FCM. كجزء من دورة حياة FCM ، يوقف Android استخدام واجهات HIDL HAL ويزيلها، ثم يعدّل ملفات FCM لتعكس حالة إصدار HAL.
لتمكين عمليات التحديث عبر الأثير (OTA) الخاصة بإطار العمل فقط في الأنظمة المتكاملة الخاصة بالشركاء الذين يوسّعون واجهات المورّدين، يجب أيضًا إيقاف استخدام واجهات HIDL HAL وإزالتها باستخدام الطرق نفسها.
المصطلحات
- مصفوفة توافق إطار العمل (FCM)
- ملف XML يحدّد متطلبات إطار العمل في عمليات تنفيذ المورّدين المتوافقة. يتم تحديد إصدار مصفوفة التوافق، ويتم تجميد إصدار جديد لكل إصدار من إطار العمل. يحتوي كل إصدار من إطار العمل على عدة مصفوفات توافق إطار العمل.
- إصدارات FCM للنظام الأساسي (SF)
- مجموعة جميع إصدارات FCM في إصدار إطار عمل. يمكن أن يعمل إطار العمل مع أي عملية تنفيذ من المورّد تستوفي أحد إصدارات FCM هذه.
- إصدار FCM (F)
- أعلى إصدار بين جميع إصدارات FCM في إصدار إطار عمل.
- الإصدار المستهدَف من FCM (V)
- الإصدار المستهدَف من FCM (من SF)، الذي يتم الإعلان عنه بشكل صريح في بيان الجهاز ، والذي تستوفيه عملية تنفيذ من المورّد. يجب إنشاء عملية تنفيذ من المورّد استنادًا إلى إصدار FCM منشور، على الرغم من أنّه قد يعلن عن إصدارات أحدث من HAL في بيان الجهاز.
- إصدار HAL
- يتخذ إصدار HAL التنسيق
foo@x.y، حيثfooهو اسم HAL وx.yهو الإصدار المحدد، مثلاًnfc@1.0وkeymaster@3.0(يتم حذف البادئة الجذرية، مثلاًandroid.hardware، في كل أنحاء هذا المستند.) - بيان الجهاز
- ملفات XML تحدّد إصدارات HAL التي يوفّرها جانب الجهاز من واجهة المورّد، بما في ذلك صور المورّد وODM. تخضع محتويات بيان الجهاز للإصدار المستهدَف من FCM للجهاز، ولكن يمكن أن تسرد واجهات HAL الأحدث تمامًا مقارنةً بـ FC المقابل لـ V.
- واجهات HAL للجهاز
- واجهات HAL المدرَجة (المقدَّمة) في بيان الجهاز والمدرَجة في مصفوفة توافق إطار العمل (FCM).
- مصفوفة توافق الجهاز (DCM)
- ملف XML يحدّد متطلبات المورّد في عمليات تنفيذ إطار العمل المتوافقة. يحتوي كل جهاز على مصفوفة توافق جهاز واحدة.
- بيان إطار العمل
- ملف XML يحدّد إصدارات HAL التي يوفّرها جانب إطار العمل من واجهة المورّد، بما في ذلك صور النظام وsystem_ext والمنتج. يتم إيقاف واجهات HAL في بيان إطار العمل بشكل ديناميكي وفقًا للإصدار المستهدَف من FCM للجهاز.
- واجهات HAL لإطار العمل
- واجهات HAL المدرَجة على أنّها متوفّرة في بيان إطار العمل والمدرَجة في مصفوفة توافق الجهاز (DCM).
دورة حياة FCM في قاعدة الرموز
يصف هذا المستند دورة حياة FCM بشكل مجرّد. للاطّلاع على البيانات المتاحة، يُرجى الرجوع إلى
hardware/interfaces/compatibility_matrices/compatibility_matrix.<FCM>.xml
حيث يمكن العثور على FCM في
system/libvintf/include/vintf/Level.h.
من المتوقّع أن يكون للجهاز الذي يتم شحنه بنسخة إصدار Android المقابلة قيمة مراسلة Firebase السحابية أكبر من المستوى المكافئ أو تساويه. على سبيل المثال، قد يكون للجهاز الذي يتم شحنه بنظام التشغيل Android 12 المستوى 6 من FCM بشكل عام، ولكن يمكن أن ينفّذ المستوى 7 من FCM أو مستوى أعلى، ما يغيّر سلوك Android ويفرض استخدام واجهات برمجة تطبيقات أحدث من المورّد كما هو محدّد في مصفوفات التوافق. المستويات المتوافقة مع Android 16 هي:
| FCM | إصدار Android |
|---|---|
| 6 | Android 12/S |
| 7 | Android 13/T |
| 8 | Android 14/U |
| 202404 | Android 15/V |
| 202504 | Android 16/B |
يكون مستوى FCM مساويًا لمستوى واجهة برمجة تطبيقات المورّد أو أحدث من هذا المستوى.
عند الإعلان عن مشروع Treble، تم إنشاء صور نظام Android لتكون متوافقة مع الإصدارات الثلاثة السابقة من عمليات تنفيذ المورّدين (أربعة إصدارات إجمالاً). لدعم أعمار أطول للأجهزة، تم توسيع هذا النطاق لدعم الإصدار الحالي وستة إصدارات سابقة من FCM (سبعة إصدارات إجمالاً) للإصدار 202404 والإصدارات الأحدث.
عندما يوقف Android استخدام مستوى FCM، تظل هذه المستويات متوافقة مع الأجهزة الحالية. يُسمح ضمنًا للأجهزة التي تستهدف مستويات FCM أقل باستخدام واجهات HAL المدرَجة في مستويات FCM أعلى، طالما أنّها متوفّرة في الفرع.
التطوير في إصدار جديد من FCM
يزيد Android إصدار FCM لكل إصدار من إطار العمل (مثل Android 8 و8.1). أثناء التطوير، يتم إنشاء compatibility_matrix.F.xml الجديد ولا يتم تغيير compatibility_matrix.f.xml الحالي (حيث f < F).
لبدء التطوير في إصدار جديد من FCM هو F:
- انسخ أحدث إصدار من
compatibility_matrix.<F-1>.xmlإلىcompatibility_matrix.F.xml. - عدِّل سمة
levelفي الملف إلىF. - أضِف قواعد البناء المقابلة لتثبيت مصفوفة التوافق هذه على الجهاز.
تقديم واجهة HAL جديدة
أثناء التطوير، عند تقديم واجهة HAL جديدة (Wi-Fi أو NFC أو غير ذلك) إلى Android
في إصدار FCM الحالي F، أضِف واجهة HAL إلى compatibility_matrix.F.xml.
على سبيل المثال، قدّم Android 8.1 واجهة cas@1.0. يمكن للأجهزة التي يتم إطلاقها باستخدام Android 8.1 تنفيذ واجهة 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.
على سبيل المثال، قدّم Android FCM F واجهة foo@3 كترقية إصدار ثانوي لواجهة HAL. يتم استخدام الإصدار الأقدم، foo@2، للأجهزة التي تستهدف إصدارات FCM أقدم، بينما يمكن استخدام الإصدار الأحدث، foo@3، للأجهزة التي تستهدف Android FCM F. يبدو الإدخال في إصدارات 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 السابقة. يجب أن توفّر الأجهزة التي تستهدف إصدار FCM F الإصدار الجديد 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>
التقييدات:
- بما أنّ واجهة HAL 1.0 ليست في
compatibility_matrix.F.xml، يجب ألا توفّر الأجهزة التي تستهدف إصدار FCMFواجهة HAL 1.0 (لأنّ هذه الواجهة تُعد متوقفة). - بما أنّ واجهة HAL 1.0 متوفّرة في إصدارات FCM الأقدم، يمكن أن يظل إطار العمل يعمل مع واجهة HAL 1.0، لذا فهو متوافق مع الأجهزة القديمة التي تستهدف إصدارات FCM الأقدم.
إصدارات FCM الجديدة
لا تنفّذ Google وحدها عملية إصدار إصدار FCM على قسم النظام كجزء من إصدار AOSP، وتشمل الخطوات التالية:
- تأكَّد من أنّ
compatibility_matrix.F.xmlيحتوي على السمةlevel="F". - تأكَّد من أنّ جميع الأجهزة يتم إنشاؤها وإطلاقها.
- عدِّل اختبارات VTS
للتأكّد من أنّ الأجهزة التي يتم إطلاقها باستخدام أحدث إطار عمل (استنادًا
إلى مستوى واجهة برمجة التطبيقات للشحن) تحتوي على الإصدار المستهدَف من FCM هو
V >= F. - انشر الملف على AOSP.
على سبيل المثال، تضمن اختبارات VTS أنّ الأجهزة التي يتم إطلاقها باستخدام Android 9 تحتوي على الإصدار المستهدَف من FCM هو >= 3.
بالإضافة إلى ذلك، قد تسرد مصفوفات FCM للمنتج وsystem_ext أيضًا متطلبات كل إصدار من FCM للنظام الأساسي. يتم إصدار إصدارات FCM على قسمَي المنتج وsystem_ext من قِبل مالكَي هاتَين الصورتَين على التوالي. يجب أن تتطابق أرقام إصدارات FCM على قسمَي المنتج وsystem_ext مع أرقام الإصدارات على قسم النظام. على غرار إصدارات FCM على قسم النظام، تعكس مصفوفة التوافق في الإصدار F من FCM في قسمَي المنتج وsystem_ext المتطلبات على جهاز يحتوي على الإصدار المستهدَف من FCM هو F.
إيقاف استخدام إصدار HAL
يقرّر المطوّر إيقاف استخدام إصدار HAL (أي أنّ Google تتخذ القرار بشأن واجهات AOSP HAL). قد يحدث ذلك عند إصدار إصدار أعلى من HAL (سواء كان ثانويًا أو رئيسيًا).
إيقاف استخدام واجهة HAL للجهاز
عند إيقاف استخدام واجهة HAL للجهاز foo@x.y في الإصدار F من FCM، يعني ذلك
أنّه يجب ألا ينفّذ أي جهاز يتم إطلاقه باستخدام الإصدار المستهدَف من FCM هو V = F أو إصدار أحدث واجهة foo في الإصدار x.y أو أي إصدار أقدم من x.y. لا يزال إطار العمل يتيح استخدام إصدار HAL الذي تم إيقاف استخدامه لترقية الأجهزة.
عند إصدار الإصدار F من FCM، يُعد إصدار HAL foo@x.y متوقفًا
إذا لم يتم ذكر إصدار HAL المحدد بشكل صريح في أحدث
إصدار من FCM للإصدار المستهدَف من FCM هو V = F. بالنسبة إلى الأجهزة التي يتم إطلاقها باستخدام V = F، يكون أحد الشروط التالية صحيحًا:
- يتطلب إطار العمل إصدارًا أعلى (رئيسيًا أو ثانويًا).
- لم يعُد إطار العمل يتطلب واجهة HAL.
على سبيل المثال، في Android 9، تم تقديم health@2.0 كترقية إصدار رئيسي لواجهة HAL 1.0. 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، يعني ذلك
أنّه يجب ألا يتوقع أي جهاز يتم إطلاقه باستخدام الإصدار المستهدَف من FCM هو V = F أو إصدار أحدث ألا
يتوقع إطار العمل توفير واجهة foo في الإصدار x.y أو أي إصدار أقدم
من x.y. لا يزال إطار العمل يوفّر إصدار HAL الذي تم إيقاف استخدامه لترقية الأجهزة.
عند إصدار الإصدار F من FCM، يُعد إصدار HAL foo@x.y متوقفًا إذا كان بيان إطار العمل يحدّد max-level="F - 1" لواجهة foo@x.y. بالنسبة إلى الأجهزة التي يتم إطلاقها باستخدام V = F، لا يوفّر إطار العمل واجهة HAL foo@x.y. يجب ألا تسرد مصفوفة توافق الجهاز
على الأجهزة التي يتم إطلاقها باستخدام V = Fواجهات HAL لإطار العمل
التي تحتوي على max-level < V.
على سبيل المثال، في Android 12، تم إيقاف استخدام schedulerservice@1.0. تم ضبط سمة max-level على 5، وهو إصدار FCM الذي تم تقديمه في Android 11. يُرجى الاطّلاع على
بيان إطار عمل Android 12.
إزالة دعم إصدارات FCM المستهدَفة
نستخدم عملية تستند إلى جدول زمني لتحديد إزالة الإصدار المستهدَف من FCM، وذلك للحفاظ على التوافق لفترات زمنية مطلوبة ودعم متطلبات الشركاء للأجهزة التي تدوم لفترة أطول.
عند إزالة إصدار مستهدَف من FCM من مجموعة SF لإصدار إطار العمل التالي ، ننفّذ كلاً من الخطوتَين التاليتَين:
إزالة
compatibility_matrix.V.xmlمن قواعد البناء (بحيث لا يتم تثبيته على صورة النظام)، وحذف أي رمز نفّذ الإمكانات التي تمت إزالتها أو اعتمد عليها.إزالة واجهات HAL لإطار العمل التي تحتوي على
max-levelأقل منVأو تساويه من بيان إطار العمل، وحذف أي رمز ينفّذ واجهات HAL لإطار العمل التي تمت إزالتها.
إيقاف الاستخدام تدريجيًا لإعدادات الإصدار
تتطلب استراتيجية التفريع في Trunk Stable، حيث يتم أخذ إصدارات النظام الأساسي الفصلية (QPR) مباشرةً من git_main بدلاً من فروع منفصلة لتطوير الإصدار، عملية إيقاف استخدام تدريجي. قد تتم إزالة إصدار FCM للإشارة المبكرة في إصدارات trunk_staging مع استمرار توفّره في فرع الإصدار لاستيعاب الأجهزة التي تستخدم إصدارات QPR على مدار العام.
عادةً، يتيح إصدار إطار العمل ستة إصدارات من FCM: إصدار حالي واحد وأربعة إصدارات سابقة وإصدار إضافي واحد لدعم إصدارات QPR. يمكن أن يزيد هذا العدد إذا كان لإصدارات FCM معيّنة (مثل 202404 في Android 15) دعم ممتد لطول عمر الجهاز.
لا يمكن للأجهزة التي تحتوي على إصدار مستهدَف من FCM خارج SF لإصدار إطار عمل معيّن الترقية إلى هذا الإصدار.
إزالة واجهات HAL التي تم إيقاف استخدامها بالكامل
عند إزالة إصدار FCM، لا تعود بعض واجهات HAL أو إصدارات واجهات HAL متوفّرة في أي من إصدارات FCM. هذا يعني أنّ Android لم يعُد يتيح استخدامها على الإطلاق، حتى لترقية الأجهزة.
بعد أن يتوقف دعم واجهة HAL، يزيل المطوّرون الإشارات إلى واجهة HAL هذه من Android، بما في ذلك في رمز العميل في إطار العمل والتنفيذ التلقائي وحالات اختبار VTS.
إذا لم تكن هناك واجهات HAL متوافقة موروثة من واجهة HAL التي تتم إزالتها، يمكن إزالة تعريف واجهة HAL نفسه مع بضع خطوات إضافية.
- أزِل تعريف واجهة HAL من رمز المصدر. ويشمل ذلك ملفات
*.aidlووحدةaidl_interfaceفيAndroid.bp. - إذا كانت واجهة HIDL، أزِل الرمز HASH من
hardware/interfaces/current.txt. - إذا كانت واجهة AIDL، أزِل دليل
aidl_apiالذي يحتوي على ملفات AIDL المجمّدة. - أزِل الواجهة من
hardware/interfaces/compatibility_matrices/exclude/fcm_exclude.cpp.
حالة إصدار HAL
توضّح الأقسام التالية (بالترتيب الزمني) الحالات المحتمَلة لإصدار HAL.
لم تُطرح
بالنسبة إلى واجهات HAL للجهاز، إذا لم يكن إصدار HAL في أي من مصفوفات التوافق العلنية والمجمّدة، يُعد هذا الإصدار غير مطروح وقد يكون قيد التطوير.
ويشمل ذلك إصدارات HAL التي لا تتوفر إلا في compatibility_matrix.F.xml.
أمثلة:
- أثناء تطوير Android 9، كانت واجهة
health@2.0HAL تُعد واجهة HAL غير مطروحة ولم تكن متوفّرة إلا فيcompatibility_matrix.3.xml. - لا تتوفر واجهة
teleportation@1.0HAL في أي من مصفوفات التوافق المطروحة، وتُعد أيضًا واجهة 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 وهي حالية في Android
12، كما هو محدّد في
بيان إطار عمل Android 12.
مطروح ولكن متوقف
بالنسبة إلى واجهات HAL للجهاز، يتم إيقاف استخدام إصدار HAL إذا وفقط إذا تم استيفاء جميع الشروط التالية:
- تم طرحه.
- ليس في مصفوفة التوافق العلنية والمجمّدة التي تحتوي على أعلى إصدار من FCM.
- في مصفوفة توافق علنية ومجمّدة لا يزال إطار العمل يتيح استخدامها.
أمثلة:
- تتوفر واجهة
health@1.0HAL فيcompatibility_matrix.legacy.xmlوcompatibility_matrix.1.xmlوcompatibility_matrix.2.xml، ولكن ليس فيcompatibility_matrix.3.xml. وبالتالي، تُعد متوقفة في Android 9. - تحتوي واجهة HAL للطاقة على ترقية إصدار ثانوي في Android 9، ولكن لا تزال
power@1.0فيcompatibility_matrix.3.xml. power@1.0compatibility_matrix.legacy.xml،compatibility_matrix.1.xml، وcompatibility_matrix.2.xml.- يحتوي
compatibility_matrix.3.xmlعلىpower@1.0-1.
وبالتالي، فإنّ 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 القديمة
الإصدار المستهدَف من FCM القديم هو قيمة خاصة لجميع الأجهزة غير المتوافقة مع مشروع Treble. تسرد مصفوفة FCM القديمة، compatibility_matrix.legacy.xml، متطلبات إطار العمل على الأجهزة القديمة (أي الأجهزة التي تم إطلاقها قبل Android 8.0).
إذا كان هذا الملف متوفّرًا لإصدار FCM هو F، يمكن ترقية أي جهاز غير متوافق مع مشروع Treble إلى F بشرط أن يكون بيان الجهاز متوافقًا مع هذا الملف. تتبع عملية إزالته الإجراء نفسه المتبّع لإصدارات FCM للإصدارات المستهدَفة الأخرى من FCM (تتم إزالتها بعد أن ينخفض عدد الأجهزة النشطة التي تعمل بإصدارات ما قبل 8.0 إلى ما دون حد معيّن).
إصدارات FCM المطروحة
يمكن العثور على قائمة بإصدارات FCM المطروحة ضِمن
hardware/interfaces/compatibility_matrices.
للعثور على إصدار FCM المطروح مع إصدار معيّن من Android، يُرجى الاطّلاع على
Level.h.