Dev FAQ: различия между версиями

Материал из AuroraWiki
Нет описания правки
Нет описания правки
Строка 3: Строка 3:
'''Как начать разрабатывать под Аврора ОС?
'''Как начать разрабатывать под Аврора ОС?


Разработка возможна на C++/Qt, либо (с ограничениями) на Flutter и Kotlin Multiplanform. Основной ресурс - это [https://developer.auroraos.ru/ официальная документация].
Разработка возможна на ''C++/Qt'', либо (с ограничениями) на ''Flutter'' и ''Kotlin Multiplanform''. Основной ресурс - это [https://developer.auroraos.ru/ официальная документация].


Полезные ссылки для начинающих разработчиков:
Полезные ссылки для начинающих разработчиков:
Строка 61: Строка 61:
'''На каких платформах возможна разработка?'''
'''На каких платформах возможна разработка?'''


Формально [https://developer.auroraos.ru/doc/software_development/sdk/downloads доступны] дистрибутивы SDK для Windows, Linux и macOS (только x86).   
Формально [https://developer.auroraos.ru/doc/software_development/sdk/downloads доступны] дистрибутивы ''SDK'' для ''Windows, Linux'' и ''macOS'' (только ''x86'').   


'''Как запустить SDK на macOS?'''
'''Как запустить SDK на macOS?'''


Работа на устройствах на базе ARM64 официально не поддерживается, хотя [https://www.youtube.com/watch?v=tEoVFhmMeTQ существуют] [https://keygenqt.github.io/articles/articles/aurora/21_05_2023/ обходные пути (youtube)] с развертыванием Build Engine вне macOS. Следующая инструкция проверена на macOS Sonoma 14.5 (x86):
Работа на устройствах на базе ''ARM64'' официально не поддерживается, хотя [https://www.youtube.com/watch?v=tEoVFhmMeTQ существуют] [https://keygenqt.github.io/articles/articles/aurora/21_05_2023/ обходные пути (youtube)] с развертыванием ''Build Engine'' вне ''macOS''. Следующая инструкция проверена на ''macOS'' ''Sonoma'' ''14.5 (x86)'':


* Скачайте оффлайновый установщик интересующей вас версии SDK, кликните дважды на скачанном .dmg, в открывшемся окне кликните на установочном файле правой кнопкой мыши и выберите "Открыть". Подтвердите открытие в диалоговом окне.
* Скачайте оффлайновый установщик интересующей вас версии ''SDK'', кликните дважды на скачанном ''.dmg'', в открывшемся окне кликните на установочном файле правой кнопкой мыши и выберите "Открыть". Подтвердите открытие в диалоговом окне.
* Запустится инсталлятор, установите SDK c его помощью.
* Запустится инсталлятор, установите ''SDK'' c его помощью.


После установки эмулятором можно пользоваться сразу, но для работы с устройством потребуются дополнительные действия. При добавлении девайса через интерфейс IDE, не удается достучаться до него по SSH. Общий смысл официальных рекомендаций описан в [https://developer.auroraos.ru/doc/software_development/sdk/setup официальной документации], в разделе "Установка драйвера мобильного устройства в macOS", но указанная там версия драйвера HoRNDIS не работает на последних версиях macOS.  
После установки эмулятором можно пользоваться сразу, но для работы с устройством потребуются дополнительные действия. При добавлении девайса через интерфейс ''IDE'', не удается достучаться до него по ''SSH''. Общий смысл официальных рекомендаций описан в [https://developer.auroraos.ru/doc/software_development/sdk/setup официальной документации], в разделе "Установка драйвера мобильного устройства в ''macOS''", но указанная там версия драйвера HoRNDIS не работает на последних версиях ''macOS''.  


* Можно посмотреть в сторону [https://github.com/TomHeaven/HoRNDIS/releases/tag/rel9.3 более свежего форка HoRNDIS] + [https://github.com/chris1111/Kext-Droplet-macOS Kext Droplet], возможно у вас удастся заставить девайс работать по USB
* Можно посмотреть в сторону [https://github.com/TomHeaven/HoRNDIS/releases/tag/rel9.3 более свежего форка HoRNDIS] + [https://github.com/chris1111/Kext-Droplet-macOS Kext Droplet], возможно у вас удастся заставить девайс работать по ''USB''
* Либо включить USB Tethering (см. ответ на вопрос "Как раздать интернет по кабелю?" выше) и подключаться к девайсу по SSH через Wi-Fi. В этом случае нужно не забыть в настройках девайса сделать Deploy Public key, указать Authentication type: Specific key и путь до приватного ключа.
* Либо включить ''USB'' ''Tethering'' (см. ответ на вопрос "Как раздать интернет по кабелю?" выше) и подключаться к девайсу по ''SSH'' через ''Wi-Fi''. В этом случае нужно не забыть в настройках девайса сделать ''Deploy Public key'', указать ''Authentication type: Specific key'' и путь до приватного ключа.


'''При скачивании Аврора SDK требуется выбрать версию, которая соответствует версии целевого устройства (таргета). Как собрать проект на разные версии ОС?'''
'''При скачивании Аврора SDK требуется выбрать версию, которая соответствует версии целевого устройства (таргета). Как собрать проект на разные версии ОС?'''


Plarform SDK позволяет установить несколько таргетов и собирать проект для разных версий ОС Аврора.
''Plarform SDK'' позволяет установить несколько таргетов и собирать проект для разных версий ОС Аврора.


'''Какой версии Qt в Аврора ОС?
'''Какой версии Qt в Аврора ОС?


Qt 5.6.3 c определенными ограничениями. В комплект входят нативные [https://developer.auroraos.ru/doc/software_development/reference/silica UI компоненты Silica] и [https://developer.auroraos.ru/doc/software_development/reference/aurora_controls Aurora Controls] (последние - с Авроры 5)
''Qt 5.6.3'' c определенными ограничениями. В комплект входят нативные [https://developer.auroraos.ru/doc/software_development/reference/silica UI компоненты Silica] и [https://developer.auroraos.ru/doc/software_development/reference/aurora_controls Aurora Controls] (последние - с Авроры 5)


'''В каких папках устройства располагаются файлы установленного приложения?'''
'''В каких папках устройства располагаются файлы установленного приложения?'''
Строка 92: Строка 92:
'''Почему не рекомендуется использовать библиотеку Qt Widgets?'''
'''Почему не рекомендуется использовать библиотеку 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'' появился подход разработки интерфейса приложения с применением ''QML (Qt Modeling Language)'', что было продиктовано необходимостью создания гибких пользовательских интерфейсов, требованием упростить описание элементов на сенсорном экране. Производительность ''QtWidgets'' не гарантирована на устройствах с ОС Аврора. В качестве альтернативы модулю ''Qt Widgets'' предлагается ''Qt QML, Qt Quick'' и ''Qt Quick Controls''. Такой подход не ограничен только мобильными/сенсорными устройствами, но применим и для настольных ОС. Подробнее разработке на основе ''Qt Quick'' можно прочитать здесь https://metanit.com/cpp/qt/3.1.php . (По отзывам исследователей, приложение для ОС Аврора 4, использующее ''Qt Widgets'', может запуститься, но не пройдет проверку валидатора).  


'''Какие существуют примеры/статьи по написанию тестов для проекта на Qt?'''
'''Какие существуют примеры/статьи по написанию тестов для проекта на Qt?'''


Модульное тестирование Qt/C++ под Sailfish OS https://habr.com/ru/articles/323518/  
Модульное тестирование ''Qt/C++'' под ''Sailfish OS'' https://habr.com/ru/articles/323518/  


Тестирование QML-компонентов https://habr.com/ru/articles/320808/
Тестирование ''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
Методы и инструменты автоматизированного тестирования приложения для ''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
Разработка и запуск сценариев для ''Qmltestrunner'' https://www.theseus.fi/bitstream/handle/10024/98894/Johansson_Lauri.pdf?sequence=1


'''Возможно ли портировать Аврора ОС на стороннее устройство?
'''Возможно ли портировать Аврора ОС на стороннее устройство?


На данном этапе развития ОС такой возможности нет, т.к. нет открытого Hardware Adaptation Kit, открытого исходного кода системы и прочих инструментов для этого.  
На данном этапе развития ОС такой возможности нет, т.к. нет открытого ''Hardware Adaptation Kit'', открытого исходного кода системы и прочих инструментов для этого.  


Даже если это было бы возможно, то в таком случае не будет работать экосистема Авроры в виде Маркета, Аврора Центр и прочего ПО. В качестве альтернативы и упражнения можно попробовать портировать Sailfish OS, UBPorts, NemoMobile и другие мобильные Linux ОС.
Даже если это было бы возможно, то в таком случае не будет работать экосистема Авроры в виде Маркета, Аврора Центр и прочего ПО. В качестве альтернативы и упражнения можно попробовать портировать ''Sailfish OS'', ''UBPorts'', ''NemoMobile'' и другие мобильные ''Linux'' ОС.


'''Обязательно ли каждый раз перед сборкой настраивать подписывание приложения?'''
'''Обязательно ли каждый раз перед сборкой настраивать подписывание приложения?'''
Строка 124: Строка 124:
* Включаем режим разработчика и терминал
* Включаем режим разработчика и терминал
* Скачиваем стандартные [https://developer.auroraos.ru/static/regular_key.pem ключ] и [https://developer.auroraos.ru/static/regular_cert.pem сертификат] разработчика
* Скачиваем стандартные [https://developer.auroraos.ru/static/regular_key.pem ключ] и [https://developer.auroraos.ru/static/regular_cert.pem сертификат] разработчика
* Скачиваем RPM-пакет, который нужно подписать, заходим в терминал под рутом (<code>devel-su</code>), переходим туда, куда скачали (напр. <code>/home/defaultuser/Downloads</code>)
* Скачиваем ''RPM''-пакет, который нужно подписать, заходим в терминал под рутом (<code>devel-su</code>), переходим туда, куда скачали (напр. <code>/home/defaultuser/Downloads</code>)
* Выполняем <code>rpmsign-external sign --key regular_key.pem --cert regular_cert.pem имя_подписываемого_пакета.rpm</code>
* Выполняем <code>rpmsign-external sign --key regular_key.pem --cert regular_cert.pem имя_подписываемого_пакета.rpm</code>
* Если у пакета уже есть неподходящая подпись, добавляем <code>--force</code>
* Если у пакета уже есть неподходящая подпись, добавляем <code>--force</code>
Строка 149: Строка 149:
Как добавить репозиторий в эмулятор и таргет для последующей сборки описано [https://wiki.aurorahub.ru/w/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B5%D0%B9_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82 здесь].
Как добавить репозиторий в эмулятор и таргет для последующей сборки описано [https://wiki.aurorahub.ru/w/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B5%D0%B9_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82 здесь].


Пример: проекту нужен curl, который есть в Аврора SDK.
Пример: проекту нужен ''curl'', который есть в Аврора SDK.


libcurl есть в чистом виде в ОС Аврора, можно ее собрать самому рядом со своим проектом, нужной версии (не сложно), можно заменить Qt API  для работы с REST API, через  QNetworkAcessManager и QNetworkRequest. В простом случае прописать зависимости в spec файл, линковать библиотеку с проектом через pkgconfig (можно и на прямую, можно и через cmake файлы). Если вы берете curl сами с сайте, вам нужны исходники. Из них собираете библиотеку, пакуете и линкуете со своим проектом.
''libcurl'' есть в чистом виде в ОС Аврора, можно ее собрать самому рядом со своим проектом, нужной версии (не сложно), можно заменить ''Qt API''  для работы с ''REST API'', через  ''QNetworkAcessManager'' и ''QNetworkRequest''. В простом случае прописать зависимости в spec файл, линковать библиотеку с проектом через ''pkgconfig'' (можно и на прямую, можно и через cmake файлы). Если вы берете ''curl'' сами с сайте, вам нужны исходники. Из них собираете библиотеку, пакуете и линкуете со своим проектом.


<nowiki>https://developer.auroraos.ru/doc/software_development/guidelines/spec_requirements</nowiki> - как в .spec прописать библиотеку,
<nowiki>https://developer.auroraos.ru/doc/software_development/guidelines/spec_requirements</nowiki> - как в .spec прописать библиотеку,
Строка 167: Строка 167:
<code>PKGCONFIG += libcurl</code>
<code>PKGCONFIG += libcurl</code>


последняя директива не обязательно будет использовать системную библиотеку, но в общем случае - да (т.е. pkconfig ищет файлы конфигов в системных папках).
последняя директива не обязательно будет использовать системную библиотеку, но в общем случае - да (т.е. ''pkconfig'' ищет файлы конфигов в системных папках).


Если собираете с проектом (стороннюю) библиотеку, линкуйте напрямую
Если собираете с проектом (стороннюю) библиотеку, линкуйте напрямую
Строка 178: Строка 178:


# В выключенном состоянии зажать кнопку питания и громкость+, далее выбрать Fastboot Mode (громкость+ переключает выбор, громкость- вход в выбранный режим)
# В выключенном состоянии зажать кнопку питания и громкость+, далее выбрать Fastboot Mode (громкость+ переключает выбор, громкость- вход в выбранный режим)
# В режиме fastboot Wipe userdata выполнить следующие команды: <code>fastboot devices</code>, <code>fastboot -w</code>. В случае, когда невозможно сделать сброс в recovery, если "Заблокировано при помощи Aurora Device Manager; Это устройство заблокировано навсегда", этот шаг можно пропустить.
# В режиме ''fastboot Wipe userdata'' выполнить следующие команды: <code>fastboot devices</code>, <code>fastboot -w</code>. В случае, когда невозможно сделать сброс в ''recovery'', если "Заблокировано при помощи ''Aurora Device Manager''; Это устройство заблокировано навсегда", этот шаг можно пропустить.
# Дождаться выполнения команды и выполнить <code>fastboot reboot bootloader</code>
# Дождаться выполнения команды и выполнить <code>fastboot reboot bootloader</code>
# В режиме recovery сброс
# В режиме recovery сброс
Строка 184: Строка 184:
'''Как обновиться до версии Аврора 5.1.*?'''
'''Как обновиться до версии Аврора 5.1.*?'''


Физическим лицам - написать письмо в компанию Всесмарт, у которой вы купили устройство. Для обновления вам необходимо прислать номер IMEI своего устройства. Они внесут ваше устройство в список и вышлют вам в ответном письме инструкцию по обновлению. По [https://vk.com/wall-212021805_3683 утверждению] разработчика, последующие обновления (после обновления до 5.1) можно будет получать "по воздуху". Если сбросить такое устройство, оно откатится до Авроры 4. При этом обновление работать не будет, нужно будет опять писать письмо во Всесмарт. После активации, картинка для обновления снова позволит обновить устройство.
Физическим лицам - написать письмо в компанию Всесмарт, у которой вы купили устройство. Для обновления вам необходимо прислать номер ''IMEI'' своего устройства. Они внесут ваше устройство в список и вышлют вам в ответном письме инструкцию по обновлению. По [https://vk.com/wall-212021805_3683 утверждению] разработчика, последующие обновления (после обновления до 5.1) можно будет получать "по воздуху". Если сбросить такое устройство, оно откатится до Авроры 4. При этом обновление работать не будет, нужно будет опять писать письмо во Всесмарт. После активации, картинка для обновления снова позволит обновить устройство.


''Раньше был открыт публичный доступ к тестовым версиям, старую инструкцию все еще можно найти [https://github.com/vasssiliy/F-R570E-Aurora-4-upgrade-to-Aurora-5 здесь].''
''Раньше был открыт публичный доступ к тестовым версиям, старую инструкцию все еще можно найти [https://github.com/vasssiliy/F-R570E-Aurora-4-upgrade-to-Aurora-5 здесь].''
Строка 210: Строка 210:
Нужно зайти в настройки, об устройстве и много раз быстро нажать на версию сборки. Выглядит она [https://wiki.aurorahub.ru/images/2/28/CSD_Tool.png так].
Нужно зайти в настройки, об устройстве и много раз быстро нажать на версию сборки. Выглядит она [https://wiki.aurorahub.ru/images/2/28/CSD_Tool.png так].


'''Как удалить установленное приложение если нет значка в списке программ'''
'''Как удалить установленное приложение, если нет значка в списке программ'''
<pre>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "ru.avroid.tavro" </pre>
<pre>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "ru.avroid.tavro" </pre>


Строка 228: Строка 228:
* включить режим разработчика без отключения валидатора?  
* включить режим разработчика без отключения валидатора?  
* Установить ''rpm'' из файлового менеджера
* Установить ''rpm'' из файлового менеджера
*отметить приложение как разрешенное тут '''Администрирование-список разрешённых'''
*отметить приложение как разрешенное тут ''Администрирование-список разрешённых''


'''Есть ли поддержка low latency ядра в Авроре?
'''Есть ли поддержка low latency ядра в Авроре?


На данный момент свойства high resolution low latency звука на Авроре не определены, скорее всего они не лучше Linux дистрибутивов без накруток.  
На данный момент свойства ''high resolution low latency'' звука на Авроре не определены, скорее всего они не лучше Linux дистрибутивов без накруток.  


Что нужно сделать (rtpatch , pipewire итд ) разработчики системы пока не знают, но о запросе услышали и рекомендуют  оформить запрос на улучшение в трекер бета-программы.
Что нужно сделать (''rtpatch , pipewire итд'' ) разработчики системы пока не знают, но о запросе услышали и рекомендуют  оформить запрос на улучшение в трекер бета-программы.


'''Проигрывание видео на эмуляторе'''
'''Проигрывание видео на эмуляторе'''


Чтобы использовать QtMultimedia.Video на эмуляторе, нужно:
Чтобы использовать ''QtMultimedia.Video'' на эмуляторе, нужно:


* Добавить в строку "Requires" spec-файла  
* Добавить в строку "''Requires''" ''spec''-файла  
<pre>
<pre>
qt5-qtmultimedia-plugin-mediaservice-gstmediaplayer
qt5-qtmultimedia-plugin-mediaservice-gstmediaplayer
</pre>
</pre>


Заставить именно эмулятор проигрывать видео h265 пока не удалось даже путём установки плагинов gstreamer. Ошибка выглядит так:  
Заставить именно эмулятор проигрывать видео ''h265'' пока не удалось даже путём установки плагинов ''gstreamer''. Ошибка выглядит так:  


<pre>No decoder available for type 'video/x-h265, stream-format=(string)hvc1, ...</pre>
<pre>No decoder available for type 'video/x-h265, stream-format=(string)hvc1, ...</pre>
Строка 252: Строка 252:
'''если это важно при настройке breakpad/crashpad'''
'''если это важно при настройке breakpad/crashpad'''


''.gnu.build-id'' меняется в post install, это так и задумано rpm'ом, можно предотвратить через
''.gnu.build-id'' меняется в ''post install'', это так и задумано ''rpm''<nowiki/>'ом, можно предотвратить через


''%global _no_recompute_build_ids 1''
''%global _no_recompute_build_ids 1''


в spec-файле
в ''spec-''файле


'''При запуске приложения из командной строки, оно стартует без песочницы. Как запустить из консоли приложение со включенной песочницей?'''
'''При запуске приложения из командной строки, оно стартует без песочницы. Как запустить из консоли приложение со включенной песочницей?'''
Строка 263: Строка 263:
'''Как добавить таргет Аврора ОС 4 на машину с Аврора SDK 5?'''
'''Как добавить таргет Аврора ОС 4 на машину с Аврора SDK 5?'''


Кратко: с машины, на которую установлен SDK4 скопировать каталог SDK, исправить пути на новые и добавить виртуальные машины (Mer для 4ой Авроры и эмулятор 4ой Авроры) в виртуалбокс на целевую машину (на которой установлен SDK5).  
Кратко: с машины, на которую установлен ''SDK4'' скопировать каталог ''SDK'', исправить пути на новые и добавить виртуальные машины (''Mer'' для 4ой Авроры и эмулятор 4ой Авроры) в виртуалбокс на целевую машину (на которой установлен ''SDK5'').  


Последовательность действий не оптимальная. Так сложилось исторически.
Последовательность действий не оптимальная. Так сложилось исторически.


1. Установил Aurora SDK 5 в ~/AuroraOS
1. Установил ''Aurora SDK 5'' в ''~/AuroraOS''


2. Скопировал с другой машны или из домашнего каталога другого пользователя установленную Aurora SDK 4 в ~/AuroraOS4
2. Скопировал с другой машны или из домашнего каталога другого пользователя установленную ''Aurora SDK 4'' в ''~/AuroraOS4''


3. Из-за переноса с другой ПЭВМ пришлось менять имя пользователя. Если предусмотрительно все делать на одной ПЭВМ под одним и тем же пользователем, п 3.1 пропускаем (для этого нужно предварительно под тем же пользователем установить SDK4, сделать резервные копии папки AuroraOS, сохранить копии виртуальных машин на диск, удалить SDK4 через SDK Maintenance tool).
3. Из-за переноса с другой ПЭВМ пришлось менять имя пользователя. Если предусмотрительно все делать на одной ПЭВМ под одним и тем же пользователем, п 3.1 пропускаем (для этого нужно предварительно под тем же пользователем установить ''SDK4'', сделать резервные копии папки ''AuroraOS'', сохранить копии виртуальных машин на диск, удалить ''SDK4'' через ''SDK Maintenance tool'').


3.1. Для смены имени пользвателя использовали команду
3.1. Для смены имени пользвателя использовали команду
Строка 277: Строка 277:
<code>reset && grep -rn OLDUSERNAME 2>/dev/null | grep -vi log</code>
<code>reset && grep -rn OLDUSERNAME 2>/dev/null | grep -vi log</code>


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


Таких упоминаний найдено 20 в 6 файлах.
Таких упоминаний найдено 20 в 6 файлах.
Строка 311: Строка 311:
5. Добавить виртуальные машины (от SDK4) в VirtualBox.
5. Добавить виртуальные машины (от SDK4) в VirtualBox.


/home/USERNAME/AuroraOS4/emulator/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base-1.15-linux.vbox
''/home/USERNAME/AuroraOS4/emulator/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base-1.15-linux.vbox''


/home/USERNAME/AuroraOS4/mersdk/Aurora Build Engine/Aurora Build Engine-1.15-linux.vbox
''/home/USERNAME/AuroraOS4/mersdk/Aurora Build Engine/Aurora Build Engine-1.15-linux.vbox''


6. Проверить работоспособность средства установки компонент
6. Проверить работоспособность средства установки компонент
Строка 319: Строка 319:
<code>~/AuroraOS4/SDKMaintenanceTool</code>
<code>~/AuroraOS4/SDKMaintenanceTool</code>


7. Запустить QtCreator
7. Запустить ''QtCreator''


<code>~/AuroraOS4/bin/qtcreator</code>
<code>~/AuroraOS4/bin/qtcreator</code>


После запуска QtCreator случится магия Qt и все что необходимо само пропишется в нужные каталоги.
После запуска ''QtCreator'' случится магия ''Qt'' и все что необходимо само пропишется в нужные каталоги.


8. ЯРЛЫКИ
8. ЯРЛЫКИ

Версия от 10:12, 4 сентября 2024

Разработка под Аврора ОС

Как начать разрабатывать под Аврора ОС?

Разработка возможна на C++/Qt, либо (с ограничениями) на Flutter и Kotlin Multiplanform. Основной ресурс - это официальная документация.

Полезные ссылки для начинающих разработчиков:

На каких платформах возможна разработка?

Формально доступны дистрибутивы 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), что было продиктовано необходимостью создания гибких пользовательских интерфейсов, требованием упростить описание элементов на сенсорном экране. Производительность QtWidgets не гарантирована на устройствах с ОС Аврора. В качестве альтернативы модулю 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 на устройстве

Не устанавливается программа, скачанная в виде rpm-файла

Для установки на устройство Аврора 5 пакетов, подписанных общедоступным сертификатом разработчика, нужно включить на вашем устройстве режим разработчика (может потребоваться разрешение администратора).

На устройство с Аврора ОС 4 не установится пакет, собранный для Аврора ОС 5 (наоборот можно, обычно пакеты для 4ой Авроры устанавливаются на устройства с 5ой Авророй). Так же убедитесь, что разрядность вашего устройства соответствует версии пакета.

Можно ли использовать sudo вместо devel-su при работе с Аврора ОС через терминал?

Возможно. Для этого нужно сделать следующие действия:

  1. Заходим под рутом через devel-su
  2. pkcon install sudo
  3. Раскомментируем строчку %wheel .........NOPASSWD в /etc/sudoers
  4. usermod -aG wheel defaultuser
  5. Перезаходим под 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

Как вывести устройство из состояния "Заблокировано навсегда"?

Вывод устройства из состояния "Аутентификация неуспешна; Устройство заблокировано навсегда":

  1. В выключенном состоянии зажать кнопку питания и громкость+, далее выбрать Fastboot Mode (громкость+ переключает выбор, громкость- вход в выбранный режим)
  2. В режиме fastboot Wipe userdata выполнить следующие команды: fastboot devices, fastboot -w. В случае, когда невозможно сделать сброс в recovery, если "Заблокировано при помощи Aurora Device Manager; Это устройство заблокировано навсегда", этот шаг можно пропустить.
  3. Дождаться выполнения команды и выполнить fastboot reboot bootloader
  4. В режиме recovery сброс

Как обновиться до версии Аврора 5.1.*?

Физическим лицам - написать письмо в компанию Всесмарт, у которой вы купили устройство. Для обновления вам необходимо прислать номер IMEI своего устройства. Они внесут ваше устройство в список и вышлют вам в ответном письме инструкцию по обновлению. По утверждению разработчика, последующие обновления (после обновления до 5.1) можно будет получать "по воздуху". Если сбросить такое устройство, оно откатится до Авроры 4. При этом обновление работать не будет, нужно будет опять писать письмо во Всесмарт. После активации, картинка для обновления снова позволит обновить устройство.

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

Неофициальная инструкция по обновлению R570E на релиз 5.1.

(* На август 2024 года для физических лиц доступно обновление до версии ОС 5.1)

Юридические лица могут обновиться, обратившись в офис компании ОМП.

Что делать, если я пока не планирую обновлять устройство?

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

Как вернуть аппарат на Аврору ОС 4?

Для аппаратов, проданных с Аврора ОС 4 при сбросе будет осуществлен откат до версии ОС 4. Так же для аппаратов R570E есть такое решение.

Как получить магазин приложений Рустор на мое устройство?

Согласно официальному ответу компании ОМП, приложение Рустор войдет в состав Аврора ОС 5.1.1

Как получить сервисную информацию об устройстве?

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

Как удалить установленное приложение, если нет значка в списке программ

gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "ru.avroid.tavro" 

Если получаете ошибку, убедитесь что пакет есть среди уставновленных

gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.GetPackageList

Приложение устанавливается, но при запуске крутит и не открывается

$ invoker --type=qt5 ru.avroid.tavro

Приложение не запускается, выводит ошибку launch is not allowed for this application

client_launch_application(): E: launch is not allowed for this application
  • Разрешить установку из доверенных источников.
  • включить режим разработчика без отключения валидатора?
  • Установить rpm из файлового менеджера
  • отметить приложение как разрешенное тут Администрирование-список разрешённых

Есть ли поддержка 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?

Кратко: с машины, на которую установлен SDK4 скопировать каталог SDK, исправить пути на новые и добавить виртуальные машины (Mer для 4ой Авроры и эмулятор 4ой Авроры) в виртуалбокс на целевую машину (на которой установлен SDK5).

Последовательность действий не оптимальная. Так сложилось исторически.

1. Установил Aurora SDK 5 в ~/AuroraOS

2. Скопировал с другой машны или из домашнего каталога другого пользователя установленную Aurora SDK 4 в ~/AuroraOS4

3. Из-за переноса с другой ПЭВМ пришлось менять имя пользователя. Если предусмотрительно все делать на одной ПЭВМ под одним и тем же пользователем, п 3.1 пропускаем (для этого нужно предварительно под тем же пользователем установить SDK4, сделать резервные копии папки AuroraOS, сохранить копии виртуальных машин на диск, удалить SDK4 через SDK Maintenance tool).

3.1. Для смены имени пользвателя использовали команду

reset && grep -rn OLDUSERNAME 2>/dev/null | grep -vi log

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

Таких упоминаний найдено 20 в 6 файлах.

3.2. Необходимо зайти в каждый файл и исправить имя пользователя во всех строках.

vim network.xml

в нем

%/OLDUSERNAME/NEWUSERNAME

и сохраняемся

:wq

3.3. Повторяем поиск вхождения, для подтверждения факта исправления всех имен.

reset && grep -rn OLDUSERNAME 2>/dev/null | grep -vi log

4. Исправляем домашний каталог для Aurora SDK. Выполняем те же действия, что и при замене имени пользователя.

reset && grep -rn AuroraOS 2>/dev/null | grep -vi log

Таким образом найдено 131 вхождение.

ВНИМАНИЕ!!!

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

Пример такого файла emulator/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base.vbox

5. Добавить виртуальные машины (от SDK4) в VirtualBox.

/home/USERNAME/AuroraOS4/emulator/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base/AuroraOS-4.0.2.249-base-1.15-linux.vbox

/home/USERNAME/AuroraOS4/mersdk/Aurora Build Engine/Aurora Build Engine-1.15-linux.vbox

6. Проверить работоспособность средства установки компонент

~/AuroraOS4/SDKMaintenanceTool

7. Запустить QtCreator

~/AuroraOS4/bin/qtcreator

После запуска QtCreator случится магия Qt и все что необходимо само пропишется в нужные каталоги.

8. ЯРЛЫКИ

Также можно настроить отдельный каталог для проектов под Аврора 4.


Как исправить ошибку "Sailfish.Silica не найден"

Закройте проект, удалите файл *.pro.user . При повторном открытии нужно будет выбрать цели сборки и ошибка должна пропасть.