Mdm Api Example
Приложение для демонстрации работы с MDM API под ОС Аврора.
Условия использования и участия
Исходный код проекта предоставляется по лицензии, которая позволяет использовать его в сторонних приложениях.
Соглашение участника регламентирует права, предоставляемые участниками компании «Открытая Мобильная Платформа».
Информация об участниках указана в файле AUTHORS.
Кодекс поведения — это действующий набор правил компании «Открытая Мобильная Платформа», который информирует об ожиданиях по взаимодействию между членами сообщества при общении и работе над проектами.
Структура проекта
Проект имеет стандартную структуру приложения на базе C++ и QML для ОС Аврора.
- Подпроект ru.auroraos.MdmApiExample содержит исходный код UI-приложения.
- Файл ru.auroraos.MdmApiExample.pro описывает структуру подпроекта ru.auroraos.MdmApiExample для системы сборки qmake.
- Каталог icons содержит значки приложения для разных разрешений экрана.
- Каталог qml содержит исходный код на QML и ресурсы интерфейса пользователя.
- Каталог cover содержит реализации обложек приложения.
- Каталог icons содержит дополнительные значки интерфейса пользователя.
- Каталог pages содержит страницы приложения.
- Файл MdmApiExample.qml предоставляет реализацию окна приложения.
- Каталог src содержит исходный код на C++.
- Файл main.cpp является точкой входа в приложение.
- Файлы mdmapiexampledbusinterface.h и mdmapiexampledbusinterface.cpp содержат исходный код класса MdmApiExampleDBusInterface, являющегося прокси-классом для использования DBus-службы ru.auroraos.MdmApiExample.
- Каталог translations содержит файлы перевода интерфейса пользователя.
- Файл ru.auroraos.MdmApiExample.desktop определяет отображение и параметры запуска приложения.
- Подпроект ru.auroraos.MdmApiExampleDaemon содержит исходный код MDM-службы, использующей MDM API.
- Файл ru.auroraos.MdmApiExampleDaemon.pro описывает структуру подпроекта ru.auroraos.MdmApiExampleDaemon для системы сборки qmake.
- Каталог src содержит исходный код на C++.
- Файл main.cpp является точкой входа в MDM-службу.
- Файлы mdmapiexampledbusadaptor.h и mdmapiexampledbusadaptor.cpp содержат исходный код класса MdmApiExampleDBusAdaptor, описывающего DBus-интерфейс ru.auroraos.MdmApiExample для управления функциями устройства.
- Файлы featureslocker.h и featureslocker.cpp содержат исходный код класса FeaturesLocker, предоставляющего возможность блокировать и разблокировать функции устройства.
- Файлы featureslockerrunner.h и featureslockerrunner.cpp содержат исходный код класса FeaturesLockerRunner, описывающего поток для обработки событий ввода пользователя от интерфейса командной строки.
- Файлы filedownloader.h и filedownloader.cpp содержат исходный код класса FileDownloader, предоставляющего метод для загрузки файла по сети.
- Файлы locationservice.h и locationservice.cpp содержат исходный код класса LocationService, предоставляющего методы для запуска и остановки процесса получения информации о местоположении.
- Каталог dbus содержит файлы конфигурации для DBus-службы.
- Каталог systemd содержит файл конфигурации для systemd-службы.
- Каталог rpm содержит настройки сборки rpm-пакета.
- Файл ru.auroraos.MdmApiExample.spec используется инструментом rpmbuild.
Совместимость
Проект совместим с актуальными версиями ОС Аврора.
Схема архитектуры приложения
┌──────────────────┐
│ Aurora OS │
┌───────────────────┐ └────────▲─────────┘
│ RPM-package │ │
User ├───────────────────┴────────────────────────┼──────────────────────┐
│ │MDM API │
│ @ │ │ ┌────────────────┐ ┌──────────┴──────────┐ │
└─┬─┘ │ │ GUI │ DBus │ systemd-service │ │
│ ◄────┼───►│ MdmApiExample │◄─────────►│ MdmApiExampleDaemon │ │
┌─┴─┐ │ └────────────────┘ └──────────▲──────────┘ │
│ │ │ │ │
└────────────────────────────────────────────┼──────────────────────┘
│
┌─────▼─────┐
│ TCP │
└─────▲─────┘
│
│
┌──────▼───────┐
│ MDM Server │
└──────────────┘
Функционал
Приложение было протестировано на соответствие следующему функционалу:
- Приложение позволяет блокировать и разблокировать функции устройства (камеру, микрофон и WLAN).
- Приложение позволяет загружать файл из сети интернет.
- Приложение позволяет запускать и останавливать процесс получения информации о местоположении.
Заметки
К сожалению, невозможно реализовать запуск systemd-службы сразу после установки RPM-пакета: валидатор выдаст ошибку о невозможности описания скриптов в spec-файле. Поэтому для её запуска требуется либо перезагрузить устройство, либо подключиться к нему по SSH и выполнить следующие команды:
devel-su systemctl daemon-reload
devel-su systemctl restart ru.auroraos.MdmApiExampleDaemon
Замечания
Загрузка файлов по сети. Существует проблема со скачиванием файлов в рамках MDM-службы. Загруженный файл не может быть записан в файловую систему с ошибкой «Permission denied». Удалось найти только один путь, по которому MDM-служба может записать файл: /var/lib/sailfish-mdm
.