2010-10-09, 14:07:47
Цитат:Според мен преди да започнем да навлизаме в дебрите на програмирането за Android е хубаво да се запознаем какво представлява самата операционна система. В тази статия съм се опитал да дам бегъл поглед над това от какво се състои операционната система.
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:
![[Изображение: system-architecture.jpg]](http://developer.android.com/images/system-architecture.jpg)
- Приложения (Applications)
- Android OS идва с комплект от основни програми като Еmail клиент, SMS програма, календар, интерент браузър и други. Всички програми са написани на програмният език Java.
- 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.
- Богат и разширяващ се набор от Views, които могат да бъдат използвани за изграждането на приложения, включващи: Lists (списъци), Grids (мрежи), Text Boxes (текстови кутии), Buttons (бутони) и дори възможност за вграждане на уеб браузъра в приложението.
- Чрез предоставянето на отворена платформа за разработване на приложения, Android предоставя възможност на разработчиците да изграждат изключително богати и иновативни приложения. Програмистите са свободни да се възползват от хардуера на устройството, достъп до местоположението на устройството, да стартират background services, да добавят известия в status bar-а и много, много други неща!
- Библиотеки (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 на релационни бази от данни, които са на разположение на всички приложения.
- System C library - BSD-произовдна имплементация на системната C библиотека (libc) пригодена за вградените Linux-базирани устройства.
- Android включва набор от C/C++ библиотеки използващи се от различни компоненти на системата. Тези възможности са на разположение на програмистите през Android фреймуърк-а. Някои от библитеките:
- Android Runtime
- Android включва набор от основни библиотеки, които предоставят голяма част от функционалността, която е на разположение в основните библиотеки на езикът за програмиране Java.
Всяко Android приложение се стартира в свой процес със своя инстанция на Dalvik виртуалната машина. Dalvik е написана, така че устройството да може да стартира множество от виртуални машини ефективно. Dalvic VM стартира Dalvik Executable (.dex) формат, който е оптимизиран за минимален отпечатък върху паметта. Виртуалната машина е базирана на регистри и стартира класове компилирани чрез компилатора на програмният език Java и трансформирани в .dex формат чрез включеният "dx" инструмент.
Dalvik виртуалната машина разчита на Linux ядрото за основна функционалност като threading и low-level управление на паметта.[/*]
- Android включва набор от основни библиотеки, които предоставят голяма част от функционалността, която е на разположение в основните библиотеки на езикът за програмиране Java.
- Linux Kernel
- Android разчита на Linux версия 2.6 за основни системни сервизи като сигурност, управление на паметта, управление на процесите, мрежовият стак и драйвър модела. Ядрото също така играе ролята на абстрактен слой между хардуера и останалата част от софтуерният стак.
- Android разчита на Linux версия 2.6 за основни системни сервизи като сигурност, управление на паметта, управление на процесите, мрежовият стак и драйвър модела. Ядрото също така играе ролята на абстрактен слой между хардуера и останалата част от софтуерният стак.
---------------------------------------------------------------------------------------------------
Използвана информация:
Wikipedia, Developer.Android.Com
ПП:
Имам някакви бегли спомени, че май съществуваше подобна тема, но не успях да я намеря. Ако има и е по-разбираема и пълна - то нека тази се изтрие и премести старата в този раздел!

Доста превеждане и писане падна и не съм успял да преведа всички термини, защото не успях да намеря тяхните еквивалентни в нашият роден език.
Ако има грешки било то синтактични или семантични - кажете ми и ще ги коригирам!
Благодаря!

“Try not to become a man of success. Rather become a man of value.”
― Albert Einstein