معماری اندروید

معماری سیستم Android شامل اجزای زیر است:

مروری بر معماری سیستم اندروید
معماری سیستم شکل 1. آندروید
  • چارچوب برنامه. چارچوب برنامه اغلب توسط توسعه دهندگان برنامه استفاده می شود. به عنوان یک توسعه دهنده سخت افزار ، باید از API های توسعه دهنده آگاه باشید زیرا بسیاری از آنها مستقیماً به واسط های HAL زیرین مربوط می شوند و می توانند اطلاعات مفیدی در مورد درایورهای پیاده سازی ارائه دهند.
  • بند IPC. مکانیزم Binder Inter-Process Communication (IPC) به چارچوب برنامه اجازه می دهد تا از مرزهای فرایند عبور کرده و کد خدمات سیستم Android را فراخوانی کند. این API های چارچوب سطح بالا را قادر می سازد تا با خدمات سیستم Android تعامل داشته باشند. در سطح چارچوب برنامه ، این ارتباط از نظر توسعه دهنده پنهان است و به نظر می رسد همه چیز "فقط کار می کند".
  • خدمات سیستم. خدمات سیستم اجزای مدولار و متمرکز مانند مدیر پنجره ، سرویس جستجو یا مدیر اطلاع رسانی هستند. عملکردی که توسط API های چارچوب برنامه نمایان می شود با خدمات سیستم ارتباط برقرار می کند تا به سخت افزار زیرین دسترسی پیدا کند. آندروید شامل دو گروه از خدمات: سیستم (مانند مدیر پنجره و مدیر اطلاع رسانی) و رسانه (خدمات در پخش و ضبط رسانه ای).
  • لایه انتزاع سخت افزار (HAL). یک HAL یک رابط استاندارد برای فروشندگان سخت افزار برای پیاده سازی تعریف می کند ، که Android را قادر می سازد تا در مورد پیاده سازی درایورهای سطح پایین تر آگاه باشد. استفاده از HAL به شما امکان می دهد عملکرد را بدون تأثیر یا تغییر در سیستم سطح بالاتر پیاده سازی کنید. پیاده سازی های HAL در ماژول ها بسته بندی شده و توسط سیستم Android در زمان مناسب بارگیری می شوند. برای جزئیات، سخت افزار لایه انتزاعی (HAL) .
  • هسته لینوکس. توسعه درایورهای دستگاه شما مشابه توسعه درایورهای معمولی دستگاه لینوکس است. با استفاده از آندروید یک نسخه از هسته لینوکس با چند شده خاص مانند کم حافظه قاتل (یک سیستم مدیریت حافظه است که در حافظه حفظ تهاجمی تر)، قفل بیداری (یک PowerManager خدمات سیستم)، راننده بند IPC، و دیگر ویژگی مهم برای پلت فرم تعبیه شده در تلفن همراه این افزودنی ها در درجه اول برای عملکرد سیستم است و بر توسعه راننده تأثیر نمی گذارد. شما می توانید از هر نسخه ای از هسته استفاده کنید تا زمانی که از ویژگی های مورد نیاز (مانند درایور اتصال دهنده) پشتیبانی کند. با این حال ، توصیه می کنیم از آخرین نسخه هسته Android استفاده کنید. برای جزئیات، ساختمان مغز .

زبان تعریف رابط HAL (AIDL/HIDL)

آندروید 8.0 دوباره architected چارچوب سیستم عامل آندروید (در یک پروژه شناخته شده به عنوان سه برابر کردن) به آن را آسان تر، سریع تر و کم هزینه تر برای تولید کنندگان به دستگاه های به روز رسانی به یک نسخه جدید از آندروید. در این معماری جدید ، زبان تعریف رابط HAL (HIDL ، با تلفظ "hide-l") رابط بین یک HAL و کاربران آن را مشخص می کند و باعث می شود چارچوب اندروید بدون بازسازی HAL ها جایگزین شود. در اندروید 10 ، ویژگی های HIDL در AIDL گنجانده شده است. از آن زمان ، HIDL منسوخ شده است و فقط توسط زیرسیستم هایی استفاده می شود که هنوز به AIDL تبدیل نشده اند.

Treble پیاده سازی فروشنده (نرم افزار مخصوص دستگاه ، سطح پایین که توسط تولیدکنندگان سیلیکون نوشته شده است) را از چارچوب سیستم عامل Android از طریق رابط فروشنده جدید جدا می کند. فروشندگان یا سازندگان SOC ساخت HALS یک بار و آنها را در یک /vendor پارتیشن بر روی دستگاه. چارچوب، در پارتیشن خود را دارد، می تواند پس از آن با یک تعویض شود بیش از حد هوا (OTA) به روز رسانی بدون کامپایل مجدد HALS.

تفاوت بین معماری قدیمی Android و معماری فعلی مبتنی بر IDL در استفاده از رابط فروشنده است:

  • در Android 7.x و نسخه های قبلی ، هیچ رابط فروشنده رسمی وجود ندارد ، بنابراین سازندگان دستگاه باید قسمت های زیادی از کد Android را به روز کنند تا دستگاه را به نسخه جدیدتر Android منتقل کنند:

    محیط زیست به روز رسانی شکل 2. میراث آندروید
  • در Android 8.0 و بالاتر ، یک رابط فروشنده پایدار جدید دسترسی به قسمت های سخت افزاری اندروید را فراهم می کند ، بنابراین سازندگان دستگاه می توانند نسخه های جدید Android را به سادگی با به روز رسانی چارچوب سیستم عامل Android ارائه دهند-بدون کار اضافی از سازندگان سیلیکون:

    محیط زیست به روز رسانی شکل 3. آندروید کنونی

همه دستگاه های جدیدی که با Android 8.0 و بالاتر راه اندازی می شوند می توانند از معماری جدید استفاده کنند. برای اطمینان از سازگاری رو به جلو از پیاده سازی فروشنده، رابط فروشنده توسط اعتبار فروشنده تست سوئیت (VTS) است، که شبیه به سازگاری تست سوئیت (CTS) . می توانید از VTS برای خودکار کردن آزمایش هسته HAL و OS در معماری قدیمی و فعلی Android استفاده کنید.

منابع معماری

برای اطلاع از جزئیات معماری اندروید ، به بخشهای زیر مراجعه کنید:

  • انواع HAL . HAL های binderized ، passthrough ، Same-Process (SP) و قدیمی را توصیف می کند.
  • AIDL . مستندات در مورد AIDL ، چه به طور کلی استفاده شود و چه به عنوان رابط HAL.
  • HIDL (عمومی) . شامل اطلاعات کلی در مورد رابط بین HAL و کاربران آن است.
  • HIDL (C ++) . حاوی جزئیات برای ایجاد پیاده سازی C ++ رابط های HIDL است.
  • HIDL (جاوا) . حاوی جزئیات مربوط به پیش فرض جاوا برای رابط های HIDL است.
  • ConfigStore HAL . API ها را برای دسترسی به موارد پیکربندی فقط خواندنی که برای پیکربندی چارچوب Android استفاده می شود ، توضیح می دهد.
  • دستگاه پوشش درخت . جزئیات استفاده از پوشش درخت درخت (DTOs) در Android را ارائه می دهد.
  • فروشنده بومی کیت توسعه (VNDK) . مجموعه ای از کتابخانه های اختصاصی فروشنده را برای پیاده سازی HAL های فروشنده توضیح می دهد.
  • فروشنده رابط شی (VINTF) . اشیایی را توصیف می کند که اطلاعات مربوط به یک دستگاه را جمع آوری کرده و این اطلاعات را از طریق یک API قابل پرس و جو در دسترس قرار می دهد.
  • SELinux را برای آندروید 8.0 . جزئیات تغییرات و سفارشی سازی SELinux.

علاوه بر منابع در این سایت، اعضای تیم سه برابر منتشر شده سه برابر کردن: سریع نرم افزار به روز رسانی با ایجاد یک تعادل در نرم افزار اکوسیستم فعال در سطح جهانی سهامداران توزیع . مقاله برای اعضای ACM رایگان است و غیر اعضا می توانند چکیده را خریداری یا مطالعه کنند.