به عنوان یک برنامه نویس اندروید شما باید به این سوال جواب بدید که معماری سیستم عامل اندروید چیه ؟
اصلا چرا باید بدونیم چیه ؟ ماکه کدهامونو مینویسیم و اجرا میکنیم دیگه :/
معماری اندروید برای اینه که کار کاربرا و برنامه نویسا راحت تر بشه و اونها رو درگیر جزئیات سخت افزاری و پیچیدگی سیستم عامل نکنه همین !
قبل از هر چیزی یه توضیح کوچولو بدم که اندروید یه سیستم عامل open source بر پایه لینوکسه یعنی این سیستم عامل گوگولی که انقد باحاله هستش لینوکسه
عکس زیر اجزای اصلی پلتفرم سیستم عامل اندرویدو نشون میده
هسته لینوکسی (Linux Kernel)
اول از همه چی ، گفتم سیستم عامل اندروید بر پایه هسته لینوکسه
مثلا Android RunTime(ART) برای عملکردهایی مثل Threading یا سطح پایین حافطه به هسته لینوکسی خود متکی است و همونطور که داخل عکس میبینین قسمت هایی مثل USB ، Audio , .... به این قسمت مربوط میشود .
لایه انتزاعی سخت افزاری (HAL)
لایه Hardware Abstraction Layer به معنی لایه انتزاعی سخت افزاری است
لایه HAL یک رابط استنداردی ارائه میده که قابلیت های سخت افزاری دستگاه رو در دسترس سطح بالاتری از خودش که java API هستش قرار میده .
این لایه از چندین ماژول کتابخانه تشکیل شده که هر کدوم یک رابط برای نوع خاصی از اجزای سخت افزاری مانند دوربین یا ماژول بلوتوث پیاده سازی می کنه.
قسمت Android Runtime
برای دستگاههایی که Android نسخه 5.0 (سطح API 21) یا بالاتر دارن هر برنامه در فرآیند خود و با نمونهای از Android Runtime (ART) اجرا میشود. ART برای اجرای چندین ماشین مجازی بر روی دستگاههای با حافظه کم با اجرای فایلهای DEX نوشته شده .
قسمت Native C / C++ Libraries
بسیاری از اجزا تشکیل دهنده یا مؤلفهها و سرویسهای اصلی سیستم اندروید، مثل ART و HAL، از کدهای بومی ساخته شده که به کتابخانههای بومی نوشته شده در C و C++ نیاز دارند.
لایه Java API Framework
خلاصه و مفید بخوام بگم کل ویژگی های سیستم عامل اندروید از طریق API های نوشته شده در دسترسته :)
حالا که فهمیدی این لایه کارش چیه لایه HAL رو میتونی بهتر درک کنی
لایه System APP
اندروید دارای مجموعه ای از برنامه های اصلی برای ایمیل، پیام کوتاه، تقویم، مرور اینترنت، مخاطبین و موارد دیگر است که در این لایه قرار میگیرند.