هندسة Android

تحتوي بنية نظام Android على المكونات التالية:

نظرة عامة على بنية نظام Android
الشكل 1. هندسة نظام أندرويد
  • إطار التطبيق . يتم استخدام إطار عمل التطبيق في أغلب الأحيان بواسطة مطوري التطبيقات. بصفتك مطور أجهزة ، يجب أن تكون على دراية بواجهات برمجة التطبيقات للمطورين حيث يتم تعيين العديد من واجهات HAL مباشرة ويمكن أن توفر معلومات مفيدة حول تنفيذ برامج التشغيل.
  • بيندر IPC . تسمح آلية Binder Inter-Process Communication (IPC) لإطار عمل التطبيق بعبور حدود العملية والاتصال برمز خدمات نظام Android. يتيح ذلك لواجهات برمجة التطبيقات عالية المستوى لإطار العمل التفاعل مع خدمات نظام Android. على مستوى إطار عمل التطبيق ، يتم إخفاء هذا الاتصال عن المطور ويبدو أن الأشياء "تعمل فقط".
  • خدمات النظام . خدمات النظام هي مكونات معيارية ومركزة مثل Window Manager أو Search Service أو Notification Manager. الوظيفة التي يكشف عنها إطار عمل التطبيق تتواصل واجهات برمجة التطبيقات مع خدمات النظام للوصول إلى الأجهزة الأساسية. يشتمل Android على مجموعتين من الخدمات: النظام (مثل Window Manager و Notification Manager) والوسائط (الخدمات المتضمنة في تشغيل الوسائط وتسجيلها).
  • طبقة تجريد الأجهزة (HAL) . يحدد HAL واجهة قياسية لبائعي الأجهزة لتطبيقها ، مما يمكّن Android من أن يكون محايدًا بشأن تطبيقات برامج التشغيل ذات المستوى المنخفض. يتيح لك استخدام HAL تنفيذ الوظائف دون التأثير على نظام المستوى الأعلى أو تعديله. يتم تجميع تطبيقات HAL في وحدات ويتم تحميلها بواسطة نظام Android في الوقت المناسب. للحصول على تفاصيل ، راجع طبقة تجريد الأجهزة (HAL) .
  • نواة لينكس . يشبه تطوير برامج تشغيل جهازك تطوير برنامج تشغيل جهاز Linux نموذجي. يستخدم Android إصدارًا من Linux kernel مع بعض الإضافات الخاصة مثل Low Memory Killer (نظام إدارة ذاكرة أكثر قوة في الحفاظ على الذاكرة) ، وأقفال التنبيه (خدمة نظام PowerManager ) ، وبرنامج تشغيل Binder IPC ، وميزات أخرى مهمة لمنصة متنقلة مضمنة. هذه الإضافات مخصصة بشكل أساسي لوظائف النظام ولا تؤثر على تطوير السائق. يمكنك استخدام أي إصدار من kernel طالما أنه يدعم الميزات المطلوبة (مثل برنامج تشغيل Binder). ومع ذلك ، نوصي باستخدام أحدث إصدار من Android kernel. للحصول على تفاصيل ، راجع بناء Kernels .

لغة تعريف واجهة HAL (AIDL / HIDL)

أعاد Android 8.0 تصميم إطار عمل Android OS (في مشروع يُعرف باسم Treble ) لجعله أسهل وأسرع وأقل تكلفة للمصنعين لتحديث الأجهزة إلى إصدار جديد من Android. في هذه البنية الجديدة ، تحدد لغة تعريف واجهة HAL (HIDL ، التي تُنطق "HAL") الواجهة بين HAL ومستخدميها ، مما يتيح استبدال إطار عمل Android دون إعادة بناء HALs. في Android 10 ، تم دمج ميزات HIDL في AIDL. منذ ذلك الحين ، تم إهمال HIDL ولا يتم استخدامه إلا بواسطة الأنظمة الفرعية التي لم يتم تحويلها بعد إلى AIDL.

يفصل Treble تنفيذ البائع (برنامج خاص بالجهاز ، منخفض المستوى مكتوب من قبل الشركات المصنعة للسيليكون) عن إطار عمل نظام التشغيل Android عبر واجهة بائع جديدة. يقوم البائعون أو صانعو SOC ببناء HALs مرة واحدة ووضعها في قسم /vendor على الجهاز ؛ يمكن بعد ذلك استبدال إطار العمل ، في القسم الخاص به ، بتحديث عبر الهواء (OTA) دون إعادة تجميع HALs.

يكمن الاختلاف بين بنية Android القديمة والبنية الحالية القائمة على IDL في استخدام واجهة البائع:

  • في Android 7.x والإصدارات الأقدم ، لا توجد واجهة بائع رسمية ، لذلك يجب على صانعي الأجهزة تحديث أجزاء كبيرة من كود Android لنقل الجهاز إلى إصدار أحدث من Android:

    الشكل 2. بيئة تحديث Android القديمة
  • في Android 8.0 والإصدارات الأحدث ، توفر واجهة البائع المستقرة الجديدة الوصول إلى الأجزاء الخاصة بالأجهزة من Android ، بحيث يمكن لصانعي الأجهزة تقديم إصدارات Android الجديدة ببساطة عن طريق تحديث إطار عمل نظام التشغيل Android - دون الحاجة إلى عمل إضافي من الشركات المصنعة للسيليكون:

    الشكل 3. بيئة تحديث Android الحالية

يمكن لجميع الأجهزة الجديدة التي تعمل بنظام Android 8.0 والإصدارات الأحدث الاستفادة من البنية الجديدة. لضمان التوافق المسبق لتطبيقات البائع ، يتم التحقق من واجهة البائع من خلال Vendor Test Suite (VTS) ، وهو مماثل لمجموعة اختبار التوافق (CTS) . يمكنك استخدام VTS لأتمتة اختبار HAL و OS kernel في كل من بنى Android القديمة والحالية.

موارد العمارة

للحصول على تفاصيل حول بنية Android ، راجع الأقسام التالية:

  • أنواع HAL . يصف HALs المربوطة ، والمرور ، والعملية نفسها (SP) ، و HALs القديمة.
  • AIDL . وثائق حول AIDL ، سواء تم استخدامه بشكل عام أو كواجهة HAL.
  • HIDL (عام) . يحتوي على معلومات عامة حول الواجهة بين HAL ومستخدميه.
  • HIDL (C ++) . يحتوي على تفاصيل حول إنشاء تطبيقات C ++ لواجهات HIDL.
  • HIDL (جافا) . يحتوي على تفاصيل حول واجهة Java الأمامية لواجهات HIDL.
  • ConfigStore HAL . يصف واجهات برمجة التطبيقات للوصول إلى عناصر التكوين للقراءة فقط المستخدمة لتكوين إطار عمل Android.
  • تراكبات شجرة الجهاز . يوفر تفاصيل حول استخدام تراكبات شجرة الجهاز (DTOs) في Android.
  • مجموعة أدوات التطوير الأصلية للبائع (VNDK) . يصف مجموعة المكتبات الحصرية للبائع لتطبيق HALs للمورد.
  • كائن واجهة البائع (VINTF) . يصف الكائنات التي تقوم بتجميع المعلومات ذات الصلة بجهاز ما وإتاحة هذه المعلومات من خلال واجهة برمجة تطبيقات قابلة للاستعلام.
  • SELinux لنظام التشغيل Android 8.0 . تفاصيل تغييرات SELinux والتخصيصات.

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