AuroraQTWebApp
Описание
Руководство по упаковке локального веб-приложения в ОС Аврора 4
Упаковка WEB-приложения для ОС АВРОРА (руководство)
Руководство по упаковке веб-приложения на ОС Аврора при помощи Аврора IDE (Qt Creator), не требующего для своей работы веб-сервер
Упаковываем приложение, работающее без веб-сервера, построенное на базе html+js.
Руководство для версии Аврора IDE 4.0.2.249 (актуальность - декабрь 2023 года).
Шаги:
-
Создаем новое приложение, заполняем все необходимые поля диалога создания нового Qt QML-приложения

-
Весь веб-контент (html,js,контент) кладем в папку www в директории приложения (например, для Linux это будет /home/имя_пользователя/AuroraApps/имя_приложения)

-
Правой кнопкой мыши по имени проекта, в меню выбираем "Добавить новый", в окне выбираем Qt -> Файл ресурсов Qt.

Нажимаем "Выбрать", в следующем диалоге пишем в имени файла resources и в следующем диалоге "Завершить".
В проекте будет создан файл ресурсов resources.qrc, который будет прописан в .pro файле нашего приложения (будет внизу .pro файла строка RESOURCES += resources.qrc)
-
Добавлем в проект приложения нашу папку www: правой кнопкой по названию проекта -> "Добавить существующий каталог", далее выбираем наш каталог www.

-
Всё содержимое каталога www будет включено в .pro файл нашего проекта. Открываем .pro файл и видим список файлов в разделе DISTFILES += . Выбираем и копируем все оттуда, начинающееся с www (Ctrl-C).

-
Правой кнопкой мыши по нашему файлу ресурсов resources.qrc -> Открыть в редакторе -> Где префикс - там ставим /, добавляем префикс. Теперь правой кнопкой мыши по resources.qrc -> Открыть с помощью -> Текстовый редактор.
<RCC>
<qresource prefix="/">
//Сюда вставлем то, что скопировали в пункте 5. Добавляем <file> перед названием файла и </file> после названия файла, при большом количестве файлов пользуемся функцией "Найти и заменить" (Ctrl-F)//
</qresource>
</RCC>
Должно получиться в итоге примерно следующее:
<RCC>
<qresource prefix="/">
...
<file>www/blockly/accessible/app.component.js</file>
<file>www/blockly/accessible/clipboard.service.js</file>
<file>www/blockly/accessible/field.component.js</file>
<file>www/blockly/accessible/libs/Rx.umd.min.js</file>
<file>www/blockly/accessible/libs/angular2-all.umd.min.js</file>
<file>www/blockly/accessible/libs/angular2-polyfills.min.js</file>
<file>www/blockly/accessible/libs/es6-shim.min.js</file>
<file>www/blockly/accessible/messages.js</file>
...
</qresource>
</RCC>

Не забываем сохранить изменения в файлах.
- Идем в .pro файл нашего проекта и добавляем в #CONFIG += resources_big. Должно получиться следующее:
CONFIG += \
auroraapp \
resources_big
ВНИМАНИЕ!
Без этой директивы в случае большого веб-проекта на несколько десятков мегабайт сборка выдаст ошибку "virtul memory exhauted", "qrc_resources.o Error 1"

#ЗА ПОМОЩЬ С РЕШЕНИЕМ ПРОБЛЕМ С НЕХВАТКОЙ ПАМЯТИ ПРИ СБОРКЕ ОГРОМНОЕ СПАСИБО ДАНИИЛУ МИХАЙЛОВУ-ОВСЯННИКОВУ
#CONFIG += resources_big
#ПРИ ПОМОЩИ ЭТОЙ ДИРЕКТИВЫ ПРОЕКТ СОБИРАЕТСЯ БЕЗ ПРОБЛЕМ ДАЖЕ ПРИ РАЗМЕРЕ ПАПКИ WWW в 150 Мб
- Добавляем в конец нашего .pro файла следующий код:
DEPLOYMENT_PATH = /usr/share/$${TARGET}/qml/pages
www.files =www
www.path = $${DEPLOYMENT_PATH}
INSTALLS += www
#ВКЛЮЧЕНИЕ ПАПКИ www В RPM-файл, без этой секции ресурсы в RPM-файл включены не будут
#В РАБОТЕ ДЛЯ WEBVIEW В QML ТЕПЕРЬ МОЖНО ИСПОЛЬЗОВАТЬ ССЫЛКИ ТИПА url: "www/index.html" где index.html находится в папке www ресурсов

Физически на устростве (телефоне, планшете) папка www будет после установки приложения размещаться в папке /usr/share/имя_приложения/qml/pages
9. Переходим к файлу имя_проекта.qml. Выставляем ориентации (опционально)
_defaultPageOrientations: Orientation.All

10. Переходим к MainPage.qml. Для работы WebView при условии нахождения index.html в папке www будет работоспособным следующий код:
import QtQuick 2.6
import Sailfish.Silica 1.0
import Sailfish.WebView 1.0
import Sailfish.WebEngine 1.0
Page {
objectName: "mainPage"
WebView {
id: webView
objectName: "webView"
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom:parent.bottom
}
}
Component.onCompleted: {
webView.url = Qt.resolvedUrl("www/index.html")
}
}
- В разделе "Проекты" не забываем указать ключи для подписи пакетов, собираем приложение.

- При необходимости можем использовать имеющиеся в приложении компоненты, которые мы разместили в папке www, для комбинированного web/qml приложения