Android ArchiСтруктура: уровни приложения, структура, компонент.

Первоначальный выпуск операционной системы Android состоялся в 2008 году. Даже в самом начале команда, создавшая операционную систему, построила ее на плечах гигантов. Помимо пользовательского интерфейса, который ОС Android представляет на поверхностном уровне, он состоит из нескольких слоев. Эти уровни включают собственный код и технологии с открытым исходным кодом, которые постоянно развиваются на протяжении десятилетий.

Android был разработан благодаря совместным усилиям и инвестициям многих компаний. Основной компанией, занимающейся разработкой Android, является Google. Другие компании включают производителей устройств, таких как Samsung, LG; производители процессоров, такие как Intel и ARM, и это лишь некоторые из них.

Когда мы говорим об Android archiМы имеем в виду то, как система Android была спроектирована, сегментирована на уровни и настроена для работы как системы. Создание такого комplex Система требует тщательного структурирования, чтобы обеспечить слаженную работу всех компонентов. Его archiТехнология гарантирует, что многие компоненты функционируют как единое целое без сбоев.

В этом уроке вы узнаете:

Слои

Фоллоwing это слои, из которых состоит Android archiтектура, как указано на схеме:

  1. Применение
  2. Рамки приложений
  3. Среда выполнения Android и основные библиотеки
  4. Ядро Linux

Разработка операционной системы для мобильных устройств сопряжена с рядом проблем. Используя этот многоуровневый archiТехнология гарантирует, что различные проблемы разбиваются на части и решаются на разных уровнях.

Многослойный architecture помогает разделить проблемы и гарантировать, что разработчикам программного обеспечения Android не придется на каждом шагу сталкиваться с проблемами низкого уровня. Вместо этого они могут сосредоточиться на обеспечении бизнес-ценности, связанной с уровнем, над которым они работают.

Разработчики работают над тем, чтобы приложениям не приходилось беспокоиться о реализации инфраструктуры приложения. Эта работа остается за разработчиками системы, работающими над платформой приложений.

Фреймворк приложенияk developОни работают над опытом разработчиков и им не нужно беспокоиться о драйверах низкого уровня. Системные инженеры низкого уровня могут полностью сосредоточиться на компонентах низкого уровня, таких как драйверы Bluetooth или аудио и тому подобное.

Многоуровневая структура Android позволяет применять обновления с исправлениями ошибок или улучшениями к каждому уровню отдельно. Это гарантирует, что изменения между слоями не будут мешать друг другу. Это позволяет людям, работающим на разных уровнях ОС, не мешать друг другу при выпуске новых обновлений и выпусков.

Приложение для Android

Приложение для Android
Приложение для Android

Это уровень, с которым взаимодействуют конечные пользователи. Именно на этом уровне разработчики приложений публикуют свои приложения для запуска.

По умолчанию Android поставляется с набором приложений, которые позволяют использовать устройства Android без каких-либо ограничений.

  1. Главная: Домашняя страница на Android состоит из значков запуска часто используемых приложений, к которым конечному пользователю может потребоваться быстрый доступ. Вы можете запустить приложения, щелкнув средства запуска этих приложений. В самом верху экрана расположены виджеты, показывающие сеть, уровень заряда батареи, дату и время.
  2. Контактная информация: Android по умолчанию предоставляет средства для хранения и извлечения контактов. Контактная информация передается другим приложениям для расширения функциональности.
  3. Сообщения: Android предоставляет возможность отправлять и получать SMS-сообщения.
  4. Эл. почта: Android поставляется со встроенной поддержкой электроннойmail услуги. Для настройки устройства Android требуется буква G.mail счет. Настройка Gmail активирует другие электронныеmail-зависимые компоненты на устройствах Android. Некоторые эmail зависимые функции включают механизмы безопасности и восстановления. Еще один еmail зависимой функцией является доступ к Play Store, торговой площадке приложений для Android.
  5. Браузер: Android поставляется с браузером по умолчанию.
  6. Ящик уведомлений: Проведение пальцем вниз по экрану открывает панель уведомлений. Он предоставляет события приложения, о которых должен знать пользователь. Над уведомлением находится набор ярлыков для некоторых часто используемых настроек устройства, которые пользователи могут переключать. Эти настройки включают включение и выключение различных аппаратных компонентов, таких как Bluetooth и Wi-Fi. Длительное нажатие на эти события позволяет нам перейти на страницу их конфигурации.

Этот уровень также называется пользовательским уровнем в отличие от нижних уровней, которые в основном предназначены для разработки приложений. Разработчики приложений создают и настраивают возможности своих приложений на этом уровне. Уровни ниже уровня приложения не настраиваются разработчиками приложений. Они считаются частью системного уровня. Эти слои настраиваются производителями устройств, командами Google по Android или третьими лицами, которые хотят использовать исходный код Android для своих продуктов или исследований.

Рамки приложений

ОС Android предоставляет базовые библиотеки и функции устройства Android, использующие Java API. Это так называемая платформа Android. Платформа предоставляет безопасные и унифицированные средства использования ресурсов устройства Android.

Рамки приложений
Фреймворк приложения

1) Менеджер активности

Приложения используют компонент активности Android для представления точки входа в приложение. Действия Android — это компоненты, в которых находится пользовательский интерфейс, с которым взаимодействуют пользователи приложения. Когда конечные пользователи взаимодействуют с устройством Android, они запускают, останавливают и переключаются между многими приложениями. Каждое навигационное событие вызывает активацию и деактивацию многих действий в соответствующих приложениях.

Android ActivityManager отвечает за предсказуемое и последовательное поведение во время переходов между приложениями. ActivityManager предоставляет создателям приложений возможность реагировать на действия ОС Android, когда они выполняют глобальные действия. Приложения могут прослушивать такие события, как ротация устройства, разрушение приложения из-за нехватки памяти, смещение приложения из фокуса и т. д.

Некоторые примеры того, как приложения могут реагировать на эти переходы, включают приостановку активности в игре, остановку воспроизведения музыки во время телефонного звонка.

2) Оконный менеджер

Android может определять информацию на экране, чтобы определить требования, необходимые для создания windows для приложений. Windows — это слоты, в которых мы можем просматривать пользовательский интерфейс нашего приложения. Android использует диспетчер окон для предоставления этой информации приложениям и системе во время их работы, чтобы они могли адаптироваться к режиму, в котором работает устройство.

Диспетчер окон помогает обеспечить индивидуальную работу с приложением. Приложения могут заполнять весь экран для полного погружения или делиться экраном с другими приложениями. Android позволяет это allowing мульти-windows для каждого приложения.

3) Менеджер местоположения

Большинство устройств Android оснащены устройствами GPS, которые могут определять местоположение пользователя, используя спутниковую информацию, которая может достигать точности метров. Программисты могут запрашивать у пользователей разрешение на определение местоположения, сообщать о местоположении и предоставлять осведомленные возможности.

Android также может использовать беспроводные технологии для дальнейшего улучшения местоположения.tails и увеличить зону покрытия, когда устройства находятся в закрытых помещениях. Android предоставляет эти функции под эгидой Location-Manager.

4) Менеджер телефонии

Большинство устройств Android выполняют основную роль в телефонии. Android использует TelephoneManager для объединения аппаратных и программных компонентов для предоставления функций телефонии. Аппаратные компоненты включают в себя внешние части, такие как SIM-карта, и части устройства, такие как микрофон, камера и динамики. Компоненты программного обеспечения включают в себя собственные компоненты, такие как панель набора номера, телефонная книга, профили мелодий звонка. Используя TelephoneManager, разработчик может расширить или точно настроить функции вызова по умолчанию.

5) Менеджер ресурсов

Приложение для Android обычно включает в себя нечто большее, чем просто код. У них также есть другие ресурсы, такие как значки, аудио- и видеофайлы, анимация, текстовые файлы и тому подобное. Android помогает обеспечить эффективный и оперативный доступ к этим ресурсам. Это также гарантирует доставку нужных ресурсов конечным пользователям. Например, при заполнении полей в приложениях используются текстовые файлы на соответствующем языке.

6) Система просмотра

Android также предоставляет средства для легкого создания общих визуальных компонентов, необходимых для взаимодействия с приложением. Эти компоненты включают в себя виджеты, такие как кнопки, держатели изображений, такие как ImageView, компоненты для отображения списка элементов, такие как ListView, и многое другое. Компоненты уже готовы, но их также можно настроить в соответствии с потребностями разработчиков приложений и брендингом.

7) Менеджер уведомлений

Менеджер уведомлений отвечает за информирование пользователей Android о событиях приложения. Это достигается путем подачи пользователям визуальных, звуковых или вибрационных сигналов или их комбинации при возникновении события. Эти события имеют внешние и внутренние триггеры. Некоторыми примерами внутренних триггеров являются события о низком заряде батареи, которые вызывают уведомление о низком заряде батареи. Другим примером являются определяемые пользователем события, такие как сигнал тревоги. Некоторые примеры внешних триггеров включают новые сообщения или обнаруженные новые сети Wi-Fi.

Android предоставляет программистам и конечным пользователям возможность точной настройки системы уведомлений. Это может помочь гарантировать, что они смогут отправлять и получать события уведомлений способом, который лучше всего подходит им и их текущей среде.

8) Менеджер пакетов

Android также предоставляет доступ к информации об установленных приложениях. Android отслеживает информацию о приложениях, такую ​​как события установки и удаления, разрешения, запрашиваемые приложением, и использование ресурсов, например потребление памяти.

Эта информация может позволить разработчикам активировать или деактивировать функциональные возможности своих приложений в зависимости от новых функций, представленных сопутствующими приложениями.

9) Поставщик контента

В Android предусмотрен стандартизированный способ обмена данными между приложениями на устройстве с помощью поставщика контента. Разработчики могут использовать поставщика контента для предоставления данных другим приложениям. Например, они могут сделать данные приложения доступными для поиска из внешних поисковых приложений. Сам Android предоставляет такие данные, как данные календаря, контактные данные и т. д., используя одну и ту же систему.

Среда выполнения Android и основные/родные библиотеки

Библиотеки
Библиотеки

1) Время выполнения Android

В настоящее время Android использует Android Runtime (ART) для выполнения кода приложения. ART предшествует Dalvik Runtime, который компилирует код разработчика в исполняемые файлы Dalvik (файлы Dex). Эти среды выполнения оптимизированы для платформы Android с учетом ограничений процессора и памяти мобильных устройств.

Среда выполнения преобразует код, написанный программистами, в машинный код, который выполняет вычисления и использует компоненты платформы Android для обеспечения функциональности. В Android размещено множество приложений и системных компонентов, каждый из которых работает в своих процессах.

Основные библиотеки

В этом сегменте мы обсудим некоторые основные библиотеки, присутствующие в операционной системе Android.

2) Медиафреймворк

Android также изначально поддерживает популярные медиакодеки, что позволяет приложениям, созданным на платформе Android, легко использовать и воспроизводить мультимедийные компоненты из box.

3) SQLite

В Android также есть База данных SQLite это позволяет приложениям иметь очень быструю собственную функциональность базы данных без необходимости использования сторонних библиотек.

4) Свободный тип

Android поставляется с предустановленным быстрым и гибким движком шрифтов. Это позволяет разработчикам приложений стилизовать компоненты своего приложения и предоставлять богатый опыт, который передает намерения разработчика.

5) OpenGL

Android также поставляется с графической системой OpenGL. Это библиотека C, которая помогает Android использовать аппаратные компоненты для рендеринга 2D- и 3D-графики в реальном времени.

6) SSL

Android также имеет встроенный уровень безопасности, обеспечивающий безопасную связь между приложениями на Android и другими устройствами, такими как серверы, другие мобильные устройства, маршрутизаторы 6.

7) СГЛ

Android поставляется с графической библиотекой, реализованной в низкоуровневом коде, которая эффективно отображает графику для платформы Android. Он работает с компонентами более высокого уровня графического конвейера Android платформы Android.

8) Либк

Ядро Android содержит библиотеки, написанные на C и C++ — языках низкого уровня, предназначенных для встроенного использования и помогающих максимизировать производительность. Libc предоставляет средства для предоставления этим библиотекам низкоуровневых системных функций, таких как потоки, сокеты, ввод-вывод и т.п.

9) Вебкит

Это браузерный движок с открытым исходным кодом, используемый в качестве основы для создания браузеров. Браузер Android по умолчанию до версии 4.4 KitKat использует его для рендеринга веб-страниц. Он позволяет разработчикам приложений отображать веб-компоненты в системе представления с помощью WebView. Это позволяет приложениям интегрировать веб-компоненты в свои функциональные возможности.

10) Поверхностный менеджер

Менеджер поверхности отвечает за обеспечение плавного рендеринга экранов приложений. Это достигается путем составления 2D- и 3D-графики для рендеринга. Это также позволяет сделать это, выполняя закадровое bufferIng.

Ядро Linux

Корневым компонентом системы Android является ядро ​​Linux. Это foundationчасть, которая обеспечивает все функции Android.

Ядро Linux

Ядро Linux — это проверенное в боях программное обеспечение, которое использовалось при разработке операционные системы для устройств широкого спектра: от суперкомпьютеров до небольших гаджетов. Он имеет ограниченные возможности обработки, как небольшие сетевые гаджеты для Интернета вещей (IoT).

Ядро Linux можно настроить в соответствии со спецификациями устройства, чтобы производители могли создавать устройства Android с различными возможностями в соответствии с пользовательским опытом.

Что касается Android, ядро ​​отвечает за многие foundationвсе функциональные возможности, включая, помимо прочего:

  1. Драйверы устройств
  2. Управление памятью
  3. Управление процессом

Раскроем некоторые функциональные возможности:

Драйверы устройств

В ядре Linux содержатся драйверы, необходимые для работы операционной системы с различными аппаратными компонентами. Эти драйверы предоставляют стандартный интерфейс, с которым могут работать аппаратные компоненты разных производителей.

Это позволяет производителям устройств приобретать различные компоненты, такие как компоненты Bluetooth, компоненты Wi-Fi, компоненты камеры. Пока производители соответствуют стандартным спецификациям Android, интеграция происходит без проблем.

1) USB-драйвер

Linux также предоставляет Android средства взаимодействия с USB-устройствами. Современные устройства оснащены различными портами USB, включая USB 2.0 и новые версии USB, включая USB-C. Эти драйверы позволяют использовать USB-порт для зарядки, передавать текущие данные, такие как журналы, с устройств Android и взаимодействовать с Android. Файловая система.

2) Драйвер Bluetooth

Ядро Linux обеспечивает поддержку взаимодействия с аппаратными компонентами Bluetooth. Он обеспечивает способ чтения и записи данных, полученных с поддерживаемых радиочастот Bluetooth. Он также предоставляет набор возможностей Android для настройки Bluetooth.

3) Драйвер Wi-Fi

Ядро Linux предоставляет драйверы для интеграции аппаратных компонентов сети Wi-Fi. Компоненты Wi-Fi, встроенные в мобильные устройства, позволяют устройствам Android подключаться к сетям Wi-Fi. Драйвер позволяет компонентам Wi-Fi транслировать сети Wi-Fi и создавать точки доступа.

4) Драйвер дисплея

Android позволяет взаимодействовать с компонентами дисплея. Для большинства устройств компонентом интерфейса является сенсорный ЖК-экран. Он обеспечивает поддержку настройки и рисования.wing пиксели.

5) Аудиодрайвер

Устройства Android обычно поставляются с аппаратными компонентами для ввода и вывода звука. Аудиодрайверы в ядре позволяют системе Android использовать звук, полученный от этих компонентов, а также производить аудиовыход.

6) Диспетчер питания

Большинство устройств Android используются, когда они отключены от электророзеток. Таким образом, большую часть времени их использования они зависят от батарей. Linux Kernel поставляется с системой управления питанием, которую можно настроить в соответствии с потребностями использующих ее устройств.

ОС Android использует диспетчер питания, чтобы обеспечить питание других компонентов устройства. Он делает это, транслируя различные состояния, связанные с властью. Это состояния «Режим ожидания», «Сон» и «Низкий заряд батареи». На Android диспетчер питания по умолчанию переведен в спящий режим, чтобы обеспечить максимальное время автономной работы.

Диспетчер электропитания предоставляет приложениям средства для реагирования на различные режимы питания. Приложения также могут изменять свое поведение в соответствии с текущим состоянием питания устройства.

Приложение также может запросить изменение политики электропитания по умолчанию. Приложения могут обеспечить желаемую функциональность, например, поддерживать активность аппаратных компонентов. Примером может служить сохранение активности экрана при чтении книги, чтобы пользователь не отвлекался. Другой пример — включение аудиокомпонентов при прослушивании музыки в фоновом режиме.

7) Флэш-память

Большинство устройств Android используют флэш-память в качестве средства хранения. Флэш-память быстрая и занимает меньше места, что делает ее идеальной для небольших устройств. Ядро Linux предоставляет устройствам Android средства чтения и записи во флэш-память. Он предоставляет средства разделения памяти таким образом, чтобы ОС и другие приложения могли легко и эффективно совместно использовать ресурс памяти.

8) Биндер

В Android размещено множество приложений и системных компонентов, каждый из которых работает в своих процессах. В большинстве случаев эти процессы следует изолировать друг от друга, чтобы предотвратить помехи и повреждение данных. Тем не менее, бывают случаи, когда нам нужно передать данные из одного процесса в другой.

Ядро Linux обеспечивает функцию совместного использования данных, предоставляя драйверы связывания. Драйверы Binder обеспечивают межпроцессное взаимодействие, IPC. Использование процессов IPC позволяет обнаруживать другие процессы и обмениваться информацией.

Управление памятью

Другая обязанность ядра Linux — управление памятью. При запуске различных приложений ядро ​​гарантирует, что используемое ими пространство памяти не будет конфликтовать и перезаписывать друг друга.

Это также помогает обеспечить наличие достаточного объема памяти для всех запущенных приложений и гарантировать, что ни одно приложение не займет слишком много места.

Управление процессом

Каждое приложение в Android работает в процессе. Ядро также отвечает за управление процессами. Это означает, что он отвечает за создание, приостановку, остановку, закрытие или завершение процессов.

Ядро обеспечивает различные функции, такие как одновременный запуск нескольких процессов, взаимодействие между процессами, запуск процессов в фоновом режиме и т. д.

Поскольку каждому процессу для правильной работы требуется собственное пространство памяти, ядро ​​гарантирует, что пространства памяти, выделенные для каждого процесса, защищены от других процессов. Это также гарантирует, что такие ресурсы, как Оперативная память выделенные процессам освобождаются при завершении процессов.

Ядро Linux также отвечает за распределение работы между процессорами, присутствующими в устройстве. Это позволяет максимизировать производительность устройств с несколькими ядрами, поскольку процессы разных приложений выполняются на разных ядрах.

Ядро Linux выполняет больше задач, включая обеспечение безопасности.

Резюме:

  • Android archiтектура организована по слоям.
  • Каждый слой решает уникальный набор задач.
  • Конечные пользователи взаимодействуют с приложениями на уровне приложений.
  • Разработчики приложений разрабатывают приложения для использования на уровне приложений. Они делают это, используя инструменты и абстракции, предоставляемые Application Framework.
  • Уровень Android Framework упрощает доступ к низкоуровневым компонентам за счет создания API поверх собственных библиотек.
  • Среда выполнения Android и основные библиотеки используют языки низкого уровня вместе с оптимизацией для мобильных устройств. Это гарантирует бесперебойную работу кода, написанного разработчиками приложений, несмотря на ограничения устройства Android.
  • В самом низу стека программного обеспечения Android находится ядро ​​Linux. Он взаимодействует с аппаратными компонентами, распространенными в устройствах Android.