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

Материал из AuroraWiki
Нет описания правки
(Как приложению управлять яркостью экрана?)
 
(не показана 61 промежуточная версия этого же участника)
Строка 10: Строка 10:
* [https://gitlab.com/omprussia/edu Учебные материалы от разработчиков ОС]
* [https://gitlab.com/omprussia/edu Учебные материалы от разработчиков ОС]
* [https://stepik.org/course/71788/info Разработка приложений для ОС Аврора (бесплатный курс)]
* [https://stepik.org/course/71788/info Разработка приложений для ОС Аврора (бесплатный курс)]
* [https://stepik.org/course/2341/syllabus (Безплатный курс) на степике по SailfishOS, подходит для ОС Аврора, много интересных заданий]
* [https://otus.ru/lessons/qt-aurora/ Разработка прикладного ПО на Qt и ОС «Аврора» (платный курс)]
* [https://otus.ru/lessons/qt-aurora/ Разработка прикладного ПО на Qt и ОС «Аврора» (платный курс)]
* [https://www.infosystems.ru/courses/avtorizovannye_kursy/ISSF010/ Разработка программного обеспечения для ОС АВРОРА (платный курс)]
* [https://www.infosystems.ru/courses/avtorizovannye_kursy/ISSF010/ Разработка программного обеспечения для ОС АВРОРА (платный курс)]
* [https://www.infosystems.ru/courses/avtorizovannye_kursy/ISSF030/ Внедрение, администрирование и работа с платформой централизованного управления мобильными устройствами Аврора Центр (платный курс)]
* [https://www.infosystems.ru/courses/avtorizovannye_kursy/ISSF030/ Внедрение, администрирование и работа с платформой централизованного управления мобильными устройствами Аврора Центр (платный курс)]
* [https://developer.auroraos.ru/doc/faq Официальная страница ответов на частые вопросы]
* [https://d33sqmjvzgs8hq.cloudfront.net/wp-content/uploads/2015/10/9-qml-cpp-integration.pdf Интергация QML и C++ - кода]


* Видео
* Видео
Строка 30: Строка 33:
** [https://vk.com/video/playlist/-211011274_7 Вебинары на VK]
** [https://vk.com/video/playlist/-211011274_7 Вебинары на VK]
** [https://rutube.ru/video/2ac44fb17ebd4a70eb98f152ebfda686/ Установка программ в эмулятор ОС Аврора (Рутуб)]
** [https://rutube.ru/video/2ac44fb17ebd4a70eb98f152ebfda686/ Установка программ в эмулятор ОС Аврора (Рутуб)]
** [https://rutube.ru/video/ac784820ba42cf4af8b5b6d492d25c54/ Как создать web-application под ОС Аврора (В ролике показано подключение физического устройства к SKD) (Рутуб)]
** [https://rutube.ru/video/ac784820ba42cf4af8b5b6d492d25c54/ Как создать web-application под ОС Аврора (В ролике показано подключение физического устройства к SDK) (Рутуб)]
* Статьи
* Статьи
** [https://dzen.ru/a/ZFiNuhAnIHoAUooT Как начать разрабатывать под Аврора ОС]
** [https://dzen.ru/a/ZFiNuhAnIHoAUooT Как начать разрабатывать под Аврора ОС]
Строка 37: Строка 40:
** [https://blog.skillfactory.ru/avrora-os-kak-rabotat/ Пишем онлайн-радио и калькулятор индекса массы тела для Аврора ОС]
** [https://blog.skillfactory.ru/avrora-os-kak-rabotat/ Пишем онлайн-радио и калькулятор индекса массы тела для Аврора ОС]
** [https://yuhnin.blogspot.com/2016/07/sailfish-sdk-rpm.html Сборка приложения в '''mer build engine''' и упакова в '''rpm''' из командной строки]
** [https://yuhnin.blogspot.com/2016/07/sailfish-sdk-rpm.html Сборка приложения в '''mer build engine''' и упакова в '''rpm''' из командной строки]
** [https://boosty.to/sashikknox/posts/bad1c63b-c453-4933-a34c-ee7c22bd6e44?share=post_link&ysclid=m16dm475vw245226551 Подключение Godot к Аврора SDK]


* Исходные коды программ
* Исходные коды программ
Строка 58: Строка 62:
** [https://github.com/yewrepo/my_parcels отслеживание посылок (гитхаб)]
** [https://github.com/yewrepo/my_parcels отслеживание посылок (гитхаб)]
** [https://github.com/yewrepo/PPTFlashlight Фонарик для кнопки PTT для телефона R570E (гитхаб)]
** [https://github.com/yewrepo/PPTFlashlight Фонарик для кнопки PTT для телефона R570E (гитхаб)]
** Игра bejeweled (три в ряд)([https://gitverse.ru/aurora_os/bejeweled-aurora гитверс]) и ее прообраз для SailfishOS ([https://github.com/sailfish-os-apps/bejeweled-sailfish гитхаб])


'''На каких платформах возможна разработка?'''
'''На каких платформах возможна разработка?'''
Строка 89: Строка 94:
* иконки располагаются по путям /usr/share/icons/hicolor/{разрешение}/apps/{имя проекта}.png;
* иконки располагаются по путям /usr/share/icons/hicolor/{разрешение}/apps/{имя проекта}.png;
* дополнительные файлы, используемые приложением, располагаются в директории /usr/share/{имя проекта}.
* дополнительные файлы, используемые приложением, располагаются в директории /usr/share/{имя проекта}.
* Так же программы и их данные хранятся в папке /opt/app/ap.plication.name
'''Какой шаблон архитектуры приложения рекомендуется использовать?'''
Как и Qt, для ОС Аврора рекомендуется использовать шаблон MVC (подробнее смотрите безплатный [https://stepik.org/lesson/43071/step/1?unit=21146 курс])


'''Почему не рекомендуется использовать библиотеку Qt Widgets?'''
'''Почему не рекомендуется использовать библиотеку Qt Widgets?'''
Строка 94: Строка 104:
В процессе развития фреймворка ''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'' появился подход разработки интерфейса приложения с применением ''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?'''
'''Валидатор пишет (ERROR)    [libQt5Core.so.5(Qt_5_PRIVATE_API)] Dependency is not allowed'''
 
Как быть, если жизненно необходимо использование ''QObjectPrivate'' и следовательно в ''.pro'' файле <code>Qt+= core-private</code>
 
Ответ:
 
Добавить в ''rpm/*.spec'' вот это: <code>%define __requires_exclude ^.*Qt_5_PRIVATE_API.*$</code>
 
Указанный пример убирает это апи из списка зависимостей и валидатор не ругается, но по факту его использует. Из официальной документации.
 
'''При запуске значком на рабочем столе программа не запускается, в (devel-su journalctl -f )'''
 
'''пишет Invalid dbus-user.own name ru.1developername.appname.*'''
 
Решение: имя пакета нельзя начинать с цифры
 
'''Какие примеры/статьи по написанию тестов для проекта на Qt?'''


Модульное тестирование ''Qt/C++'' под ''Sailfish OS'' https://habr.com/ru/articles/323518/  
Модульное тестирование ''Qt/C++'' под ''Sailfish OS'' https://habr.com/ru/articles/323518/  
Строка 114: Строка 140:
Нет, в SDK 5 вернули настройку "включить шаг подписывания по умолчанию". Для его включения перейдите в настройки SDK > ОС Аврора > Подпись пакетов, поставьте флаг "Включить шаг подписи по умолчанию".
Нет, в SDK 5 вернули настройку "включить шаг подписывания по умолчанию". Для его включения перейдите в настройки SDK > ОС Аврора > Подпись пакетов, поставьте флаг "Включить шаг подписи по умолчанию".


'''Как подписывать приложения из консоли?'''
'''Как подписывать пакеты из консоли?'''


Есть готовое [https://github.com/keygenqt/aurora-scripts#aurora-cli решение] для подписи пакета в настольной ОС.
Есть готовое [https://github.com/keygenqt/aurora-scripts#aurora-cli решение] для подписи пакета в настольной ОС.


'''Как подписывать приложения на устройстве?'''
'''Как подписывать пакеты на устройстве?'''


Для подписи приложений не обязательно ставить SDK:
Для подписи приложений не обязательно ставить SDK:
Строка 128: Строка 154:
* Если у пакета уже есть неподходящая подпись, добавляем <code>--force</code>
* Если у пакета уже есть неподходящая подпись, добавляем <code>--force</code>
[https://talk.maemo.org/showthread.php?t=92963 Упаковка проекта в rpm на устройстве]
[https://talk.maemo.org/showthread.php?t=92963 Упаковка проекта в rpm на устройстве]
'''Виды пакетов в Аврора ОС 5.1 и выше'''
В новой версии Авроры 5.1 разделена установка приложений и системных пакетов. Теперь утилита ''rpm'' ставит только пакеты с системной подписью. Для установки сторонних пакетов нужно использовать ''APM'' (''aurora package manager'') - он установит приложение в отдельный раздел ''/opt/app/com.emaple.application-name'', чтобы не забивать место на системном, добавит в собственные базы и пр. Установить ваш пакет можно либо из файлового менеджера, либо с помощью команды терминала:
<code>gdbus call -y -d ru.omp.APM -o /ru/omp/APM -m ru.omp.APM.Install <full-path-to-rpm> "{}"</code>
Перед установкой приложения при помощи ''APM'' необходимо удалить предыдущую версию приложения если ее номер не младше устанавливаемой.
https://developer.auroraos.ru/doc/sdk/app_development/packaging/install_nonsystem_apps
'''''Как работать с утилитой apm (диспетчер пакетов сторонних приложений в ОС Аврора 5)?'''''
Получение списка пакетов
<code>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.GetPackageList</code>
Сведения о пакете
<code>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.GetPackage "com.example.SuperCoolPackage"</code>
Установка
<code>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Install "/home/defaultuser/Downloads/com.example.supercoolpackage-0.1-1.armv7hl.rpm" "{}"</code>
Удаление пакета
<code>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "com.example.SuperCoolPackage" "{}"</code>
Подвох в том, что таким образом не удастся установить пакеты, собранные в режиме debug (когда создается 3 пакета)
Для установки пакета таким образом, версия устанавливаемого пакета должна быть больше существующего, иначе пакет с таки именем придется удалить перед повторной установкой.
'''Как установить сторонний пакет в качестве системного (с доступом на запись к root FS)?'''
В версии ОС 5.x можно командой <code>rpm -ivh --undefine=__transaction_validation wishmaster-0.1.armv7hl.rpm</code>
'''Что значит пакет от доверенного источника и на что влияет соответсвующая настройка?'''
Пакет должен быть подписан еще второй подписью - подписью источника (например, подписью Рустор). Для игнорирования проверки подписи источника в настройках должен быть включен пункт Не проверять подпись источника.


'''При проверке подписи/попытке подписать пакет в SDK возникает ошибка'''
'''При проверке подписи/попытке подписать пакет в SDK возникает ошибка'''


Нужно положить пакет по пути, содержащем латинские символы, например в каталог проектов, который вы указали при установке SDK
Нужно положить пакет по пути, содержащем латинские символы, например в каталог проектов, который вы указали при установке ''SDK''
 
* *В  Аврора ОС 5 появилось разделение на системные пакеты (разнесли установку системных пакетов и сторонних приложений. Системные пакеты ставятся через утилиту ''rpm'', сторонние (подписанные сертификатом стороннего разработчика) через ''Aurora package manager''. Сторонние приложения ставятся на отдельный раздел  в ''/opt/app/com/com.example.application'' и делаются ссылки в корень)


'''Не устанавливается программа, скачанная в виде rpm-файла'''
'''Не устанавливается программа, скачанная в виде rpm-файла'''
Строка 137: Строка 205:
Для установки на устройство Аврора 5 пакетов, подписанных общедоступным сертификатом разработчика, нужно включить на вашем устройстве режим разработчика (может потребоваться разрешение администратора).
Для установки на устройство Аврора 5 пакетов, подписанных общедоступным сертификатом разработчика, нужно включить на вашем устройстве режим разработчика (может потребоваться разрешение администратора).


На устройство с Аврора ОС 4 не установится пакет, собранный для Аврора ОС 5 (наоборот можно, обычно пакеты для 4ой Авроры устанавливаются на устройства с 5ой Авророй). Так же убедитесь, что разрядность вашего устройства соответствует версии пакета.
На устройство с Аврора ОС 4 не установится пакет, собранный для Аврора ОС 5 (наоборот можно, обычно пакеты для 4ой Авроры устанавливаются на устройства с 5ой Авророй). Так же убедитесь, что разрядность скачанного пакета подходит для вашего устройства.
 
Если программа была установлена ранее, а сейчас при запуске отображается белый экран, перед установкой попробуйте удалить <code>/usr/share/application.name</code>
 
См пункт настоящего документа про утилиту ''apm''


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


<code>LIBS += -L$$PWD/libs/curl -lcurl</code>
<code>LIBS += -L$$PWD/libs/curl -lcurl</code>
'''Пробовал перенести существующий проект SailfishOS на Аврору, валидатор ругается на отсутствие файлов значков<code>[/usr/share/icons/hicolor/172x172/apps/ru.auroraos.bejeweled.png] Icon not found or file resolution is incorrect</code>'''
Можете воспользоваться сайтами масштабирования картинок и добавить по путям
<code>icons/108x108/ru.auroraos.myapplication.png</code>
<code>icons/128x128/ru.auroraos.myapplication.png</code>
<code>icons/172x172/ru.auroraos.myapplication.png</code> файлы недостающиего размера. В примере выше ошибку вызвало имя файла-картинки написанное с ошибкой (не совпадало с называнием проекта). В Авроре 5 допускается собирать приложение со значком в формате ''svg'':
Для этого в ''spec''-файле проекта укажите пути для включения ''svg''-файлов:
<code>%files</code>
<code>...</code>
<code>%{_datadir}/icons/hicolor/*/apps/%{name}.svg</code>
'''Ошибка валидатора <code>[/usr/bin] Direct package ownership of /usr/bin is disallowed.</code>'''
в <code>rpm/<>.spec</code>
<code>%{_bindir}/%{name} вместо %{_bindir}</code>
при условии что в <code>name</code> правильное имя бинарника
'''Ошибка валидатора <code>Incorrect or empty color mode name, using "auto"...</code>'''
Это не ошибка. с этим уведомлением всё собирается, пакуется и проходит валидцию
'''Пытаюсь портировать проект SailfishOS, как сформировать файлы перевода?'''
Нужно дабавить в проект (.pro)
CONFIG += auroraapp_i18n
TRANSLATIONS += \
    translations/ru.auroraos.ApplicationTemplate.ts \
    translations/ru.auroraos.ApplicationTemplate-ru.ts
Переводные фразы в ''qml''-файлах оформить в виде <code>qsTr ("Restart game");</code> создать папку <code>translations</code> и при сборке ''SDK'' создаст файлы <code>translations/ru.auroraos.ApplicationTemplate.ts, translations/ru.auroraos.ApplicationTemplate-ru.ts</code>
в последнем нужно будет заменить английские слова на русские и повторно собрать проект
'''При попытке собрать проект из примеров SDK возникает ошибка <code>bad package</code>'''
Некоторые версии ''SDK'' работают некорректно. Попробуйте обновить ''SDK'' на более свежую версию (удалив текущую версию и установить новую)/установить более раннюю версию ''SDK.''
В общем случае, если проект не из примера, нажно проверить собранный пакет с помощью валидатора (SDK - инструменты)
'''Как добавлять свои шаблоны проектов в SDK'''
1. Записать папку проекта в <code>/home/username/.local/share/AuroraOS-SDK-5.1.0/QtCreator/Aurora OS Examples/</code>
2. Скопировать в папку проекта из любого демо-проекта файлы <code>exaples-manifest.xml</code> и <code>example-icon.png</code> (например, отсюда <code>/home/username/.local/share/AuroraOS-SDK-5.1.0/QtCreator/Aurora OS Demos/ApplicationTemplate</code>)
поправить в ''xml'' путь к картинке и название проекта и файла (указать имя вашей папки, в моем примере это ''ApplicationTemplate2'')
''<example projectPath="'''''ru.auroraos.ApplicationTemplate.pro'''''" name="'''''Application Template2'''''" imageUrl="/home/username/.local/share/AuroraOS-SDK-5.1.0/QtCreator/Aurora OS Demos/'''''ApplicationTemplate2'''''/example-icon.png">''
и при жалении - поправьте описание.


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


# В выключенном состоянии зажать кнопку питания и громкость+, далее выбрать 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'' сброс


'''Как обновиться до версии Аврора 5.1.*?'''
'''Как обновиться до версии Аврора 5.1.*?'''
Строка 198: Строка 332:
Юридические лица могут обновиться, обратившись в офис компании ОМП.
Юридические лица могут обновиться, обратившись в офис компании ОМП.


'''Что делать, если я пока не планирую обновлять устройство?'''
'''Что делать, если я пока не планирую обновлять R570E, купленный во Всёсмарт с 4ой Авррой?'''


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


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


Для аппаратов, проданных с Аврора ОС 4 при сбросе будет осуществлен откат до версии ОС 4. Так же для аппаратов R570E есть [https://4pda.to/forum/index.php?showtopic=1079218&view=findpost&p=131512542 такое] решение.
Для аппаратов, выпущенных с Аврора ОС 4 при сбросе будет осуществлен откат до версии ОС 4. Так же для аппаратов R570E есть [https://4pda.to/forum/index.php?showtopic=1079218&view=findpost&p=131512542 такое] решение.


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


Согласно официальному [https://vk.com/wall-212021805_3683 ответу] компании ОМП, приложение Рустор войдет в состав Аврора ОС 5.1.1
Согласно официальному [https://vk.com/wall-212021805_3683 ответу] компании ОМП, приложение Рустор можно установить на ''Аврора ОС 5.1.1''.60 и выше. Если ваша версия ОС не ниже указанной, нужно сканировать QR-код витрины, с которой приложение Аврора Маркет установить магазин Рустор на ваш телефон.
 
'''Как получить сертификат разработчика для подписывания своих приложений?'''
 
Инструкции есть на сайтах [https://www.rustore.ru/help/developers/publishing-and-verifying-apps/app-publication/app-publication-aurora/dev-certificate Рустор] и [https://developer.auroraos.ru/doc/sdk/app_development/packaging/package_signing?ysclid=m0wfc8ilnk392532125#keyAndCertGegFromIDE ОМП]. Для выполнения действий, нужен российский Линукс, или установка пакета <code>libengine-gost-openssl</code>. Неочевидные шаги по созданию запроса в Аврора SDK: создаем ключи и задаем пароль в консоли:
 
<code>openssl genpkey -engine gost -algorithm gost2012_256 -pkeyopt paramset:A -aes256 -out key.pem</code>
 
''Открываем SDK - Инструменты - ОС Аврора - подпись пакетов - выпуск сертификата''. В поле ''Ключ'' укажите полный путь в виде
 
<code>/home/username/auprojects/key.pem</code>
 
выберите вид шифрования ГОСТ, укажите путь и имя файла запроса
 
<code>/home/ovas/auprojects/csr.pem</code>
 
нажмите "''Сгенерировать''" (укажите пароль, по которому вы создали ключ в консоли). Рядом с кнопкой ''Сгенерировать'' должна появиться зеленая галка. Далее, юридическое лицо может отправить полученный файл в ОМП (с заявлениеем по [https://developer.auroraos.ru/doc/sdk/app_development/packaging/package_signing абразцу]), физические лица направляют запрос в Рустор по инструкции выше.


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


'''Как удалить установленное приложение, если нет значка в списке программ'''
'''Как удалить установленное приложение, если нет значка в списке программ'''
<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.demo.app" </pre>


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


<pre>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.GetPackageList</pre>
<pre>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.GetPackageList</pre>
Строка 225: Строка 375:
<pre>$ invoker --type=qt5 ru.avroid.tavro</pre>
<pre>$ invoker --type=qt5 ru.avroid.tavro</pre>


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


<pre>client_launch_application(): E: launch is not allowed for this application</pre>
<pre>client_launch_application(): E: launch is not allowed for this application</pre>
Строка 333: Строка 483:
Также можно настроить отдельный каталог для проектов под Аврора 4.
Также можно настроить отдельный каталог для проектов под Аврора 4.


Как добавлять свои шаблоны проектов на главную страницу SDK
[https://developer.auroraos.ru/doc/sdk/app_development/setup/several_sdk_versions Официальная инструкция по установке нескольких версий SDK]
'''Терминал эмулятора выдает ошибку при вводе любой команды, а в строке приглашения не отображается имя машины:'''
<code>defaultuser@:~$ ls</code>


<code>hostname: неизвестный узел</code>
Добавьте имя машины в файл ''/etc/hosts'':
<code>127.0.0.1 localhost.localdomain localhost AuroraEmul</code>


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


Закройте проект, удалите файл ''*.pro.user'' . При повторном открытии нужно будет выбрать цели сборки и ошибка должна пропасть.
Закройте проект, удалите файл ''*.pro.user'' . При повторном открытии нужно будет выбрать цели сборки и ошибка должна пропасть.'''QmlLiveBench выдает ошибку'''
 
Если вы скопировали и переименовали проект, проверьте пути к новому расположению в файле r<code>u.auroraos.myproject.pro.user</code>
 
'''Как записать пакет на эмулятор?'''
 
<code>$ scp -P 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk ./file.rpm root@localhost:/home/defaultuser/Downloads</code>
 
'''Как установить пакет на эмулятор?'''
 
Авторизоваться на устройстве
 
<code>ssh -p 2223  -i ~/AuroraOS/vmshare/ssh/private_keys/sdk  root@localhost</code>
 
Установить пакет
 
<code>~/Downloads # dpkg -i file.rpm</code>
 
В результате могут быть выведены ошибки о неудовлетворенных зависимостях. Для их решения нужно скачать на компьютер (например в папку ~/omp/5.1.0.100) недостающие библиотеки, список которых вам выдал терминал при попытке установки пакета (для автоматизации, ниже приведены команды для скачивания всех пакетов)
 
<code>wget -A rpm -m -p -E -k -np <nowiki>https://releases.omprussia.ru/releases/5.1.0.100/omp/i486/pj:oss:/noarch/</nowiki></code>
 
<code>wget -A rpm -m -p -E -k -np <nowiki>https://releases.omprussia.ru/releases/5.1.0.100/omp/i486/pj:oss:/x86_64/</nowiki></code>
 
записать скачанные библиотеки на виртуальную машину командой
 
<code>~/omp/5.1.0.100 $ scp -P 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk ./* root@localhost:/home/defaultuser/Downloads</code>
 
Подключиться к эмулятору по ''ssh''
 
<code>ssh -p 2223  -i ~/AuroraOS/vmshare/ssh/private_keys/sdk  root@localhost</code>
 
<code>cd ~/Downloads</code>
 
Далее последовательно устанавливаем пакеты, которые запросил установщик, а так же те, которые еще попросит система, например:
 
<code>~/Downloads # dpkg -i libcontacts-qt5-omp.rpm</code>
 
'''Как удалить программу из командной строки?'''
 
<code>pkcon -y remove local.example.app</code>
 
новый способ:<pre>gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "ru.demo.app" </pre>
 
'''В новом проекте ошибка: :-1: error: Project ERROR: auroraapp development package not found'''
 
(В проекте и cpp auroraapp подключен)
 
Установить pkg-config на настольном ПК
 
<code>sudo apt install pkg-config</code>
 
'''Ошибки в виртуальной машине ОС Аврора'''
 
Можете удалить/заново установить этот компонент по инструкции [https://developer.auroraos.ru/doc/sdk/app_development/setup/manage_emulators https://developer.auroraos.ru/doc/sdk/app_development/setup/several_sdk_versions]
 
Если вы уже подключались по ssh к виртуальной машине до переустановки, понадобится удалить и добавить заново отпечаток (при ошибке в консоли будет подсказка как это сделать)
 
'''Можно ли установить Sailfish OS SDK если у меня уже установлен Аврора SDK?'''
 
Можно, после установки обоих SDK нужно одному из них (в настройках SDK) поменять порты, на которых будут работать сборочная машина/эмулятор. https://developer.auroraos.ru/doc/sdk/app_development/setup/several_sdk_versions
 
'''В какой папке должны лежать pdf-документы, чтобы их увидел проект на основе TinyPdfViewer?'''
 
<code>/home/defaultuser/Documents</code>
 
'''Есть ли пример, как создать проект с использованием библиотек qt 5.15?'''
 
https://gitlab.com/omprussia/qt/AuroraDeployQtExamples/-/tree/auroraos/5.15/HelloQtQuick?ref_type=heads
 
'''mb2 --target AuroraOS-5.1.2.10-base-armv7hl build, выдает:'''
 
'''ru.auroraos.ApplicationTemplate.armv7hl: E: no-changelogname-tag'''
 
делаю по инструкции <nowiki>https://developer.auroraos.ru/doc/sdk/psdk/build</nowiki>
 
но, после
 
<code>mb2 --target AuroraOS-5.1.2.10-base-armv7hl build</code>
 
выдает:
 
<code>ru.auroraos.ApplicationTemplate.armv7hl: E: no-changelogname-tag</code>
 
ченж лог в ''spec'' добавил, но это никак не повлияло.
 
Что делать, как правильно оформить ''changelog''?
 
Ответ:
 
Это правила для оформления системных ''RPM''. Запускайте ''mb2'' с флагом ''--no-check'' и не забивайте себе голову этими сообщениями.
 
'''Ошибка при сборке проекта "Error: no package for sign found"'''
 
''SDK 5.1.0.100 на винде: делаешь пустой проект, собирается нормально. По мере того, как в проект добавляются файлы, начинает отваливаться процесс создания rpm, и соответственно всё стопорится на этапе rpm-sign, так как нет пакета, который надо подписать''
 
''Помогает только удаление build папки и перезапуск сборки''
 
Решение:
 
Рядом с кнопкой сборки в выпадающем меню выберите "очистить проект".
 
'''Ошибка при сборке проекта The command needs to be used under Aurora SDK workspace, which is currently configured as "/opt/aurora"'''
 
<code>The command needs to be used under Aurora SDK workspace, which is currently configured as "/opt/aurora"</code>
 
<code>07:41:02: Процесс «/root/.config/AuroraOS-SDK-5.1.0/libsfdk/build-target-tools/Aurora Build Engine 5.1.0.100-base/AuroraOS-5.1.0.100-base-x86_64.default/qmake» завершился с кодом 120.</code>
 
''Ошибка при сборке/развёртывании проекта Во время выполнения этапа «qmake».''
 
''Понятно, что проект должен находиться в папке, которая находится в Aurora SDK Workspace.''
 
''При установке был указан путь к каталогу, который будет доступен внутри сборочной среды. Все эти требования выполнены.''
 
Решение:
 
Если все делаете правильно, но ошибка остается, проверьте, что проект не перенесен с другой машины с другими путями в фале *.user
 
'''Аврора SDK в windows 10 выдает нечитаемую ошибку'''
 
Пример ошибки на вкладке "Проблемы":
 
<code><nowiki>:</nowiki>-1: ошибка: "g++" ­Ґ пў«пҐвбп ў­гв७­Ґ© Ё«Ё ў­Ґи­Ґ©</code>
 
<code>Є®¬ ­¤®©, ЁбЇ®«­пҐ¬®© Їа®Ја ¬¬®© Ё«Ё Ї ЄҐв­л¬ д ©«®¬.</code>
 
В настройках Windows регион > дополнительно > региональные стандарты >поставить галку "Бета-версия: использовать Юникод (UTF8)"[[Файл:Win10-utf8.jpg|мини]]если после этого будете в каких-то других программах видеть вопросики, возвращайте назад на английскую
 
Обратный перевод приведенной выше ошибки: <code>'g++' is not recognized as an internal or external command, operable program or batch file.</code>
 
'''На каком этапе генерируются файлы .qm из файлов  .ts? Они сами должны создаваться? В прокте есть файлы .ts, но почему-то при установке не появляются .qm в /usr/share.'''
 
Убедитесь, что в файле проекта не так:
 
<code>includepath += \</code>
 
'''Как установить браузер на эмулятор ОС Аврора?'''
 
<code># pkcon install sailfish-browser</code>
 
'''Не могу запустить проект в горизонтальной ориентации в проекте без Silica'''
 
<code>ApplicationWindow {</code>
 
<code>   objectName: "applicationWindow"</code>
 
<code>   initialPage: Qt.resolvedUrl("pages/Main.qml")</code>
 
<code>   cover: Qt.resolvedUrl("cover/DefaultCoverPage.qml")</code>
 
<code>   allowedOrientations: Orientation.Landscape</code>
 
<code>}</code>
 
Строчка проставлена в основном ''qml'' файле. Поддержка режима ''Ladscape'' стоит в планшете. Если подключить к проекту ''Silica'', указанный выше пример работает. Как обойтись без ''Silica'' (по заданию на разработку)?
 
'''Ответ:'''
 
В приведенном выше примере описана мета-страница для перехода. Ориентацию нужно указать в инишиал Пейдж (для каждой страницы отдельно).
 
Если хотите поменять ориентацию по умолчанию, то этот параметр и указывайте.
 
'''Есть ли примеры создания графиков/диаграмм?'''
 
Статья на тему графиков https://vk.com/@programmistov-razrabotka-dlya-sailfish-os-otobrazhenie-grafikov-s-ispolzov
 
''QCharts'' появились позже ''Qt 5.6'' (которая поддерживается в ОС Аврора). Так что их придется нести вместе с нужной версией ''Qt'' (встраивать в ваш проект).
 
https://github.com/dstahlke/gnuplot-iostream
 
Примеры подключения к проекту Qt 5.16
 
https://gitlab.com/omprussia/qt/QtAuroraSdk
 
'''Как из приложения управлять яркостью экрана?'''
 
В виде API указанная функциональность не реализована, есть вариант править файл:
 
<code>/sys/class/leds/lcd-backlight/brightness</code>

Текущая версия от 14:53, 22 ноября 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/{имя проекта}.
  • Так же программы и их данные хранятся в папке /opt/app/ap.plication.name

Какой шаблон архитектуры приложения рекомендуется использовать?

Как и Qt, для ОС Аврора рекомендуется использовать шаблон MVC (подробнее смотрите безплатный курс)

Почему не рекомендуется использовать библиотеку 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, может запуститься, но не пройдет проверку валидатора).

Валидатор пишет (ERROR)    [libQt5Core.so.5(Qt_5_PRIVATE_API)] Dependency is not allowed

Как быть, если жизненно необходимо использование QObjectPrivate и следовательно в .pro файле Qt+= core-private

Ответ:

Добавить в rpm/*.spec вот это: %define __requires_exclude ^.*Qt_5_PRIVATE_API.*$

Указанный пример убирает это апи из списка зависимостей и валидатор не ругается, но по факту его использует. Из официальной документации.

При запуске значком на рабочем столе программа не запускается, в (devel-su journalctl -f )

пишет Invalid dbus-user.own name ru.1developername.appname.*

Решение: имя пакета нельзя начинать с цифры

Какие примеры/статьи по написанию тестов для проекта на 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 на устройстве

Виды пакетов в Аврора ОС 5.1 и выше

В новой версии Авроры 5.1 разделена установка приложений и системных пакетов. Теперь утилита rpm ставит только пакеты с системной подписью. Для установки сторонних пакетов нужно использовать APM (aurora package manager) - он установит приложение в отдельный раздел /opt/app/com.emaple.application-name, чтобы не забивать место на системном, добавит в собственные базы и пр. Установить ваш пакет можно либо из файлового менеджера, либо с помощью команды терминала:

gdbus call -y -d ru.omp.APM -o /ru/omp/APM -m ru.omp.APM.Install <full-path-to-rpm> "{}"

Перед установкой приложения при помощи APM необходимо удалить предыдущую версию приложения если ее номер не младше устанавливаемой.

https://developer.auroraos.ru/doc/sdk/app_development/packaging/install_nonsystem_apps

Как работать с утилитой apm (диспетчер пакетов сторонних приложений в ОС Аврора 5)?

Получение списка пакетов

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

Сведения о пакете

gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.GetPackage "com.example.SuperCoolPackage"

Установка

gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Install "/home/defaultuser/Downloads/com.example.supercoolpackage-0.1-1.armv7hl.rpm" "{}"

Удаление пакета

gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "com.example.SuperCoolPackage" "{}"

Подвох в том, что таким образом не удастся установить пакеты, собранные в режиме debug (когда создается 3 пакета)

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

Как установить сторонний пакет в качестве системного (с доступом на запись к root FS)?

В версии ОС 5.x можно командой rpm -ivh --undefine=__transaction_validation wishmaster-0.1.armv7hl.rpm

Что значит пакет от доверенного источника и на что влияет соответсвующая настройка?

Пакет должен быть подписан еще второй подписью - подписью источника (например, подписью Рустор). Для игнорирования проверки подписи источника в настройках должен быть включен пункт Не проверять подпись источника.

При проверке подписи/попытке подписать пакет в SDK возникает ошибка

Нужно положить пакет по пути, содержащем латинские символы, например в каталог проектов, который вы указали при установке SDK

  • *В Аврора ОС 5 появилось разделение на системные пакеты (разнесли установку системных пакетов и сторонних приложений. Системные пакеты ставятся через утилиту rpm, сторонние (подписанные сертификатом стороннего разработчика) через Aurora package manager. Сторонние приложения ставятся на отдельный раздел  в /opt/app/com/com.example.application и делаются ссылки в корень)

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

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

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

Если программа была установлена ранее, а сейчас при запуске отображается белый экран, перед установкой попробуйте удалить /usr/share/application.name

См пункт настоящего документа про утилиту apm

Можно ли использовать 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

Пробовал перенести существующий проект SailfishOS на Аврору, валидатор ругается на отсутствие файлов значков[/usr/share/icons/hicolor/172x172/apps/ru.auroraos.bejeweled.png] Icon not found or file resolution is incorrect

Можете воспользоваться сайтами масштабирования картинок и добавить по путям

icons/108x108/ru.auroraos.myapplication.png

icons/128x128/ru.auroraos.myapplication.png

icons/172x172/ru.auroraos.myapplication.png файлы недостающиего размера. В примере выше ошибку вызвало имя файла-картинки написанное с ошибкой (не совпадало с называнием проекта). В Авроре 5 допускается собирать приложение со значком в формате svg:

Для этого в spec-файле проекта укажите пути для включения svg-файлов:

%files

...

%{_datadir}/icons/hicolor/*/apps/%{name}.svg

Ошибка валидатора [/usr/bin] Direct package ownership of /usr/bin is disallowed.

в rpm/<>.spec

%{_bindir}/%{name} вместо %{_bindir}

при условии что в name правильное имя бинарника

Ошибка валидатора Incorrect or empty color mode name, using "auto"...

Это не ошибка. с этим уведомлением всё собирается, пакуется и проходит валидцию

Пытаюсь портировать проект SailfishOS, как сформировать файлы перевода?

Нужно дабавить в проект (.pro)

CONFIG += auroraapp_i18n
TRANSLATIONS += \
    translations/ru.auroraos.ApplicationTemplate.ts \
    translations/ru.auroraos.ApplicationTemplate-ru.ts

Переводные фразы в qml-файлах оформить в виде qsTr ("Restart game"); создать папку translations и при сборке SDK создаст файлы translations/ru.auroraos.ApplicationTemplate.ts, translations/ru.auroraos.ApplicationTemplate-ru.ts

в последнем нужно будет заменить английские слова на русские и повторно собрать проект

При попытке собрать проект из примеров SDK возникает ошибка bad package

Некоторые версии SDK работают некорректно. Попробуйте обновить SDK на более свежую версию (удалив текущую версию и установить новую)/установить более раннюю версию SDK.

В общем случае, если проект не из примера, нажно проверить собранный пакет с помощью валидатора (SDK - инструменты)

Как добавлять свои шаблоны проектов в SDK

1. Записать папку проекта в /home/username/.local/share/AuroraOS-SDK-5.1.0/QtCreator/Aurora OS Examples/

2. Скопировать в папку проекта из любого демо-проекта файлы exaples-manifest.xml и example-icon.png (например, отсюда /home/username/.local/share/AuroraOS-SDK-5.1.0/QtCreator/Aurora OS Demos/ApplicationTemplate)

поправить в xml путь к картинке и название проекта и файла (указать имя вашей папки, в моем примере это ApplicationTemplate2)

<example projectPath="ru.auroraos.ApplicationTemplate.pro" name="Application Template2" imageUrl="/home/username/.local/share/AuroraOS-SDK-5.1.0/QtCreator/Aurora OS Demos/ApplicationTemplate2/example-icon.png">

и при жалении - поправьте описание.

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

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

  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)

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

Что делать, если я пока не планирую обновлять R570E, купленный во Всёсмарт с 4ой Авррой?

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

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

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

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

Согласно официальному ответу компании ОМП, приложение Рустор можно установить на Аврора ОС 5.1.1.60 и выше. Если ваша версия ОС не ниже указанной, нужно сканировать QR-код витрины, с которой приложение Аврора Маркет установить магазин Рустор на ваш телефон.

Как получить сертификат разработчика для подписывания своих приложений?

Инструкции есть на сайтах Рустор и ОМП. Для выполнения действий, нужен российский Линукс, или установка пакета libengine-gost-openssl. Неочевидные шаги по созданию запроса в Аврора SDK: создаем ключи и задаем пароль в консоли:

openssl genpkey -engine gost -algorithm gost2012_256 -pkeyopt paramset:A -aes256 -out key.pem

Открываем SDK - Инструменты - ОС Аврора - подпись пакетов - выпуск сертификата. В поле Ключ укажите полный путь в виде

/home/username/auprojects/key.pem

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

/home/ovas/auprojects/csr.pem

нажмите "Сгенерировать" (укажите пароль, по которому вы создали ключ в консоли). Рядом с кнопкой Сгенерировать должна появиться зеленая галка. Далее, юридическое лицо может отправить полученный файл в ОМП (с заявлениеем по абразцу), физические лица направляют запрос в Рустор по инструкции выше.

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

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

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

gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "ru.demo.app" 

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

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.

Как добавлять свои шаблоны проектов на главную страницу SDK

Официальная инструкция по установке нескольких версий SDK

Терминал эмулятора выдает ошибку при вводе любой команды, а в строке приглашения не отображается имя машины:

defaultuser@:~$ ls

hostname: неизвестный узел

Добавьте имя машины в файл /etc/hosts:

127.0.0.1 localhost.localdomain localhost AuroraEmul

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

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

Если вы скопировали и переименовали проект, проверьте пути к новому расположению в файле ru.auroraos.myproject.pro.user

Как записать пакет на эмулятор?

$ scp -P 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk ./file.rpm root@localhost:/home/defaultuser/Downloads

Как установить пакет на эмулятор?

Авторизоваться на устройстве

ssh -p 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk root@localhost

Установить пакет

~/Downloads # dpkg -i file.rpm

В результате могут быть выведены ошибки о неудовлетворенных зависимостях. Для их решения нужно скачать на компьютер (например в папку ~/omp/5.1.0.100) недостающие библиотеки, список которых вам выдал терминал при попытке установки пакета (для автоматизации, ниже приведены команды для скачивания всех пакетов)

wget -A rpm -m -p -E -k -np https://releases.omprussia.ru/releases/5.1.0.100/omp/i486/pj:oss:/noarch/

wget -A rpm -m -p -E -k -np https://releases.omprussia.ru/releases/5.1.0.100/omp/i486/pj:oss:/x86_64/

записать скачанные библиотеки на виртуальную машину командой

~/omp/5.1.0.100 $ scp -P 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk ./* root@localhost:/home/defaultuser/Downloads

Подключиться к эмулятору по ssh

ssh -p 2223 -i ~/AuroraOS/vmshare/ssh/private_keys/sdk root@localhost

cd ~/Downloads

Далее последовательно устанавливаем пакеты, которые запросил установщик, а так же те, которые еще попросит система, например:

~/Downloads # dpkg -i libcontacts-qt5-omp.rpm

Как удалить программу из командной строки?

pkcon -y remove local.example.app

новый способ:

gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Remove "ru.demo.app" 

В новом проекте ошибка: :-1: error: Project ERROR: auroraapp development package not found

(В проекте и cpp auroraapp подключен)

Установить pkg-config на настольном ПК

sudo apt install pkg-config

Ошибки в виртуальной машине ОС Аврора

Можете удалить/заново установить этот компонент по инструкции https://developer.auroraos.ru/doc/sdk/app_development/setup/several_sdk_versions

Если вы уже подключались по ssh к виртуальной машине до переустановки, понадобится удалить и добавить заново отпечаток (при ошибке в консоли будет подсказка как это сделать)

Можно ли установить Sailfish OS SDK если у меня уже установлен Аврора SDK?

Можно, после установки обоих SDK нужно одному из них (в настройках SDK) поменять порты, на которых будут работать сборочная машина/эмулятор. https://developer.auroraos.ru/doc/sdk/app_development/setup/several_sdk_versions

В какой папке должны лежать pdf-документы, чтобы их увидел проект на основе TinyPdfViewer?

/home/defaultuser/Documents

Есть ли пример, как создать проект с использованием библиотек qt 5.15?

https://gitlab.com/omprussia/qt/AuroraDeployQtExamples/-/tree/auroraos/5.15/HelloQtQuick?ref_type=heads

mb2 --target AuroraOS-5.1.2.10-base-armv7hl build, выдает:

ru.auroraos.ApplicationTemplate.armv7hl: E: no-changelogname-tag

делаю по инструкции https://developer.auroraos.ru/doc/sdk/psdk/build

но, после

mb2 --target AuroraOS-5.1.2.10-base-armv7hl build

выдает:

ru.auroraos.ApplicationTemplate.armv7hl: E: no-changelogname-tag

ченж лог в spec добавил, но это никак не повлияло.

Что делать, как правильно оформить changelog?

Ответ:

Это правила для оформления системных RPM. Запускайте mb2 с флагом --no-check и не забивайте себе голову этими сообщениями.

Ошибка при сборке проекта "Error: no package for sign found"

SDK 5.1.0.100 на винде: делаешь пустой проект, собирается нормально. По мере того, как в проект добавляются файлы, начинает отваливаться процесс создания rpm, и соответственно всё стопорится на этапе rpm-sign, так как нет пакета, который надо подписать

Помогает только удаление build папки и перезапуск сборки

Решение:

Рядом с кнопкой сборки в выпадающем меню выберите "очистить проект".

Ошибка при сборке проекта The command needs to be used under Aurora SDK workspace, which is currently configured as "/opt/aurora"

The command needs to be used under Aurora SDK workspace, which is currently configured as "/opt/aurora"

07:41:02: Процесс «/root/.config/AuroraOS-SDK-5.1.0/libsfdk/build-target-tools/Aurora Build Engine 5.1.0.100-base/AuroraOS-5.1.0.100-base-x86_64.default/qmake» завершился с кодом 120.

Ошибка при сборке/развёртывании проекта Во время выполнения этапа «qmake».

Понятно, что проект должен находиться в папке, которая находится в Aurora SDK Workspace.

При установке был указан путь к каталогу, который будет доступен внутри сборочной среды. Все эти требования выполнены.

Решение:

Если все делаете правильно, но ошибка остается, проверьте, что проект не перенесен с другой машины с другими путями в фале *.user

Аврора SDK в windows 10 выдает нечитаемую ошибку

Пример ошибки на вкладке "Проблемы":

:-1: ошибка: "g++" ­Ґ пў«пҐвбп ў­гв७­Ґ© Ё«Ё ў­Ґи­Ґ©

Є®¬ ­¤®©, ЁбЇ®«­пҐ¬®© Їа®Ја ¬¬®© Ё«Ё Ї ЄҐв­л¬ д ©«®¬.

В настройках Windows регион > дополнительно > региональные стандарты >поставить галку "Бета-версия: использовать Юникод (UTF8)"

если после этого будете в каких-то других программах видеть вопросики, возвращайте назад на английскую

Обратный перевод приведенной выше ошибки: 'g++' is not recognized as an internal or external command, operable program or batch file.

На каком этапе генерируются файлы .qm из файлов  .ts? Они сами должны создаваться? В прокте есть файлы .ts, но почему-то при установке не появляются .qm в /usr/share.

Убедитесь, что в файле проекта не так:

includepath += \

Как установить браузер на эмулятор ОС Аврора?

# pkcon install sailfish-browser

Не могу запустить проект в горизонтальной ориентации в проекте без Silica

ApplicationWindow {

   objectName: "applicationWindow"

   initialPage: Qt.resolvedUrl("pages/Main.qml")

   cover: Qt.resolvedUrl("cover/DefaultCoverPage.qml")

   allowedOrientations: Orientation.Landscape

}

Строчка проставлена в основном qml файле. Поддержка режима Ladscape стоит в планшете. Если подключить к проекту Silica, указанный выше пример работает. Как обойтись без Silica (по заданию на разработку)?

Ответ:

В приведенном выше примере описана мета-страница для перехода. Ориентацию нужно указать в инишиал Пейдж (для каждой страницы отдельно).

Если хотите поменять ориентацию по умолчанию, то этот параметр и указывайте.

Есть ли примеры создания графиков/диаграмм?

Статья на тему графиков https://vk.com/@programmistov-razrabotka-dlya-sailfish-os-otobrazhenie-grafikov-s-ispolzov

QCharts появились позже Qt 5.6 (которая поддерживается в ОС Аврора). Так что их придется нести вместе с нужной версией Qt (встраивать в ваш проект).

https://github.com/dstahlke/gnuplot-iostream

Примеры подключения к проекту Qt 5.16

https://gitlab.com/omprussia/qt/QtAuroraSdk

Как из приложения управлять яркостью экрана?

В виде API указанная функциональность не реализована, есть вариант править файл:

/sys/class/leds/lcd-backlight/brightness