- Как работает Android. Архитектура платформы
- Linux Kernel
- Основные задачи, выполняемые ядром.
- Hardware Abstraction Layer (HAL)
- Android Runtime (ART)
- Native C/C++ Libraries
- Java API Framework (Application Framework)
- System Apps
- Полезные ссылки
- С днем рождения, Android. Как появилась самая популярная мобильная ОС
Как работает Android. Архитектура платформы
Думаю, что каждому начинающему разработчику тяжело понять как Android устроен и в принципе из чего он состоит. В этой статье я постараюсь наиболее детально и понятно расписать как система Android спроектирована.
Начнем со схемы, на которой визуально отображены все основные компоненты архитектуры, а ниже детально (насколько это возможно) рассмотрим каждый из них.
Linux Kernel
Данный уровень является базовым в архитектуре Android, так как вся система Android построена на ядре Linux с некоторыми архитектурными изменениями.
Основные задачи, выполняемые ядром.
Ядро содержит в себе драйверы, необходимые для взаимодействия с оборудованием. Например, возьмем Bluetooth. В наше время сложно найти устройство, которое бы не включало в себя эту функцию. Поэтому ядро должно включать драйвер для работы с ним. На схеме выше как раз таки перечислены все драйверы, входящие в ядро Linux, поэтому не будем перечислять их все по отдельности.
Power Management — это своего рода система управления питанием. Она предоставляет различные средства, с помощью которых приложение может реагировать на режимы питания устройства, а также поддерживать необходимые компоненты устройства активными. Например, при чтении книги нам было бы удобно, если бы экран оставался постоянно активным. Или когда мы включаем музыку и она продолжает проигрываться в фоне при отключенном экране.
Помимо вышеперечисленного, ядро Linux обеспечивает управление памятью и процессом.
Управление памятью.
При запуске различных приложений ядро гарантирует, что пространство памяти, которое они используют, не конфликтует и не перезаписывает друг друга. Также оно проверяет, что все приложения получают достаточный объем памяти для своей работы, и в то же время следит, чтобы ни одно приложение не занимало слишком много места.
Управление процессом.
Каждое приложение в Android работает в отдельном процессе. Ядро же отвечает за управление этими процессами, а именно за создание, приостановку, остановку, или завершение процессов, за одновременное выполнение нескольких процессов, обмен данными между процессами, запуск процессов в фоновом режиме. Помимо этого ядро распределяет работу между процессорами устройства, что максимизирует производительность устройств с несколькими ядрами.
Hardware Abstraction Layer (HAL)
HAL обеспечивает связь между драйверами и библиотеками. Состоит он из нескольких библиотечных модулей, каждый из которых реализует интерфейс для определенного аппаратного компонента (Bluetooth, Камера итд.). И когда к оборудованию устройства обращаются через API-интерфейс, загружается необходимый для его работы модуль.
Если объяснять на пальцах, то когда от приложения поступает какое-либо сообщение, HAL его обрабатывает таким образом, чтобы оно стало понятным для драйверов. И наоборот.
Android Runtime (ART)
Основным языком Android был выбран Java, поскольку это один из самых популярных языков программирования. Для Java существует много наработок и специалистов, а написанные на нем программы переносимы между операционными системами.
Но для того, чтобы программа работала на Java необходима виртуальная машина ‒ Java Virtual Machine. В Android используется виртуальная машина Android Runtime (ART). Эта машина специально оптимизирована для работы на мобильных устройствах: с нехваткой памяти, с постоянной выгрузкой и загрузкой приложений и т.д. В версиях Android ниже 5.0 Lollipop, использовалась виртуальная машина Dalvik — старая реализация виртуальной машины для Android.
В ART, как и в Dalvik, используется свой формат байт-кода ‒ DEX (Dalvik executable). При сборке приложения исходные файлы сначала компилируются в файлы типа class обычным компилятором, а затем конвертируются специальной утилитой в DEX .
И Dalvik, и ART оптимизируют выполняемый код, используя механизм компиляции just-in-time (JIT) — компиляция происходит во время выполнения приложения, что позволяет оптимизировать код для выполнения на конкретном устройстве. При этом байт-код приложения можно переносить на другие устройства.
ART может компилировать байт-код заранее, а не во время выполнения, используя ahead-of-time (AOT). Система сама решает, когда и какие приложения необходимо скомпилировать. Например, когда устройство не загружено и подключено к зарядке. При этом ART учитывает информацию о приложении, собранную во время предыдущих запусков, что дает дополнительную оптимизацию.
Native C/C++ Libraries
Набор библиотек, написанных на языках C или C++ и используемых различными компонентами ОС.
- WebKit — представляет из себя движок веб-браузера и другие связанные с ним функции.
- Media Framework предоставляет медиа кодеки, позволяющие записывать и воспроизводить различные медиа-форматы.
- OpenGL — используется для отображения 2D и 3D графики.
- SQLite — движок базы данных, используемый в Android для хранения данных.
Java API Framework (Application Framework)
Набор API, написанный на языке Java и предоставляющий разработчикам доступ ко всем функциям ОС Android. Эти API-интерфейсы образуют строительные блоки, необходимые для создания приложений, упрощая повторное использование основных, модульных, системных компонентов и сервисов, таких как:
- Activity Manager — управляет жизненным циклом приложения и обеспечивает общий навигационный стек обратных вызовов.
- Window Manager — управляет окнами и является абстракцией библиотеки Surface Manager.
- Content Providers — позволяет приложению получать доступ к данным из других приложений или обмениваться собственными данными, т.е. предоставляет механизм для обмена данными между приложениями.
- View System — содержит строительные блоки для создания пользовательского интерфейса приложения (списки, тексты, кнопки итд.), а также управляет событиями элементов пользовательского интерфейса.
- Package Manager — управляет различными видами информации, связанными с пакетами приложений, которые в настоящее время установлены на устройстве.
- Telephony Manager — позволяет приложению использовать возможности телефонии.
- Resource Manager — обеспечивает доступ к таким ресурсам, как локализованные строки, растровые изображения, графика и макеты.
- Location Manager — возможность определения местоположения.
- Notification Manager — отображение уведомлений в строке состояния.
System Apps
Верхний уровень в архитектуре Android, который включает в себя ряд системных (предустановленных) приложений и тонну других приложений, которые можно скачать с Google Play.
Системные приложения на всех устройствах разные, но все они являются предустановленными производителями устройства (приложение для SMS-сообщений, календарь, карты, браузер, контакты итд.).
Этот уровень использует все уровни ниже (если смотреть на схему) для правильного функционирования приложений.
Полезные ссылки
Официальная документация.
Hardware Abstraction Layer (HAL) на wiki.
Android Runtime на wiki.
Источник
С днем рождения, Android. Как появилась самая популярная мобильная ОС
Когда чуть больше тринадцати лет назад в околоайтишных кругах начали бродить слухи о том, что Google разрабатывает новую операционную систему на базе ядра Linux, никто не придал этому значения. Ну, появится еще один дистрибутив от всем известной корпорации, дело житейское. Тогда никто не мог предположить, что Google затевает настоящую революцию, и их разработка уже в ближайшем будущем завоюет рынок мобильных устройств. Релиз первой версии ОС Android состоялся 23 сентября 2008 года, сегодня популярнейшая на нашей планете мобильная платформа празднует очередной день рождения. Вспомним, как это было?
Изначально разработкой всем известной сегодня операционной системы занималась независимая компания Android, Inc., созданная в 2003 году в Пало Альто, Калифорния, четырьмя энтузиастами — Эндрю Рубином, Ричем Майнером, Ником Сирсом и Крисом Уайтом. Сам Рубин, когда-то работавший инженером в Apple, вспоминал, что его команда трудилась над операционной системой с прицелом на цифровые камеры. Именно они на заре «нулевых» считались наиболее «умными» и перспективными среди массовых электронных устройств.
Однако рынок цифровых фотокамер был все же достаточно узким, и убедить инвесторов в перспективности своего стартапа Рубину никак не удавалось. В какой-то период у юной компании Android, Inc. не хватало денег даже на оплату аренды, и разработчикам на полном серьезе грозило выселение из офиса. Ситуацию тогда спас близкий друг Эндрю Рубина Стив Перлман, который одолжил ему 10 000 долларов наличными, что буквально спасло фирму от разорения. В обмен Рубин предложил другу долю в компании, но Стив благородно отказался: «я сделал это просто потому, что хотел помочь Энди в трудной жизненной ситуации», — вспоминал потом он. Этот инцидент заставил основателя пересмотреть свои планы, и Рубин решил, что Android следует превратить в операционную систему для мобильных устройств, которая сможет конкурировать с Symbian и Microsoft Windows Mobile.
Сменив парадигму, Рубин с удвоенными усилиями принялся искать финансирование, и в течение 2005 года пытался заключить сделки с HTC и Samsung, но обе компании не оценили перспектив Android, и вкладываться в «сомнительный проект» отказались. Тем временем, в Google также проектировали компактную ОС для управления цифровыми камерами — с возможностью отображать на дисплее отснятые кадры, вспомогательную графику и устанавливать связь с компьютером. Однако зачем тратить ресурсы на создание чего-либо с нуля, когда можно купить почти готовое? Наверное, именно так посчитали в Маунтин-Вью, и в августе 2005 года приобрели Android, Inc. за 130 млн. долларов. Сам Эндрю Рубин при этом стал акционером и сотрудником Google. Позже, в 2010 году, вице-президент Google по корпоративному развитию Дэвид Лауи оценил эту сделку, как самую успешную за всю историю корпорации.
Ключевым моментом в истории Android стала принятая Google финансовая модель: не инновационная, но все же достаточно смелая для 2005 года. Корпорация решила бесплатно поставлять операционную систему разработчикам мобильных устройств, в то время как извлекать прибыль она собиралась благодаря сервисным услугам и агентскому проценту от реализации приложений. В первую очередь Google решила предложить Android производителям мобильных телефонов и операторам связи, делая особый акцент на том, что она предоставляет не просто обновляемую операционную систему, а целую инфраструктуру, включающую множество гибких возможностей. Именно эта концепция сыграла ключевую роль в росте популярности новой платформы, что позволило ей в конечном итоге завоевать лидерство на рынке мобильных устройств.
Бета-версию Android 1.0 для разработчиков Google выпустила 5 ноября 2007 года, а первое устройство с новой операционной системой на борту, T-Mobile G1, также известное под названием HTC Dream, было представлено публике в сентябре 2008 года — через год с небольшим после того, как в продажу поступил iPhone от Apple. Генеральный директор Google Эрик Шмидт не слишком переживал по поводу конкуренции с «яблочной» корпорацией: он знал, что в отличие от iOS новая платформа будет работать на тысячах различных мобильных устройств. Именно с этой целью было создано объединение под названием Open Handset Alliance, в которое вошли производители мобильных телефонов, включая HTC и Motorola, микросхем, такие как Qualcomm и Texas Instruments, и крупнейшие операторы сотовой связи в США, список которых возглавил T-Mobile. Для этого оператора компанией HTC и был разработан первый смартфон под управлением Android — телефон с 3,2-дюймовым сенсорным дисплеем, полноценной выдвижной клавиатурой, оперативной памятью на 192 Мбайта и флеш-памятью объемом 256 Мбайт, которая могла быть расширена за счет подключения внешней microSD-карты объемом до 16 Гбайт. Уже в первый год в США, Великобритании и Европе было продано более миллиона таких устройств.
Изначально в недрах Google бродили сомнения насчет того, должен ли Android поддерживать сенсорные экраны — инженеры полагали, что тачскрин вряд ли сможет полноценно заменить кнопочную клавиатуру. Именно поэтому первый прототип HTC Dream был так похож на флагманские мобильные телефоны Blackberry — он обладал миниатюрной QWERTY-клавиатурой, но не имел сенсорного экрана. Позже разработчики все-таки решили, что поддержка тачскрина необходима. Правильность этого решения подтвердило появление первого iPhone, а вскоре Nokia и BlackBerry анонсировали сенсорные смартфоны, призванные составить конкуренцию iPhone 3G.
Знакомый ныне всем и каждому логотип Android придумала штатный дизайнер Google Ирина Блок. Сама Ирина вспоминала, что единственным требованием, которое предъявило ей руководство корпорации, было сделать лого похожим на робота. По ее собственным словам, логотип должен был стать максимально простым и запоминающимся — при этом в своей работе Ирина вдохновлялась стандартными символами, обозначающими мужской и женский туалеты. К слову, созданного ею зеленого робота, ставшего талисманом и маскотом Android, зовут Энди — в честь первого разработчика и создателя Android Эндрю Рубина. Внешний вид логотипа несколько раз менялся, но вот созданный Блок персонаж дожил до наших дней в чуть модифицированном, но почти первозданном виде. Сам Эндрю Рубин вынужден был покинуть Google в 2014 году после обвинений в сексуальных домогательствах к симпатичным сотрудницам. В качестве «прощального подарка» он получил от бывшего работодателя выходное пособие в размере 90 млн. долларов, что, в общем-то, неплохо для бывшего программиста, но довольно скромно для создателя и первого идеолога операционной системы, завоевавшей мир.
Первая версия Android, конечно, в значительной степени отличалась от того, к чему пользователи привыкли сейчас. Но она включала такие сервисы, как Google Maps, приложения YouTube и Android Market, а также мобильный браузер — еще не Chrome, до рождения которого оставалось несколько лет, но вполне работоспособный. В Android 1.0 была реализована демонстрация на экране уведомлений и виджетов, значков приложений, присутствовал единый центр настроек. В отличие от iPhone, операционная система от Google поддерживала работу большого количества аппаратных кнопок смартфона, включая полноценную QWERTY-клавиатуру. Примечательно, что первая версия Android получила неофициальное наименование Apple Pie, «яблочный пирог», — видимо, в качестве своеобразной иронии над основным конкурентом Google.
За минувшие годы Android превратился в платформу для смартфонов, планшетов, цифровых проигрывателей, электронных книг, наручных часов, фитнес-браслетов, игровых приставок, ноутбуков, нетбуков, телевизоров, проекторов, одноплатных компьютеров, бытовых роботов и даже автомобильных мультимедиа-систем. Сейчас это самая популярная в мире мобильная платформа, и эта популярность в будущем, скорее всего, станет только расти.13 лет — небольшой срок, Android еще не вышел из юношеского возраста, а значит, зрелость у этой ОС еще впереди.
Источник