كل ما تحتاج لمعرفته حول Project Mainline في Android

يعد Project Mainline أكبر تغيير في Android منذ Project Treble. إليك ما تعنيه وما تفعله جميع الوحدات ، تحقق من ذلك!

كان أحد أكبر التغييرات في Android في السنوات الأخيرة والتي طارت تحت الرادار ، نسبيًا مقابل أهميته ، هو إدخال الخط الرئيسي للمشروع في Android 10. تفرض Google تضمين وحدات Mainline محددة عبر إصدارات Android ، مع أندرويد 11 يأتي مع مجموع إلزامي إجمالي 25 وحدة نمطية رئيسية. فيما يلي شرح لما هو Project Mainline وما يهدف إلى حله ، إلى جانب قائمة بجميع وحدات Project Mainline في Android.

ما هو Project Mainline؟

لفهم Project Mainline بشكل صحيح ، سيتعين علينا الترجيع قليلاً. إذا عدت بضع سنوات إلى الوراء ، فإن الكثير من المحادثات حول تحديثات Android تتمحور حول مشكلة التجزئة. كان Fragmentation أحد أكبر التحديات التي واجهتها Google لحلها على نظام Android حول عصر Ice Cream Sandwich - Lollipop. على الرغم من أن Android كمنصة تلقت تحديثات منتظمة عبر نمط يمكن التنبؤ به إلى حد كبير ، فإن هذه التحديثات كانت تستغرق وقتًا طويلاً جدًا للوصول إلى أيدي المستهلكين النهائيين ، على كل حال. لذلك ، بينما كانت Google تعمل على إصلاح الأخطاء الحرجة ومشكلات الأمان على مستوى النظام الأساسي ، ترك التطبيق الفعلي لهذه التغييرات الكثير مما هو مرغوب فيه. كان هناك / يوجد الكثير من الوسطاء (بائع SoC ، ومصنعي المعدات الأصلية ، وشركات النقل ، وما إلى ذلك) والعديد من الأجزاء المتحركة التي تشارك في تقديم التحديثات إلى هاتفك ، ولم تظهر مشكلة التجزئة وكأنها ستحل نفسها دون الحاجة إلى بعض الضربات الشديدة التدخلات.

جاءت إحدى الجهود الرئيسية لمعالجة هذه المشكلة في شكل مشروع Treble جنبًا إلى جنب مع Android 8.0 Oreo ، والذي تضمن إعادة هندسة رئيسية لنظام Android ، وفصل مكونات إطار عمل نظام التشغيل Android عن HALs البائع ونواة Linux. Project Treble ، في جوهره ، نظام Android المعياري عن طريق فصل إطار عمل نظام التشغيل عن البرنامج ذي المستوى الأدنى الخاص بالجهاز. بهذه الطريقة ، لا يحتاج صانعو الأجهزة (OEMs) إلى انتظار الشركات المصنعة للسيليكون (بائع SoC) لتحديث رمز تنفيذ البائع ، ويمكن لمصنعي الأجهزة الأصلية تحديث إطار عمل نظام التشغيل Android بشكل مستقل. والنتيجة النهائية هي اعتماد أسرع لإصدارات Android الأحدث من الشركة المصنعة للمعدات الأصلية ، حيث لم تعد بحاجة إلى ذلك انتظر الوسيط (بائع SoC) لإنهاء عمله أولاً قبل أن يتمكن من البدء في القيام به لهم.

على الرغم من أن وضع تحديث Android لم يتحسن بشكل كبير بعد الخفافيش مع Project Treble ، إلا أنه أتاح إلى حد كبير OEM على نطاق أوسع المشاركة في الإصدار التجريبيين من Android 10 و Android 11 بالإضافة إلى تسهيل قيام مصنعي المعدات الأصلية بتحديث المزيد من أجهزتهم بشكل أسرع الجدول الزمني. بالإضافة إلى ذلك ، كان لمفهوم GSI (صورة النظام العامة) تأثير كبير على تطوير ما بعد البيع في منتدياتنا.

يقوم المطور بتشغيل Android 11 على 22 جهازًا أقدم باستخدام Project Treble GSI

يعمل Project Mainline على توسيع جهود Project Treble. بينما قلل Treble من مدى اعتماد مصنعي المعدات الأصلية على بائعي SoC لكل تحديث لنظام التشغيل ، يقلل Mainline من مدى اعتماد Google على مصنعي المعدات الأصلية لتقديم تحديثات الأمان لمكونات نظام التشغيل الرئيسية. يعمل Project Mainline على توسيع فلسفة Treble إلى أجزاء أكثر أهمية من إطار عمل Android ، وإزالة مصنعي المعدات الأصلية بصفتهم وسطاء معتمدين من هذه المعادلة. الغرض من Project Mainline هو أن تنتزع Google التحكم في مكونات إطار العمل وتطبيقات النظام الموجودة مهم للأمان والحفاظ على اتساق التطوير بعيدًا عن مصنعي المعدات الأصلية. يشار إلى Project Mainline بحق باسم ال أكبر تغيير في Android منذ Project Treble.

بالنسبة إلى Project Mainline ، تستخدم Google وحدات Mainline التي يتم تسليمها من خلال إطار عمل خدمات Google Play ومتجر Google Play. يتم تسليم كل وحدة نمطية رئيسية إما كملف APK أو ملف APEX أو كملف APK-in-APEX. عندما يتم تحديث وحدة Mainline ، يرى المستخدم إشعار "Google Play System Update" (GPSU) على أجهزته. بشكل فعال ، لتقديم تحديثات للمكونات الهامة ، تجاوزت Google الحاجة إلى انتظار قيام الشركة المصنعة للمعدات الأصلية بطرح تحديث ، واختيار القيام بالمهمة نفسها.

مثل تنص Google على موقع Android:

تعمل مكونات النظام المعياري على تمكين شركاء Google و Android من توزيع التحديثات على نطاق واسع وسريع وسلس على أجهزة المستخدم النهائي بطريقة غير تدخلية. على سبيل المثال ، يمكن أن يؤدي الجمع بين تجزئة ترميز الوسائط والأخطاء الحرجة إلى إبطاء اعتماد التطبيق ومشاركة المستخدم بشكل كبير. يمكن للتحديثات المتكررة للوحدات ذات الصلة بالوسائط أن تقلل تجزئة برنامج الترميز لجعل سلوك تطبيقات الوسائط أكثر اتساقًا عبر أجهزة Android المختلفة وإصلاح الأخطاء الحرجة لبناء ثقة المستخدم.

يحول Android 10 أو أعلى مكونات النظام المحددة إلى وحدات نمطية ، بعضها يستخدم تنسيق حاوية APEX (المقدم في Android 10) وبعضها يستخدم تنسيق APK. تتيح البنية المعيارية تحديث مكونات النظام بإصلاحات الأخطاء الهامة وغيرها التحسينات حسب الحاجة ، دون التأثير على تطبيقات البائعين ذات المستوى الأدنى أو التطبيقات ذات المستوى الأعلى و خدمات.

مثل آرس تكنيكا يذكر:

تم تقديم Project Mainline ، AKA "تحديثات نظام Google Play" ، في Android 10 كجهد كبير لجعل مكونات النظام الأساسية لنظام Android أكثر نمطية وقابلة للتحديث. قدم Mainline نوع ملف "APEX" جديدًا خصيصًا لمكونات النظام ، بهدف شحن رمز Android الأساسي عبر متجر Play بسهولة كما تشحن تحديث التطبيق. في السابق ، كانت كتلة الأكواد البرمجية الوحيدة القابلة للشحن في Android هي APK ، وهو نوع ملف مصمم في الأصل لتطبيقات الطرف الثالث. جاء هذا مع جميع أنواع القيود الأمنية ولا يمكن أن يبدأ إلا في وقت متأخر من عملية التمهيد ، لذلك تم إنشاء APEX مع وضع مكونات نظام أكثر قوة في الاعتبار. لا يمكن إنشاء APEX إلا ​​بواسطة Google أو الشركة المصنعة لجهازك ، لذلك يمكن أن تكون أكثر قوة بشكل ملحوظ وتحتوي على مكونات تمهيدية مهمة مثل وقت تشغيل التطبيق.

Mainline ليس مجرد حل تقني ، إنه يتعلق أيضًا بتوزيع المزيد من أجزاء Android مركزيًا بواسطة Google ، والتي تتضمن التفاوض مع الشركات المصنعة للأجهزة وجعلهم جميعًا يوافقون على شحن نفس المجموعة من شفرة. أصبحت وحدات Mainline إلزامية في النهاية للشحن ، لذا فإن Mainline هي في الواقع تعاون كبير مع مصنعي الأجهزة للتأكد من أن وحدة واحدة على مستوى النظام البيئي تلبي احتياجات الجميع. ليست كل وحدة Mainline هي وحدة APEX فائقة القوة - بعضها مجرد ملفات APK أصبحت الآن رمز Android موزعًا على Google.

خط المشروع الرئيسي - الوحدات

باستخدام Android 10 ، فرضت Google تضمين 13 وحدة Mainline محددة. مع Android 11 ، يبلغ إجمالي عدد الوحدات الإلزامية 25. إليك القائمة الكاملة ، جنبًا إلى جنب مع بعض التفاصيل الأساسية:

اسم وحدة

اسم الحزمة

يكتب

تمت ترقية الجهاز أو بدء تشغيله باستخدام Android 11

تم إطلاق الجهاز بنظام Android 10

تمت ترقية الجهاز إلى Android 10

adbd

com.google.android.adbd

ذروة

يجب

غير مدعوم

غير مدعوم

Android Neural Network API Runtime

com.google.android.neuralnetworks

ذروة

يجب

غير مدعوم

غير مدعوم

الدخول إلى البوابة المقيدة

com.google.android.captiveportallogin

APK

يجب

ينصح بشدة

خياري

البث الخلوي

com.google.android.cellbroadcast

ذروة

يجب

غير مدعوم

غير مدعوم

كونكربت

com.google.android.conscrypt

ذروة

يجب

ينصح بشدة

خياري

محلل DNS

com.google.android.resolv

ذروة

يجب

ينصح بشدة

خياري

واجهة مستخدم المستندات

com.google.android.documentsui

APK

يجب

يجب

خياري

الخدمات الإضافية - APK

com.google.android.ext.services

APK

يجب

يجب

يجب

الخدمات الإضافية - ذروة

com.google.android.extservices

ذروة

يجب

غير مدعوم

غير مدعوم

مكتبة IPsec / IKEv2

com.google.android.ipsec

ذروة

يجب

غير مدعوم

غير مدعوم

برامج ترميز الوسائط

com.google.android.media.swcodec

ذروة

يجب

يجب

خياري

مكونات إطار عمل الوسائط

com.google.android.media

ذروة

يجب

يجب

خياري

مزود الوسائط

com.google.android.mediaprovider

ذروة

يجب

غير مدعوم

غير مدعوم

البيانات الوصفية للوحدة النمطية

com.google.android.modulemetadata

APK

يجب

يجب

يجب

مكونات مكدس الشبكة

com.google.android.networkstack

APK

يجب

ينصح بشدة

خياري

تكوين إذن مكدس الشبكة

com.google.android.networkstack.permissionconfig

APK

يجب

ينصح بشدة

خياري

تحكم الإذن - APK

com.google.android.permissioncontroller

APK

يجب

يجب

يجب

تحكم الإذن - ذروة

com.google.android.permission

ذروة

يجب

غير مدعوم

غير مدعوم

ملحقات SDK

com.google.android.sdkext

ذروة

يجب

غير مدعوم

غير مدعوم

ستاتسد

com.google.android.os.statsd

ذروة

يجب

غير مدعوم

غير مدعوم

حزمة إصدار قطار القياس عن بعد

com.google.mainline.telemetry

APK

يجب

غير مدعوم

غير مدعوم

الربط

com.google.android.tethering

ذروة

يجب

غير مدعوم

غير مدعوم

بيانات المنطقة الزمنية

com.google.android.tzdata

ذروة

لا يجب

يجب

خياري

بيانات المنطقة الزمنية 2

com.google.android.tzdata2

ذروة

يجب

غير مدعوم

غير مدعوم

واي فاي³

com.google.android.wifi

ذروة

يجب

غير مدعوم

غير مدعوم

لتوفير بعض السياق للأعمدة أعلاه ، يتضمن العمود بعنوان "تمت ترقية الجهاز إلى Android 11 أو تم تشغيله به" تفاصيل حول ما إذا كان يجب أن تكون الوحدة موجودة (أو يجب ألا تكون موجودة موجود ، في حالة بيانات المنطقة الزمنية بسبب تضمين البديل الخاص بها) على جميع الأجهزة التي تمت ترقيتها إلى Android 11 ، أو يتم تشغيلها مع Android 11 من صندوق. وبالمثل ، يجب أن تتضمن الأجهزة التي يتم تشغيلها بنظام Android 10 بعض الوحدات النمطية ، ويوصى بشدة بتضمين عدد قليل من الأجهزة الأخرى ، وهي غير مدعومة من قِبل البقية. بالنسبة للأجهزة التي تمت ترقيتها إلى Android 10 (بدلاً من إطلاقها مع Android) ، تكون قائمة الوحدات المطلوبة أقصر.

ماذا تفعل كل وحدة Mainline؟

فيما يلي شرح موجز لكل من وحدات Mainline:

Adbd

وحدة adbd تدير جلسات تصحيح أخطاء سطر الأوامر adb و IDE. يسمح تعديل adbd لـ Google بتقديم تحسينات في الأداء وإصلاحات الأخطاء بشكل أسرع. هذا أمر بالغ الأهمية لأن بعض الأخطاء في الماضي كانت مرتبطة باستنزاف البطارية ، ويمكن أن تتسبب في استمرار الأجهزة في استخدام وحدة المعالجة المركزية بنسبة 100٪ حتى يموت الهاتف. لذا فإن الحصول على هذه الإصلاحات أمر بالغ الأهمية لشركة Google حيث يتم استخدام adb على نطاق واسع من قبل مطوري التطبيقات ومصنعي المعدات الأصلية للاختبار.

وقت تشغيل واجهة برمجة تطبيقات الشبكات العصبية في Android

هذه مكتبة تقع بين التطبيق وبرامج التشغيل الخلفية. واجهة برمجة التطبيقات بدورها هي واجهة برمجة تطبيقات Android C لتشغيل عمليات التعلم الآلي المكثفة حسابيًا على الأجهزة المحمولة ، ولتمكين عمليات الاستدلال المسرع بالأجهزة.

البث الخلوي

يشير البث الخلوي إلى تنبيهات الطوارئ وغير الطوارئ (مثل تنبيهات AMBER). تهتم هذه الوحدة بالمهام المتعلقة بهذه التنبيهات ، والوظائف المساعدة الأخرى مثل فك تشفير الرسائل القصيرة وتحديد المواقع الجغرافية لتنبيهات الطوارئ اللاسلكية.

كونكربت

تتعامل وحدة Conscrypt مع تطبيق TLS الخاص بنظام Android ووظائف التشفير الأخرى مثل مولدات المفاتيح والشفرات وملخصات الرسائل. شحن هذا كوحدة نمطية يسمح لـ Google بتسريع التحسينات الأمنية ، دون الحاجة إلى الاعتماد على تحديثات OTA.

محلل DNS

كما يوحي الاسم ، يحل محلل DNS DNS ، أي أنه يحول عناوين URL التي يمكن للبشر قراءتها إلى عناوين IP. تحتوي الوحدة على الكود الذي ينفذ محلل كعب DNS ، وشحن هذا كوحدة نمطية يتيح لـ Google توفير حماية أفضل للمستخدم ضد اعتراض DNS وهجمات تحديث التكوين.

واجهة مستخدم المستندات

واجهة مستخدم المستندات هي الوحدة النمطية المسؤولة عن التحكم في الوصول إلى ملفات محددة للمكونات التي تتعامل مع أذونات المستند. كما تنص Google ، فإن جعل الوصول إلى التخزين والأذونات في وحدة نمطية يزيد من الخصوصية والأمان للمستخدمين النهائيين ، بينما تسمح ميزة تراكب موارد وقت التشغيل (RRO) لمصنعي المعدات الأصلية بوضع سمة للتجربة (بالإشارة إلى تطبيق الملفات) إذا احتاجوا ل. كوحدة نمطية ، سيتم شحن جميع أجهزة Google-Android بنفس تجربة واجهة مستخدم المستندات.

الخدمات الإضافية

تتضمن هذه الوحدة مكونات إطار عمل لوظائف نظام التشغيل الأساسية مثل تصنيف الإشعارات واستراتيجيات مطابقة النص للملء التلقائي وذاكرة التخزين المؤقت ومراقبة الحزمة والخدمات الأخرى.

مكتبة IPsec / IKEv2

تهتم وحدة المكتبة هذه بالميزات الجديدة والحالية حول Interworking Wireless LAN (IWLAN) وشبكات VPN ، مثل التفاوض على معلمات الأمان مثل المفاتيح والخوارزميات والنفق التكوينات. تكمن الفكرة في تعديل هذه الوظائف في تعزيز اتساق النظام البيئي وتوفير طريقة لتقديم حلول سريعة لمشاكل الأمان وقابلية التشغيل البيني.

هذه ثلاث وحدات متشعبة ، لكن لها وظائف تعتمد على بعضها البعض. تتعامل وحدات الوسائط هذه مع أنواع الوسائط وأكوادها ، وتتفاعل مع ExoPlayer ، وتكشف عناصر التحكم في النقل ومعلومات التشغيل في الإطار ، وتحسن البيانات الوصفية المفهرسة ، وما إلى ذلك. يتذكر Stagefright ، الثغرة التي غيرت نظام Android وأحدثت مفهوم التحديثات الأمنية الشهرية للنظام الأساسي؟ اعتمد هذا الاستغلال على نقاط الضعف داخل مكتبة تشغيل الوسائط. لذا ، فإن توحيد مكونات الوسائط يسمح لـ Google بالتفاعل بسرعة وعلى نطاق واسع في حالة وجود أخطاء أمنية في هذا المكون المستهدف غالبًا.

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

مكونات Network Stack ، تكوين أذونات مكدس الشبكة ، تسجيل الدخول إلى البوابة المقيدة

توفر الوحدة النمطية Network Stack Components خدمات IP المشتركة ، ومراقبة اتصال الشبكة ، واكتشاف بوابة تسجيل الدخول المقيدة. تحدد الوحدة النمطية لتكوين الأذونات الإذن الذي يمكّن الوحدات النمطية الأخرى من أداء المهام المتعلقة بالشبكة. تتعامل وحدة تسجيل الدخول إلى البوابة المقيدة مع البوابات المقيدة - صفحات الويب التي يتم عرضها عند متصل بشبكات Wi-Fi عامة معينة ، حيث يُطلب من المستخدم إدخال التفاصيل للوصول إلى الإنترنت وصول.

تحكم الإذن

تقدم هذه الوحدة سياسات خصوصية قابلة للتحديث وعناصر واجهة المستخدم حول منح الأذونات وإدارتها. إذا كان هذا يبدو مألوفًا لما يفعله Package Installer ، فهذا لأنه كذلك. كانت وظائف مثل منح أذونات وقت التشغيل والإدارة وتتبع الاستخدام جزءًا من تطبيق Package Installer حتى Android 9. في Android 10 ، يتم تقسيم تطبيق Package Installer إلى أقسام لتمكين تحديث منطق الأذونات. يتم تسليم وحدة التحكم في الأذونات كملف APK ، وفي Android 11 ، يمكن للوحدة إبطال أذونات وقت التشغيل تلقائيًا للتطبيقات التي لم يتم استخدامها لفترة طويلة من الوقت.

ملحقات SDK

هذه الوحدة يصعب فهمها وبالتالي شرحها. يتم تعيين مستوى SDK لكل إصدار من إصدارات Android (عادةً +1 من سابقه). عندما يستهدف تطبيق SDK معين ، فمن المفترض أن المطور قد أخذ في الاعتبار التغييرات السلوكية للنظام الأساسي وواجهة برمجة التطبيقات التي جلبها إصدار Android.

تحدد وحدة ملحقات SDK مستوى "ملحق SDK" للجهاز وتكشف واجهات برمجة التطبيقات للتطبيقات للاستعلام عن مستوى SDK للإضافة. هذا كل ما تذكره الوثائق الرسمية. ArsTechnica ، رغم ذلك ، يذكر من المحتمل أن تكون هذه طبقة واجهة برمجة تطبيقات ثانوية سيتم شحنها من خلال متجر Play.

Statsd ، حزمة إصدار قطار القياس عن بعد

Statsd هي المسؤولة عن جمع مقاييس الجهاز. من ناحية أخرى ، لا تحتوي حزمة إصدار قطار القياس عن بُعد على رمز نشط أو أي وظيفة خاصة بها. إنه يحتوي ببساطة على رقم إصدار لـ "قطار القياس عن بُعد" الذي تقول Google إنه مجموعة من الوحدات ذات الصلة بالمقاييس. استنادًا إلى رقم الإصدار ، يعرض Google Play إصدار تصحيح الأمان للمستخدمين النهائيين ويكتشف ما إذا كانت التحديثات متاحة للوحدات ذات الصلة بالمقاييس.

الربط

تشارك وحدة الربط اتصال الإنترنت الخاص بالجهاز مع أجهزة العميل الأخرى المتصلة عبر Wi-Fi أو USB أو Bluetooth أو Ethernet. تتضمن الوحدة مكونات الربط وتبعياتها. باستخدام وحدة الربط هذه ، يمكن لمصنعي المعدات الأصلية الاعتماد على تنفيذ مرجعي واحد وقياسي وتقديم تجربة متسقة عبر الأجهزة.

بيانات المنطقة الزمنية

تقوم وحدة بيانات المنطقة الزمنية بتحديث التوقيت الصيفي (DST) والمناطق الزمنية على أجهزة Android ، وتوحيد البيانات (التي يمكن و يتغير كثيرًا استجابةً لأسباب دينية وسياسية وجيوسياسية) وآلية التحديث عبر النظام البيئي. استخدم Android 8.1 و Android 9 آلية تحديث بيانات المنطقة الزمنية المستندة إلى APK ، ويستبدلها Android 10 بآلية تحديث وحدة قائمة على APEX. تنص Google على أن AOSP يستمر في تضمين رمز النظام الأساسي الضروري للتحديثات المستندة إلى APK ، لذلك لا يزال بإمكان الأجهزة التي تقوم بالترقية إلى Android 10 تلقي تحديثات بيانات المنطقة الزمنية التي يوفرها الشريك من خلال APK. ومع ذلك ، تحذر Google من أن التحديثات المستندة إلى APK تحل محل التحديث المستند إلى APEX.

واي فاي

هذه هي الوحدة النمطية لوظيفة Wi-Fi. يمكن للمستخدمين الآن الحصول على تجربة Wi-Fi متسقة عبر أجهزة Android ، بالإضافة إلى إصلاحات لمشكلات التشغيل البيني من خلال تحديثات الوحدة والتطبيق يمكن للمطورين الحصول على تجزئة أقل للنظام الأساسي ، ويمكن لمصنعي المعدات الأصلية تلبية متطلبات الناقل مع تقليل التكاليف للأفراد أيضًا التخصيصات.


نأمل أن تسلط هذه المقالة الضوء على مدى أهمية Project Mainline لنظام Android في Google.