پروژه متنباز اندروید (AOSP) کد منبع اندروید در دسترس عموم و قابل تغییر است. هر کسی میتواند AOSP را برای دستگاه خود دانلود و تغییر دهد. AOSP یک پیادهسازی کامل و کاملاً کاربردی از پلتفرم موبایل اندروید را ارائه میدهد.
دو سطح سازگاری برای دستگاههایی که AOSP را پیادهسازی میکنند وجود دارد: سازگاری AOSP و سازگاری با اندروید. یک دستگاه سازگار با AOSP باید با فهرست الزامات موجود در سند تعریف سازگاری (CDD) مطابقت داشته باشد. یک دستگاه سازگار با اندروید باید با فهرست الزامات موجود در CDD و الزامات نرمافزار فروشنده (VSR) و آزمایشهایی مانند آنچه در مجموعه تست فروشنده (VTS) و مجموعه تست سازگاری (CTS) وجود دارد، مطابقت داشته باشد. برای اطلاعات بیشتر در مورد سازگاری با اندروید، به برنامه سازگاری با اندروید مراجعه کنید.
معماری AOSP
پشته نرمافزاری برای AOSP شامل لایههای زیر است:

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