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

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

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

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

Слои

Ниже приведены слои, из которых состоит Android архитектура, как указано на схеме:

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

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

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

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

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

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

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

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

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

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

  1. Главная: Домашняя страница на Android состоит из значков запуска часто используемых приложений, к которым конечному пользователю может потребоваться быстрый доступ. Вы можете запустить приложения, щелкнув средства запуска этих приложений. В самом верху экрана расположены виджеты, показывающие сеть, уровень заряда батареи, дату и время.
  2. Контактная информация: Androidпо умолчанию предоставляет средства для хранения и извлечения контактов. Контактная информация передается другим приложениям для расширения функциональности.
  3. Сообщения: Android обеспечивает возможность отправки и получения SMS-сообщений.
  4. Эл. почта: Android поставляется с собственной поддержкой почтовых служб. Настройка Android устройство требует учетную запись Gmail. Настройка Gmail активирует другие компоненты, зависящие от электронной почты, на Android устройства. Некоторые функции, зависящие от электронной почты, включают механизмы безопасности и восстановления. Другая функция, зависящая от электронной почты, — это доступ к 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 — это слоты, в которых мы можем просматривать пользовательский интерфейс нашего приложения. Android использует диспетчер окон для предоставления этой информации приложениям и системе во время их работы, чтобы они могли адаптироваться к режиму, в котором работает устройство.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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-графики для рендеринга. Это также позволяет сделать это за счет буферизации за кадром.

Ядро Linux

Корневой компонент Android Система — это ядро ​​Linux. Это фундаментальная часть, которая позволяет все Androidфункциональность.

Ядро Linux

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

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

Что касается AndroidЯдро отвечает за многие основополагающие функции, включая, помимо прочего, следующие:

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

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

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

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

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

1) USB-драйвер

Linux также предоставляет Android со средствами взаимодействия с USB-устройствами. Современные устройства оснащены различными портами USB, включая USB 2.0 и новые версии USB, включая USB-C. Эти драйверы позволяют использовать порт USB для зарядки, передачи данных в реальном времени, таких как журналы, с 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 позволяет взаимодействовать с компонентами дисплея. Для большинства устройств компонентом интерфейса является сенсорный ЖК-экран. Он позволяет поддерживать настройку и рисование пикселей.

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

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

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

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

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

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

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

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

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

8) Биндер

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

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

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

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

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

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

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

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

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

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

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

Итого

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