پروژه منبع باز Android (AOSP) کد منبع Android است که بهصورت عمومی دردسترس است و میتوان آن را تغییر داد. هر کسی میتواند AOSP را برای دستگاه خود بارگیری و اصلاح کند. AOSP پیادهسازی کامل و کاملاً کاربردی از پلاتفرم تلفن همراه Android ارائه میدهد.
دو سطح سازگاری برای دستگاههایی که AOSP را پیادهسازی میکنند وجود دارد: سازگاری AOSP و سازگاری Android. دستگاه سازگار با AOSP باید با فهرست الزامات در سند تعریف سازگاری (CDD) مطابقت داشته باشد. دستگاه سازگار با Android باید با فهرست الزامات در CDD و «الزامات نرمافزار فروشنده» (VSR) و آزمایشهایی مثل آزمایشهای مجموعه آزمایش فروشنده (VTS) و مجموعه آزمایش سازگاری (CTS) مطابقت داشته باشد. برای اطلاعات بیشتر درباره سازگاری Android، به برنامه سازگاری Android مراجعه کنید.
معماری AOSP
پشته نرمافزار برای AOSP شامل لایههای زیر است:
شکل ۱. معماری پشته نرمافزار AOSP.
در زیر فهرستی از تعاریف اصطلاحات استفادهشده در شکل ۱ آمده است:
- برنامه Android
- برنامهای که صرفاً بااستفاده از Android API ساخته شده است. «فروشگاه Google Play» بهطور گسترده برای پیدا کردن و بارگیری برنامههای Android استفاده میشود، هرچند جایگزینهای زیادی هم وجود دارد. در برخی موارد، سازنده دستگاه ممکن است بخواهد برنامه Android را ازقبل نصب کند تا از عملکرد اصلی دستگاه پشتیبانی کند. اگر به توسعه برنامههای Android علاقه دارید، به developers.android.com مراجعه کنید.
- برنامه دارای امتیاز
- برنامهای که بااستفاده از ترکیبی از Android و میاناهای برنامهسازی کاربردی سیستم ایجاد شده است. این برنامهها باید بهعنوان برنامههای ممتاز در دستگاه ازپیش نصب شده باشند.
- برنامه سازنده دستگاه
- برنامهای که بااستفاده از ترکیبی از Android API، system API، و دسترسی مستقیم به پیادهسازی چارچوب Android ایجاد شده است. ازآنجاییکه سازنده دستگاه ممکن است مستقیماً به «میاناهای برنامهسازی کاربردی» ناپایدار در چارچوب Android دسترسی داشته باشد، این برنامهها باید ازقبل در دستگاه نصب شده باشند و فقط زمانی میتوانند بهروز شوند که نرمافزار سیستم دستگاه بهروز شود.
- میانای برنامهسازی کاربردی سیستم
- «میانای برنامهسازی کاربردی سیستم» نشاندهنده «میاناهای برنامهسازی کاربردی Android» است که فقط برای شرکا و تولیدکنندگان تجهیزات اصلی دردسترس است تا در برنامههای دستهای گنجانده شود. این میاناهای برنامهسازی کاربردی در کد منبع با @SystemApi علامتگذاری شدهاند.
- Android API
- «میانای برنامهسازی کاربردی Android» میانای برنامهسازی کاربردی دردسترس عموم برای توسعهدهندگان برنامه Android طرف سوم است. برای کسب اطلاعات درباره Android API، به مرجع Android API مراجعه کنید.
- چارچوب Android
- گروهی از کلاسهای جاوا، میانهها، و کد پیشکامپایلشده دیگری که برنامهها براساس آنها ساخته میشوند. بخشهایی از چارچوب ازطریق استفاده از Android API بهصورت عمومی دردسترس است. بخشهای دیگر چارچوب فقط ازطریق استفاده از میاناهای برنامهسازی کاربردی سیستم برای سازندگان اصلی سختافزار دردسترس است. کد چارچوب Android در فرایند برنامه اجرا میشود.
- خدمات سیستم
- خدمات سیستم مؤلفههای کانونی و واحدی هستند، مثل
system_server، SurfaceFlinger، و MediaService. عملکردی که ازطریق Android framework API ارائه میشود با سرویسهای سیستم برای دسترسی به سختافزار زیربنایی ارتباط برقرار میکند. - زمان اجرای Android (ART)
- محیط زمان اجرای جاوا ارائهشده توسط AOSP. ART ترجمه کدبایت برنامه به دستورالعملهای ویژه پردازنده را که توسط محیط زمان اجرای دستگاه اجرا میشوند انجام میدهد.
- لایه انتزاعی سختافزار (HAL)
- «لایه انتزاعی سختافزار» لایه انتزاعی با میانای استاندارد برای فروشندگان سختافزار است تا آن را پیادهسازی کنند. HAL به Android اجازه میدهد نسبت به پیادهسازیهای درایور سطح پایینتر بیتفاوت باشد. استفاده از HAL به شما امکان میدهد بدون تأثیرگذاری یا تغییر سیستم سطح بالاتر، عملکرد را پیادهسازی کنید. برای اطلاعات بیشتر، به نمای کلی HAL مراجعه کنید.
- کتابخانهها و برنامههای پسزمینهای بومی
خدمات پسزمینهای بومی در این لایه شامل
init،healthd،logd، وstoragedمیشود. این دیمونها مستقیماً با هسته یا رابطهای دیگر تعامل دارند و به پیادهسازی HAL مبتنی بر فضای کاربر وابسته نیستند.کتابخانههای بومی در این لایه شامل
libc،liblog،libutils،libbinder، وlibselinuxاست. این کتابخانههای Native مستقیماً با هسته یا میاناهای دیگر تعامل دارند و به پیادهسازی HAL مبتنی بر فضای کاربر وابسته نیستند.- Kernel
هسته بخش مرکزی هر سیستمعامل است و با سختافزار زیربنایی دستگاه ارتباط برقرار میکند. درصورت امکان، هسته AOSP به واحدهای سختافزار-ناشناس و واحدهای مختص فروشنده تقسیم میشود. برای شرح، ازجمله تعریف، اجزای هسته AOSP، به نمای کلی هسته مراجعه کنید.
حالا چه میشود؟
- اگر با AOSP آشنایی ندارید و میخواهید توسعه را شروع کنید، به بخش «شروع به کار» مراجعه کنید.
- اگر میخواهید درباره لایه خاصی از AOSP بیشتر بدانید، روی نام بخش در پیمایش سمت راست کلیک کنید و با نمای کلی آن بخش شروع کنید.