diff --git a/cicd/stages/build.yml b/cicd/stages/build.yml index 73af01b906f84ea16ecd27b72a65d72ecc13eea4..659a333daf0c01900ae15d0595f289b5ccbdffa4 100644 --- a/cicd/stages/build.yml +++ b/cicd/stages/build.yml @@ -40,6 +40,7 @@ -DANDROID_OPENSSL_PATH=${QDS_CI_JOB_OPENSSL_PATH} \ -DGOOGLE_PLAY_APP_VERSION=${GOOGLE_PLAY_APP_VERSION} \ -DBUILD_EXAMPLES=OFF + - cat ${QDS_CI_JOB_BUILD_PATH}/src/dynamic_imports.qml - cmake --build ${QDS_CI_JOB_BUILD_PATH} --target aab .copy-and-sign-apks: ©-and-sign-apks @@ -118,4 +119,5 @@ build-desktop: -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=${QDS_CI_JOB_QT_PATH} \ -DBUILD_EXAMPLES=OFF + - cat ${QDS_CI_JOB_BUILD_PATH}/src/dynamic_imports.qml - cmake --build ${QDS_CI_JOB_BUILD_PATH} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 327a9b65bc3c2665816fe7f8b6494c69315aa08c..2188ab774e9e6918e732c858e558ec55db8255ee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -46,12 +46,26 @@ foreach(imported_target IN LISTS imported_targets) _qt_qml_module_installed_plugin_target) if(qml_plugin_target) - message(STATUS - "Imported target: ${imported_target} -> ${qml_plugin_target}") + + message(STATUS + "Imported target: ${imported_target} -> ${qml_plugin_target}") # Get location of the plugin file. - get_target_property(imported_location "${qml_plugin_target}" IMPORTED_LOCATION) - if(NOT EXISTS "${imported_location}") + get_target_property(imported_location_default "${qml_plugin_target}" IMPORTED_LOCATION) + get_target_property(imported_location_release "${qml_plugin_target}" IMPORTED_LOCATION_RELEASE) + get_target_property(imported_location_min_size "${qml_plugin_target}" IMPORTED_LOCATION_MINSIZEREL) + get_target_property(imported_location_min_size_rel "${qml_plugin_target}" IMPORTED_LOCATION_RELWITHDEBINFO) + + if(imported_location_default) + set(imported_location "${imported_location_default}") + elseif(imported_location_release) + set(imported_location "${imported_location_release}") + elseif(imported_location_min_size) + set(imported_location "${imported_location_min_size}") + elseif(imported_location_min_size_rel) + set(imported_location "${imported_location_min_size_rel}") + else() + message(WARNING "No imported location found for ${qml_plugin_target}.") continue() endif() @@ -62,12 +76,14 @@ foreach(imported_target IN LISTS imported_targets) # to the plugin file. That's at least usually the case for Qt qml plugins. set(qmldir_path "${imported_location_dir}/qmldir") if(NOT EXISTS "${qmldir_path}") + message(WARNING "No qmldir file found for ${qml_plugin_target}.") continue() endif() # Read qmldir file contents. file(READ "${qmldir_path}" qmldir_content) if(qmldir_content STREQUAL "") + message(WARNING "Empty qmldir for ${qml_plugin_target}.") continue() endif() diff --git a/src/backend/dsconnector/dsmanager.cpp b/src/backend/dsconnector/dsmanager.cpp index 29d301f038de4ef740ed2d362f00b57cdffe8591..1c1e6028c5af3b51b281d0ced2695ebaa61c0540 100644 --- a/src/backend/dsconnector/dsmanager.cpp +++ b/src/backend/dsconnector/dsmanager.cpp @@ -39,7 +39,10 @@ void DesignStudioManager::init() QUdpSocket udpSocket; const int port = 53452; + +#ifdef Q_OS_ANDROID udpSocket.writeDatagram(datagram, QHostAddress::LocalHost, port); +#endif udpSocket.writeDatagram(datagram, QHostAddress::Broadcast, port); udpSocket.writeDatagram(datagram, QHostAddress::AnyIPv4, port); udpSocket.writeDatagram(datagram, QHostAddress::AnyIPv6, port); diff --git a/src/backend/main.cpp b/src/backend/main.cpp index 79bca5d3c614f9af69ae9d6511bd6fc5f87c287f..237cac5ef5b9e9c8f6130742d5eab4640c675c42 100644 --- a/src/backend/main.cpp +++ b/src/backend/main.cpp @@ -48,7 +48,12 @@ int main(int argc, char *argv[]) view.engine()->rootContext()->setContextProperty("backend", &backend); view.setSource(QUrl(QStringLiteral("qrc:/qt/qml/AndroidUI/Main.qml"))); view.setResizeMode(QQuickView::SizeRootObjectToView); + +#ifdef Q_OS_ANDROID view.showMaximized(); +#else + view.show(); +#endif return app.exec(); } diff --git a/src/backend/projectmanager.cpp b/src/backend/projectmanager.cpp index e28f7aaa16ab856a984c54e2c24da6d63893e863..016e710ce2bdcad478c1f14d07b46a5254ba542e 100644 --- a/src/backend/projectmanager.cpp +++ b/src/backend/projectmanager.cpp @@ -135,9 +135,12 @@ QString ProjectManager::unpackProject(const QByteArray &project) return resourcePath; } -QString ProjectManager::findFile(const QString &dir, const QString &filter) +QString ProjectManager::findFile(const QString &dir, const QString &filter, const bool recursive) { - QDirIterator it(dir, {filter}, QDir::Files); + QDirIterator it(dir, + {filter}, + QDir::Files, + recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags); return it.next(); } @@ -203,7 +206,7 @@ bool ProjectManager::runProjectInternal(const QByteArray &project) const QString projectPath = unpackProject(project); qDebug() << "Project location: " << projectPath; - const QString qmlProjectFile = findFile(projectPath, "*.qmlproject"); + const QString qmlProjectFile = findFile(projectPath, "*.qmlproject", false); if (qmlProjectFile.isEmpty()) { qCritical() << "No \"*.qmlproject\" found in \"" << projectPath << "\"."; return false; @@ -217,7 +220,7 @@ bool ProjectManager::runProjectInternal(const QByteArray &project) if (mainQmlFilePath.isEmpty()) return false; - const QString qtquickcontrols2File = findFile(projectPath, "qtquickcontrols2.conf"); + const QString qtquickcontrols2File = findFile(projectPath, "qtquickcontrols2.conf", false); if (!qtquickcontrols2File.isEmpty()) { qputenv("QT_QUICK_CONTROLS_CONF", qtquickcontrols2File.toLatin1()); } diff --git a/src/backend/projectmanager.h b/src/backend/projectmanager.h index 515ecdf8ea73a3710c9f22457473674c45cced57..ae12e3cf6ca38d8f2b3d90c2a1ead4646d0c3f82 100644 --- a/src/backend/projectmanager.h +++ b/src/backend/projectmanager.h @@ -62,7 +62,7 @@ private: // project management bool runProjectInternal(const QByteArray &project); - QString findFile(const QString &dir, const QString &filter); + QString findFile(const QString &dir, const QString &filter, const bool recursive = true); QString readQmlProjectFile(const QString &qmlProjectFilePath); QString getMainQmlFile(const QString &projectPath, const QString &qmlProjectFileContent); QStringList getImportPaths(const QString &projectPath, const QString &qmlProjectFileContent);