Dev FAQ
Разработка под Аврора ОС
Как начать разрабатывать под Аврора ОС?
Разработка возможна на C++/Qt, либо (с ограничениями) на Flutter и Kotlin Multiplanform. Основной ресурс - это официальная документация.
Полезные ссылки для начинающих разработчиков:
- Неофициальное сообщество разработчиков в Telegram
- Учебные материалы от разработчиков ОС
- Разработка приложений для ОС Аврора (бесплатный курс)
- Разработка прикладного ПО на Qt и ОС «Аврора» (платный курс)
- Разработка программного обеспечения для ОС АВРОРА (платный курс)
- Внедрение, администрирование и работа с платформой централизованного управления мобильными устройствами Аврора Центр (платный курс)
- Видео
- Роман Аляутдин, Денис Глазков — Разработка для ОС «Аврора» (youtube)
- Алексей Гладков — ОС «Аврора» глазами Android- и iOS-разработчика (youtube) Рутуб
- Aurora OS. Первый взгляд / Мобильный разработчик (youtube) Рутуб
- Установка и настройка QEMU + Alpine Linux + Аврора Platform SDK (youtube)
- Механизмы безопасности и изоляции приложений в мобильной ОС Аврора (youtube)
- Современные подходы к доверенной загрузке ОС на примере Аврора СДЗ для процессоров Baikal-M (youtube)
- Aurora, Server + macOS M1 (youtube)
- Основы QML и QtQuick. QML и мобильная ОС Аврора. (Рутуб)
- Знакомство с QML (Рутуб)
- Интеграция QML и C++ (Рутуб)
- Кирилл Чувилин — «Компоненты, модели и представления в Qt Quick» (Рутуб)
- Метапрограммирование на Qt - написание гибкого кода (Рутуб)
- Видеоматериалы по ОС Аврора и Sailfish OS: использование, разработка, мероприятия (youtube)
- Вебинары на VK
- Установка программ в эмулятор ОС Аврора (Рутуб)
- Как создать web-application под ОС Аврора (В ролике показано подключение физического устройства к SKD) (Рутуб)
- Статьи
- Как начать разрабатывать под Аврора ОС
- Как мы разрабатывали мобильное приложение на ОС Аврора
- Разработка мобильного клиента СДУ «Приоритет» под ОС «Аврора» на фреймворке Qt
- Пишем онлайн-радио и калькулятор индекса массы тела для Аврора ОС
- Сборка приложения в mer build engine и упакова в rpm из командной строки
- Исходные коды программ
- Порт карточной игры Пасьянс. Собрано под А4
- Простое пианино
- Порт тренажера Хираганы (японской слоговой азбуки)
- Приложение для просмотра и управления D-Bus сервисами
- bluetooth терминал
- Текстовый редактор c нумерацией строк
- Порт игры Судоку c Sailfish
- Порт проигрывателя Unplayer
- программа для рисования
- Порт текстового редактора TinyEdit
- Порт игры реверси с Sailfish
- Порт клиента Github с SailFish OS
- Порт продвинутого списка покупок
- порты разных игр (гитхаб)
- PWA-игра Башня (гитхаб)
- Читалка (гитхаб)
- Браузерная игра dinorun (гитхаб)
- отслеживание посылок (гитхаб)
- Фонарик для кнопки PTT для телефона R570E (гитхаб)
На каких платформах возможна разработка?
Формально доступны дистрибутивы SDK для Windows, Linux и macOS (только x86).
Как запустить SDK на macOS?
Работа на устройствах на базе ARM64 официально не поддерживается, хотя существуют обходные пути (youtube) с развертыванием Build Engine вне macOS. Следующая инструкция проверена на macOS Sonoma 14.5 (x86):
- Скачайте оффлайновый установщик интересующей вас версии SDK, кликните дважды на скачанном .dmg, в открывшемся окне кликните на установочном файле правой кнопкой мыши и выберите "Открыть". Подтвердите открытие в диалоговом окне.
- Запустится инсталлятор, установите SDK c его помощью.
После установки эмулятором можно пользоваться сразу, но для работы с устройством потребуются дополнительные действия. При добавлении девайса через интерфейс IDE, не удается достучаться до него по SSH. Общий смысл официальных рекомендаций описан в официальной документации, в разделе "Установка драйвера мобильного устройства в macOS", но указанная там версия драйвера HoRNDIS не работает на последних версиях macOS.
- Можно посмотреть в сторону более свежего форка HoRNDIS + Kext Droplet, возможно у вас удастся заставить девайс работать по USB
- Либо включить USB Tethering (см. ответ на вопрос "Как раздать интернет по кабелю?" выше) и подключаться к девайсу по SSH через Wi-Fi. В этом случае нужно не забыть в настройках девайса сделать Deploy Public key, указать Authentication type: Specific key и путь до приватного ключа.
При скачивании Аврора SDK требуется выбрать версию, которая соответствует версии целевого устройства (таргета). Как собрать проект на разные версии ОС?
Plarform SDK позволяет установить несколько таргетов и собирать проект для разных версий ОС Аврора.
Какой версии Qt в Аврора ОС?
Qt 5.6.3 c определенными ограничениями. В комплект входят нативные UI компоненты Silica и Aurora Controls (последние - с Авроры 5)
В каких папках устройства располагаются файлы установленного приложения?
- исполняемый файл располагается по пути /usr/bin/{имя проекта};
- desktop-файл располагается по пути /usr/share/applications/{имя_проекта}.desktop;
- иконки располагаются по путям /usr/share/icons/hicolor/{разрешение}/apps/{имя проекта}.png;
- дополнительные файлы, используемые приложением, располагаются в директории /usr/share/{имя проекта}.
Почему не рекомендуется использовать библиотеку Qt Widgets?
В процессе развития фреймворка Qt появился подход разработки интерфейса приложения с применением QML (Qt Modeling Language), что было продиктовано необходимостью создания гибких пользовательских интерфейсов, требованием упростить описание элементов на сенсорном экране. В качестве альтернативы модулю Qt Widgets предлагается Qt QML, Qt Quick и Qt Quick Controls. Такой подход не ограничен только мобильными/сенсорными устройствами, но применим и для настольных ОС. Подробнее разработке на основе Qt Quick можно прочитать здесь https://metanit.com/cpp/qt/3.1.php . (По отзывам исследователей, приложение для ОС Аврора 4, использующее Qt Widgets, может запуститься, но не пройдет проверку валидатора).
Какие существуют примеры/статьи по написанию тестов для проекта на Qt?
Модульное тестирование Qt/C++ под Sailfish OS https://habr.com/ru/articles/323518/
Тестирование QML-компонентов https://habr.com/ru/articles/320808/
Методы и инструменты автоматизированного тестирования приложения для SailfishOS https://www.researchgate.net/publication/320649391_Method_and_tools_for_automated_end-to-end_testing_of_applications_for_sailfish_OS
Разработка и запуск сценариев для Qmltestrunner https://www.theseus.fi/bitstream/handle/10024/98894/Johansson_Lauri.pdf?sequence=1
Возможно ли портировать Аврора ОС на стороннее устройство?
На данном этапе развития ОС такой возможности нет, т.к. нет открытого Hardware Adaptation Kit, открытого исходного кода системы и прочих инструментов для этого.
Даже если это было бы возможно, то в таком случае не будет работать экосистема Авроры в виде Маркета, Аврора Центр и прочего ПО. В качестве альтернативы и упражнения можно попробовать портировать Sailfish OS, UBPorts, NemoMobile и другие мобильные Linux ОС.
Обязательно ли каждый раз перед сборкой настраивать подписывание приложения?
Нет, в SDK 5 вернули настройку "включить шаг подписывания по умолчанию". Для его включения перейдите в настройки SDK > ОС Аврора > Подпись пакетов, поставьте флаг "Включить шаг подписи по умолчанию".
Как подписывать приложения из консоли?
Есть готовое решение для подписи пакета в настольной ОС.
Как подписывать приложения на устройстве?
Для подписи приложений не обязательно ставить SDK:
- Включаем режим разработчика и терминал
- Скачиваем стандартные ключ и сертификат разработчика
- Скачиваем RPM-пакет, который нужно подписать, заходим в терминал под рутом (
devel-su
), переходим туда, куда скачали (напр./home/defaultuser/Downloads
) - Выполняем
rpmsign-external sign --key regular_key.pem --cert regular_cert.pem имя_подписываемого_пакета.rpm
- Если у пакета уже есть неподходящая подпись, добавляем
--force
Упаковка проекта в rpm на устройстве
Можно ли использовать sudo вместо devel-su при работе с Аврора ОС через терминал?
Возможно. Для этого нужно сделать следующие действия:
- Заходим под рутом через
devel-su
pkcon install sudo
- Раскомментируем строчку
%wheel .........NOPASSWD
в/etc/sudoers
usermod -aG wheel defaultuser
- Перезаходим под defaultuser
Как добавить зависимость в проект?
Как добавить репозиторий в эмулятор и таргет для последующей сборки описано здесь.
Пример: проекту нужен curl, который есть в Аврора SDK.
libcurl есть в чистом виде в ОС Аврора, можно ее собрать самому рядом со своим проектом, нужной версии (не сложно), можно заменить Qt API для работы с REST API, через QNetworkAcessManager и QNetworkRequest. В простом случае прописать зависимости в spec файл, линковать библиотеку с проектом через pkgconfig (можно и на прямую, можно и через cmake файлы). Если вы берете curl сами с сайте, вам нужны исходники. Из них собираете библиотеку, пакуете и линкуете со своим проектом.
https://developer.auroraos.ru/doc/software_development/guidelines/spec_requirements - как в .spec прописать библиотеку,
https://developer.auroraos.ru/doc/software_development/reference/public_api - про зависимости
рецепт в общих чертах для curl из SDK
1. в spec файле прописываем зависимость от curl
BuildRequires: pkgconfig(libcurl)
2. в pro файле
PKGCONFIG += libcurl
последняя директива не обязательно будет использовать системную библиотеку, но в общем случае - да (т.е. pkconfig ищет файлы конфигов в системных папках).
Если собираете с проектом (стороннюю) библиотеку, линкуйте напрямую
LIBS += -L$$PWD/libs/curl -lcurl
Как вывести устройство из состояния "Заблокировано навсегда"?
Вывод устройства из состояния "Аутентификация неуспешна; Устройство заблокировано навсегда":
- В выключенном состоянии зажать кнопку питания и громкость+, далее выбрать Fastboot Mode (громкость+ переключает выбор, громкость- вход в выбранный режим)
- В режиме fastboot Wipe userdata выполнить следующие команды:
fastboot devices
,fastboot -w
. В случае, когда невозможно сделать сброс в recovery, если "Заблокировано при помощи Aurora Device Manager; Это устройство заблокировано навсегда", этот шаг можно пропустить. - Дождаться выполнения команды и выполнить
fastboot reboot bootloader
- В режиме recovery сброс
Как обновиться до версии Аврора 5.1.*? Физическим лицам - написать письмо в компанию Всесмарт, у которой вы купили устройство. Для обновления вам необходимо прислать номер IMEI своего устройства. Они внесут ваше устройство в список и вышлют вам в ответном письме инструкцию по обновлению. Раньше был открыт публичный доступ к тестовым версиям, старую инструкцию все еще можно найти здесь. Неофициальная инструкция по обновлению на релиз 5.1.
(* На август 2024 года для физических лиц доступно обновление до версии ОС 5.1)
Юридические лица могут обновиться, обратившись в офис компании ОМП.
Как получить магазин приложений Рустор на мое устройство? Согласно официальному ответу компании ОМП, приложение Рустор войдет в состав Аврора ОС 5.1.1
Как получить сервисную информацию об устройстве?
Нужно зайти в настройки, об устройстве и много раз быстро нажать на версию сборки. Выглядит она так.
Есть ли поддержка low latency ядра в Авроре?
На данный момент свойства high resolution low latency звука на Авроре не определены, скорее всего они не лучше Linux дистрибутивов без накруток.
Что нужно сделать (rtpatch , pipewire итд ) разработчики системы пока не знают, но о запросе услышали и рекомендуют оформить запрос на улучшение в трекер бета-программы.
Проигрывание видео на эмуляторе
Чтобы использовать QtMultimedia.Video на эмуляторе, нужно:
- Добавить в строку "Requires" spec-файла
qt5-qtmultimedia-plugin-mediaservice-gstmediaplayer
Заставить именно эмулятор проигрывать видео h265 пока не удалось даже путём установки плагинов gstreamer. Ошибка выглядит так:
No decoder available for type 'video/x-h265, stream-format=(string)hvc1, ...
Как избежать изменения .gnu.build-id при сборке/разворачивании проекта
если это важно при настройке breakpad/crashpad
.gnu.build-id меняется в post install, это так и задумано rpm'ом, можно предотвратить через
%global _no_recompute_build_ids 1
в spec-файле
При запуске приложения из командной строки, оно стартует без песочницы. Как запустить из консоли приложение со включенной песочницей?
$ invoker --type=qt5 <app_name>
Как добавить таргет Аврора ОС 4 на машину с Аврора SDK 5?
1. Поставить 4 версию SDK и сохранить оттуда каталог targets и docker-образ.
2. Удалить 4 версию SDK и поставить 5 версию SDK и рядом с targets создать targets4, в которую распаковать таргеты из 4 версии.
3. Исправить в labels докер-образа 4 версии путь к таргету на правильный.
4. Добавить в аврора студии сборочную машину по образу.
У меня собралось и установилось приложение на 4 версии авроры.