HomeКакво е Android OS?

1. Какво е Android OS?
Android OS е мобилна операционна система разработваща се от Google и Open Handset Alliance (OHA). Операционната система е базирана на модифицирана версия на Linux ядро за работа върху мобилни устройства. Като цяло системата представлява софтуерен стак съставящ се от Java приложения създадени чрез Java базираният обектно-ориентиран фреймуърк изграден над Java core библиотеките. Всяко приложение се стартира на своя инстанция на Dalvic виртуална машина /с версия 2.2 се въвежда Just In Time (JIT) компилиране, което значително ускорява процеса.). Не всичко е написано на Java. Например библиотеките за Surface Manager, Open Core media framework, SQLite релационна система за управление на база данни, OpenGL ES 2.0 3D graphics API, WebKit layout engine и др.. Операционната система Android се състой от 12 милиона реда включващи 3 мил. реда XML, 2.8 мил. реда C, 2.1 мил. реда Java и 1.75 мил. реда C++.

2. Архитектура на Android OS
Следната диаграма показва основните компоненти на операционната система Android:

  • Приложения (Applications)
    • Android OS идва с комплект от основни програми като Еmail клиент, SMS програма, календар, интерент браузър и други. Всички програми са написани на програмният език Java.
  • Application Framework
    • Чрез предоставянето на отворена платформа за разработване на приложения, Android предоставя възможност на разработчиците да изграждат изключително богати и иновативни приложения. Програмистите са свободни да се възползват от хардуера на устройството, достъп до местоположението на устройството, да стартират background services, да добавят известия в status bar-а и много, много други неща!

Програмистите имат пълен достъп до същите фреймуърк API-та използвани от вградените програми. Архитектурата на приложенията е проектирана, така че да улесни многократната употреба на компоненти; всяко приложение може да публикува своите възможности и всякo другo може да ги използва. Същият този механизъм позволява приложенията да бъдат разменяни от потребителя. Например, ако не ви харесва вградената Email програма може да си свалите друга и да я направите по подразбиране.

В основата на всяко приложение са набор от сервизи и системи включващи:

  • Богат и разширяващ се набор от Views, които могат да бъдат използвани за изграждането на приложения, включващи: Lists (списъци), Grids (мрежи), Text Boxes (текстови кутии), Buttons (бутони) и дори възможност за вграждане на уеб браузъра в приложението.
  • Content Providers, които дават възможност на приложенията да получават достъп до данни  от други приложения (като например програмата Contacts) или да споделят тяхните общи данни.
  • Resource Manager – предоставя достъп до ресурси различни от код, като например стрингове, графики или layout файлове.
  • Notification Manager, който дава възможност на приложенията да показват различни известявания в status bar-a.
  • Activity Manager – служи за управление на lifecycle-a (цикълът на живот) на приложението и предоставя обща навигация в backstack-a.
  • Библиотеки (Libraries)
    • Android включва набор от C/C++ библиотеки използващи се от различни компоненти на системата. Тези възможности са на разположение на програмистите през Android фреймуърк-а. Някои от библитеките:
      • System C library – BSD-произовдна имплементация на системната C библиотека (libc) пригодена за вградените Linux-базирани устройства.
      • Media Libraries – базирана на OpenCORE на PacketVideo; библиотеки поддържащи възпроизвеждане и запис на много от популярни видео и аудио формати, както също така и на статични снимкови файлове, включващи: MPEG4, H.264, MP3, AAC, AMR, JPG, и PNG.
      • Surface Manager – управлява достъпът на показване на подсистемите и безпроблемно копозира 2D и 3D графични слоеве от различни приложения.
      • LibWebCore – модерен уеб браузър engine, който се грижи за браузърът на Android както и за вграждащото се web view.
      • SGL – основният 2D графичен engine.
      • 3D libraries – имплементация базирана на OpenGL ES 1.0 API-та; библиотеките използват както хардуерното 3D ускорение (ако е на разположение) или включеният, високо оптимизиран 3D растерайзър.
      • FreeType – bitmap и векторно рендиране на шрифтове.
      • SQLite – мощен и лек engine на релационни бази от данни, които са на разположение на всички приложения.
  • Android Runtime
    • Android включва набор от основни библиотеки, които предоставят голяма част от функционалността, която е на разположение в основните библиотеки на езикът за програмиране Java.

Всяко Android приложение се стартира в свой процес със своя инстанция на Dalvik виртуалната машина. Dalvik е написана, така че устройството да може да стартира множество от виртуални машини ефективно. Dalvic VM стартира Dalvik Executable (.dex) формат, който е оптимизиран за минимален отпечатък върху паметта.  Виртуалната машина е базирана на регистри и стартира класове компилирани чрез компилатора на програмният език Java и трансформирани в .dex формат чрез включеният “dx” инструмент.

Dalvik виртуалната машина разчита на Linux ядрото за основна функционалност като threading и low-level управление на паметта.

  • Linux Kernel
    • Android разчита на Linux версия 2.6 за основни системни сервизи като сигурност, управление на паметта, управление на процесите, мрежовият стак и драйвър модела. Ядрото също така играе ролята на абстрактен слой между хардуера и останалата част от софтуерният стак.