QML android 应用程序使用 QtQuick.Shapes,未找到模块

QML android application using QtQuick.Shapes, module not found

我有一个 Qt 5.12.9 qml android 应用程序。它运行良好,但我必须在文件中“导入 QtQuick.Shapes 1.12”,并在执行时得到:

module "QtQuick.Shapes" plugin "qmlshapesplugin" not found

我很好地导入了 Quick 模块,因为没有人抱怨它,而且我的应用程序在没有导入 Shapes 的情况下也运行良好。我认为形状通常包含在快速模块中。

所以我查看了我的 apk 中的 .so 文件,libQt5QuickShapes.so 不在其中。有 libQt5QuickParticles.so、libQt5QuickTemplates2.so 等文件,我没有在我的应用程序中明确导入,但没有 shapes.so 文件。

如何在我的应用程序中导入 shapes 模块和 .so?它与其他模块有什么不同吗? 我认为 androiddeployqt 完成了这项工作,但显然不是所有模块都如此。

在我的 Qt 安装中,我有以下文件:

./include/QtQuickShapes/5.12.9/QtQuickShapes/private/qquickshapesglobal_p.h
./include/QtQuickShapes/5.12.9/QtQuickShapes/private/qquickshapesoftwarerenderer_p.h
./include/QtQuickShapes/qquickshapesglobal.h
./include/QtQuickShapes/qtquickshapesversion.h
./mkspecs/modules/qt_lib_quickshapes_private.pri
./qml/QtQuick/Shapes/libqmlshapesplugin.so
./include/QtQuickShapes
./include/QtQuickShapes/5.12.9/QtQuickShapes
./include/QtQuickShapes/QtQuickShapes
./include/QtQuickShapes/QtQuickShapesDepends
./include/QtQuickShapes/QtQuickShapesVersion
./lib/libQt5QuickShapes.la
./lib/libQt5QuickShapes.prl
./lib/libQt5QuickShapes.so
./qml/QtQuick/Shapes

Shapes 的文件似乎在那里。

编辑

在我的部署输出中,我有:

Reading Android dependencies for Qt5Quick
Appending dependency from xml: qml/QtQuick/Shapes/libqmlshapesplugin.so
Appending dependency from xml: qml/QtQuick/Shapes/plugins.qmltypes
Appending dependency from xml: qml/QtQuick/Shapes/qmldir
-- Skipping /pathToQt/qml/QtQuick/Shapes/libqmlshapesplugin.so. It has unmet dependencies: lib/libQt5QuickShapes.so.
-- Copied /pathToBuildApkFolder/assets/--Added-by-androiddeployqt--/qml/QtQuick/Shapes/plugins.qmltypes
-- Copied /pathToBuildApkFolder/assets/--Added-by-androiddeployqt--/qml/QtQuick/Shapes/qmldir

这是否意味着缺少 libqmlshapesplugin 的某些依赖项(它有未满足的依赖项:lib/libQt5QuickShapes.so),所以它没有添加到 apk 包中?但是 lib/libQt5QuickShapes.so 似乎正确安装了 Qt5.12.9.

其实我并没有明确说明我的项目不是用QtCreator开发的。所以我不得不为 android-project-deployment-settings.json 使用现有的 json 文件,它通常由 Qt 自动生成,并且包含项目的很多属性(https://doc.qt.io/qt-5/deployment-android.html#prerequisites-before-running-androiddeployqt) ,我不知道的。

我使用了我项目中的那个,但它没有更新。更准确地说,属性

"qml-root-path": "@QML_ROOT_PATH@" //the path to my qml files

丢失,因此 androiddeploy 命令没有为我的应用程序部署所有模块,而只部署了默认模块。

所以我用 属性 更新了 json 文件,没关系,找到了模块“QtQuick.Shapes”。