Готовое_КР_Калькулятор_индекса_массы_тела
.pdfОписанные факты говорят о том, что спектр применения ОС «Аврора» заключается не только в коммерческом использовании, но также и в личном использовании мобильных устройств с ОС «Аврора».
1.1.1 Архитектура операционной системы
Архитектура самой операционной системы «Аврора» состоит из
нескольких слоев:
▪слой интерфейса и приложений, включающий в себя элементы пользовательского интерфейса, системные приложения, а также конфигурацию заказчика, которая устанавливается на все устройства в рамках одной организации через единый пункт доступа;
▪промежуточный слой – это набор библиотек, необходимых для управление системой и устройством в целом;
▪базовый слой, представляющий собой слой абстрагирования на уровне
аппаратного обеспечения.
Более подробное описание архитектуры системы представлено на Рисунке
1.1:
14
Рисунок 1.1 – Архитектура ОС Аврора
Графическое представление в операционной системе «Аврора» осуществляется с помощью библиотеки Qt и выполняется посредством протокола Wayland. Wayland выступает в роли протокола взаимодействия между композитором и клиентами, который состоит из унифицированного протокола взаимодействия устройств ввода. Также Wayland предоставляет виртуальную клавиатуру, виртуальную мышь и tablet-интерфейс, разделяемые всеми приложениями. Схема взаимодействия графических компонентов системы представлена на Рисунке 1.2:
Рисунок 1.2 – Архитектура пользовательского интерфейса и графики в ОС Аврора
15
На приведенной схеме (см. Рисунок 1.2) можно выделить 4 группы компонентов:
▪прикладное ПО;
▪композитор Wayland;
▪Mesa 3D (трехмерная графика);
▪ядро.
Библиотека Qt взаимодействует со многими другими компонентами операционной системы. Взаимодействие этих компонентов можно отобразить на Русунке 1.3:
Рисунок 1.3 – Взаимодействие различных компонентов системы
Qt играет важную роль в графической части операционной системы,
однако немаловажную роль в отображении пользовательского интерфейса также играет графическая оболочка Lipstick. Данная система обрабатывает:
▪домашний экран и панель запуска приложений;
▪навигацию в операционной системе;
▪композицию приложений;
▪окна и уведомления системы;
▪экран событий и уведомления на уровне пользовательского интерфейса;
▪блокировку устройства;
▪переключение атмосферы.
Также данная оболочка обеспечивает:
▪точку входа пользовательского интерфейса на основе QML;
16
▪составление слоя композитора окон;
▪работу системы управления запуском приложений;
▪возможность блокировки экрана;
▪управление уведомлениями о событиях;
▪встроенную поддержку общих уведомлений пользовательского интерфейса, таких как изменение громкости, уровень заряда батареи и сетевые подключения;
▪обработку экрана запуска и завершения работы.
Помимо описанного выше функционала фреймворк Qt также предоставляет широкие возможности в создании пользовательского интерфейса приложения с помощью языка специального назначения QML. Данный язык позволяет перейти от императивного описания приложения, как программы, на языке C++ к декларативному описанию визуальных компонентов, из которых состоит интерфейс, с которым взаимодействует непосредственный пользователь.
Таким образом, исходный код приложения, созданного с помощью Qt,
можно условно разделить на 2 части:
▪бизнес-логика (реализуется с помощью языка C++);
▪пользовательский интерфейс (реализуется с помощью языка QML).
Однако помимо использования компонентов QML для описания пользовательского интерфейса, в Qt также есть возможность взаимодействия с этими компонентами в исходных файлах на языке C++. Это обеспечивается такими классами, как QQmlEngine и QQmlComponent. И наоборот – существует способ создания собственных компонентов QML с помощью языка программирования C++ в случае, если требуемый функционал невозможно реализовать только средствами QML.
Данные особенности дают разработчику возможность выстраивать тесную связь между пользовательским интерфейсом и внутренней логикой приложения.
И эти же особенности делают разделение исходного кода на внутреннюю логику
17
и пользовательский интерфейс условным, т.к. в случае необходимости можно гибко подстраивать разработанные компоненты под нужды приложения.
Для сборки приложения под ОС «Аврора» через интерфейс командной строки существует также инструмент, который называется «Аврора Platform SDK». Он не предназначен для непосредственной разработки приложения,
однако может быть использован в системах автоматизации сборки и распространения приложений. Инструменты, которые также используются для сборки приложений по операционную систему «Аврора»:
▪Git – управление изменениями;
▪GDB (GNU Debugger) – отладчик приложений;
▪mb2 – управление зависимостями сборки;
▪mer-sdk-chroot – вход в платформу SDK;
▪RPM-Validator – проверка RPM-пакетов;
▪Scratchbox2 – модуль для кросс-компиляции;
▪MIC – инструмент для создания образов.
«Аврора Platform SDK» поддерживает сборку приложений под такие целевые архитектуры, как x86, armv7hl и aarch64, и состоит из следующих компонентов:
▪Tooling – контейнер, содержащий необходимые для сборки утилиты;
▪Target – контейнер, использующийся для генерации пакетов для целевого устройства;
▪Chroot – контейнер с минимально необходимой конфигурацией для
сборки.
Среди научных работ были проведены некоторые сравнения инструментов для разработки ПО под ОС «Аврора», однако на данный момент отсутствует исследование, проводящее полный сравнительный анализ всех существующих способов разработки ПО.
1.2 Анализ существующих инструментов разработки
18
1.2.1 Возможность использования Kotlin Multiplatform
Основным инструментом, позволяющим создавать приложения для мобильных устройств на базе ОС «Аврора», является «Аврора SDK» –
инструмент, основывающийся на библиотеке Qt и созданный специально для разработки ПО под ОС «Аврора». Помимо «Аврора SDK» разработчики операционной системы на данный момент также поддерживают еще один инструмент для разработки приложений – Flutter, который используется в основном для создания приложений под такие ОС, как Android и iOS (но не ограничивается на этом).
На момент написания данной работы разработчики ОС «Аврора» не приводят информацию об официальной поддержке какого-либо еще инструмента для создания ПО. Однако такой способ есть – KMP. Это кроссплатформенная технология разработки приложений на языке программирования Kotlin.
Особенность использования KMP в том, что этот способ используется не полноценно в качестве самостоятельного инструмента для разработки приложений, а через обертку в виде компонента QML WebView, который позволяет отображать внутри приложений, созданных с помощью Qt и QML,
содержимое веб-страниц. Однако данный компонент при возможности избегает полноценного использования браузерных технологий и использует API,
предоставляемые целевой операционной системой. То есть, для создания приложения с использованием KMP, необходимо сначала создать приложение с помощью «Аврора SDK» и внедрить в него KMP посредством использования
WebView и сторонних JavaScript-библиотек. Схема работы приложений,
созданных с помощью KMP представлена на Рисунке 1.4:
Рисунок 1.4 – Схема работы приложений, созданных с помощью KMP\
19
Так как на данный момент KMP имеет ряд зависимостей и ограничений,
связанных с необходимостью использовать обертку WebView, данный инструмент не является самостоятельным инструментом разработки ПО под ОС
«Аврора», а значит является наименее актуальным на данный момент.
Далее будет приведен подробный сравнительный анализ двух официально поддерживаемых инструментов для разработки приложений под ОС «Аврора»:
Flutter и «Аврора SDK».
1.2.2 Преимущества и недостатки Аврора SDK
Qt – это фреймворк для разработки кроссплатформенного ПО на языке программирования C++, который включает в себя множество вспомогательных библиотек. Впервые был представлен в 1995 году. С тех пор было опубликовано
6 версий фреймворка.
На данный момент с помощью Qt можно создавать приложения не только для мобильных устройств (Android и iOS), но также и для настольных персональных компьютеров (Windows, macOS, Linux), и для встраиваемых систем.
Qt является основным инструментом для разработки приложений в Salifish OS, поэтому и ОС «Аврора» поддерживает его по умолчанию. Также операционная система Salifish OS расширяет стандартную библиотеку Qt
несколькими новыми классами (к примеру, для работы с Bluetooth, WebView и
др.) через модуль, который называется Salifish Silica, что сильно упрощает взаимодействие с системным API.
К тому же Qt является одним из важнейших компонентов ОС «Аврора»,
так как взаимодействует со многими другими компонентами системы для отрисовки пользовательского интерфейса и не только.
Для разработки мобильных приложений для операционной системы
«Аврора» существует специальная среда разработки «Аврора IDE», которая основывается на «Qt Creator», использует версию Qt 5.15. Условно структурную схему «Аврора SDK» можно представить на Рисунке 1.5:
20
Рисунок 1.5 – Структурная схема устройства среды разработки «Аврора IDE»
Данная программа полностью повторяет интерфейс базовой «Qt Creator» с
тремя отличиями:
▪наличие шаблонов проектов для ОС «Аврора»;
▪возможность запустить виртуальную машину для сборки приложения;
▪наличие двух целевых систем для запуска приложения: ARM версия для запуска непосредственно на мобильном устройстве и x86_64
версия для запуска приложения в эмуляторе на настольном компьютере.
Как уже было отмечено ранее, приложения, созданные с помощью среды разработки «Аврора IDE», основываются на фреймворке Qt, а значит архитектура таких приложений по большей части схожа с приложениями,
разработанными с использованием Qt для других операционных систем. Ниже представлена схема взаимодействия приложения, созданного с помощью Qt, с
API ядра операционной системы, на которой запускается приложение (Рисунок
1.6):
21
Рисунок 1.6 – Архитектура кроссплатформенного приложения, созданного с помощью
Qt
Использование Qt в качестве фреймворка для разработки приложения
имеет следующие преимущества:
▪изначальная поддержка фреймворка операционной системой, которая лежит в основе ОС «Аврора»;
▪наличие большого количества готовых решений на языке программирования C++, а также на языке моделирования QML в связи со зрелостью языка и среды разработки;
▪наличие множества примеров приложений от разработчика самой операционной системы, на которые можно опираться при разработке нового приложения.
1.2.3 Преимущества и недостатки Flutter
Flutter – это фреймворк с открытым исходным кодом, разработанный компанией Google для создания мультиплатформенных приложений с помощью языка Dart. Данный фреймворк позволяет собрать приложение для разных платформ, не модифицируя исходный код проекта. Первая версия проекта была опубликована в 2014 году. Начиная с версии 4.0.2.269 операционная система
«Аврора» поддерживает Flutter в качестве инструмента для разработки приложений.
22
Разработчики фреймворка Flutter официально не поддерживают использование данного инструмента для ОС «Аврора». Поэтому сами разработчики ОС «Аврора» реализовали несколько компонентов, которые обеспечивают сборку и запуск приложений с использованием Flutter на операционной системе «Аврора». Запуск приложений под управлением Flutter
осуществляется с помощью следующих компонентов:
▪Flutter Engine – среда выполнения, реализующая основные возможности, предоставляемые Flutter: анимация, работа с файловой системой, архитектура плагинов и т.д.;
▪Flutter Embedder – библиотека, обеспечивающая взаимодействие Flutter Engine с операционной системой «Аврора»;
▪Flutter SDK – фреймворк, написанный на языке программирования
Dart, реализующий необходимые компоненты, связывающие приложения с Flutter Embedder и Flutter Engine;
▪Flutter Plugins – реализация платформо-зависимых плагинов для ОС.
Схема взаимодействия этих компонентов представлена на Рисунке 1.7:
Рисунок 1.7 – Компоненты фреймворка Flutter, необходимые для запуска приложения на ОС «Аврора»
Для использования Flutter для разработки ПО под ОС «Аврора»
необходимо установить следующее ПО:
▪Аврора SDK;
23
