هندسة Android

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

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

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

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

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

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

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

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

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

يمكن لجميع الأجهزة الجديدة التي تعمل بنظام Android 8.0 والإصدارات الأحدث الاستفادة من البنية الجديدة. لضمان التوافق إلى الأمام من تطبيقات البائعين، والتحقق من صحة واجهة بائع من قبل البائع اختبار جناح (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) . يصف الكائنات التي تقوم بتجميع المعلومات ذات الصلة بجهاز ما وإتاحة هذه المعلومات من خلال واجهة برمجة تطبيقات قابلة للاستعلام.
  • سيلينو لالروبوت 8.0 . التفاصيل تغييرات SELinux والتخصيصات.

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