Linux Kernel
لینوکس ۳.۶ با تقریبا ۱۱۵ patch در پایین ترین قسمت لایه ها قرار دارد. این لایه سطحی از انتزاع را بین سخت افزار دستگاه و برنامه نویس فراهم می کند و شامل تمام درایورهای سخت افزاری ضروری مانند camera، keypad و display و… می باشد. به عبارت دیگر برنامه نویس بدون اینکه درگیر پیچیدگی های سخت افزاری شود، تمرکز خود را روی برنامه نویسی می گذارد. همچنین این کرنل در شبکه سازی و مدیریت بسیاری از درایورهای دستگاه بسیار خوب عمل می کند.
معماری زبان اندروید
Libraries
در بالای کرنل لینوکس مجموعه ای از کتابخانه ها شامل موتور مرورگر وب اپن سورس WebKit، کتابخانه Libc، دیتابیس SQLite (مخزن مفیدی برای ذخیره و اشتراک داده های اپلیکیشن)، کتابخانه هایی برای ضبط و پخش صدا و ویدئو، کتابخانه های SSL (مسئولیت امنیت اینترنت را به عهده دارند) قرار دارد.
Android Libraries
این قسمت شامل آن دسته از کتابخانه هایی است که مختص برنامه نویسی اندروید می باشند. نمونه ای از این کتابخانه ها شامل کتابخانه های application framework است، علاوه بر این امکانات، رابط کاربری، محیط گرافیکی و دسترسی به دیتابیس از امکانات دیگر این کتابخانه ها هستند.
برخی از کتابخانه های بسیار مهم برای برنامه نویسان اندروید:
- app – دسترسی به مدل اپلیکیشن را فراهم می کند و پایه و اساس تمام اپلیکیشن های اندروید می باشد.
- content – دسترسی به محتوا، انتشار و پیام رسانی بین اپلیکیشن ها و اجزای اپلیکیشن ها را فراهم می کند.
- database – برای دسترسی به داده های منتشرشده توسط content provider ها استفاده می شود و شامل کلاس های مدیریت دیتابیس SQLite می باشد.
- opengl – اینترفیس جاوا برای اجرای API مربوط به OpenGL ES 3D graphics
- os – اپلیکیشن هایی با امکان دسترسی به سرویس های استاندارد سیستم عامل، مانند پیام، سرویس های سیستم را فراهم می کند.
- text – برای نمایش و دستکاری متن روی نمایشگر دستگاه استفاده می شود.
- view – بلاک های اصلی مربوط به UI اپلیکیشن
- widget – مجموعه قدرتمندی از اجزای UI از پیش تعریف شده مانند button، label، listView، layout manager، radio button و…
Android Runtime
سومین قسمت از معماری اندروید می باشد و در دومین لایه از پایین قرار دارد. این بخش یک جزء کلیدی به نام Dalvik Virtual Machine را فراهم می کند که به نوعی ماشین مجازی جاواست که برای اندروید طراحی و بهینه شده است.
Dalvik VM از ویژگی های هسته لینوکس مانند مدیریت حافظه و multi-threading، استفاده می کند که به طور پیش فرض در زبان جاوا وجود دارد. Dalvik VM هر برنامه اندرویدی را قادر می سازد تا در فرایند خود و با نمونه ماشین مجازی Dalvik منحصر به خود اجرا شود.
Android runtime همچنین یک سری کتابخانه هسته ای فراهم می کند که برنامه نویسان اندروید را قادر می سازد تا اپلیکیشن هایی با زبان استاندارد برنامه نویسی جاوا بنویسند.
Application Framework
لایه Application Framework سرویس های سطح بالای بسیاری را به شکل کلاس های جاوا فراهم می کند. توسعه دهندگان اپلیکیشن مجاز هستند که از این سرویس ها در اپلیکیشن های خود استفاده کنند.
Android Framework شامل سرویس های کلیدی زیر می باشد:
- Activity Manager – تمام قسمت های چرخه حیات (lifeCycle) اپلیکیشن و پشته اکتیویتی را کنترل می کند.
- Content Providers – امکان ارسال و به اشتراک گذاری داده ها با اپلیکیشن های دیگر را فراهم می کند.
- Resource Manager – دسترسی به منابع غیر کد (non-code) مانند string، تنظیمات رنگ و layout های UI را فراهم می کند.
- Notifications Manager – به اپلیکیشن این امکان را می دهد که پیام های هشدار و نوتیفیکشن را به کاربر نشان دهد.
- View System – مجموعه قابل توسعه ای از viewها که برای ایجاد UI استفاده می شود.
Applications
تمام اپلیکیشن های اندروید را می توان در لایه بالا یافت. ما اپلیکیشن های خود را برای نصب در این لایه ایجاد می کنیم. دفترچه تلفن، مرورگرها، بازی ها و.. مثال هایی از این اپلیکیشن ها هستند.