windows下为android部署qt3d项目
Posted
技术标签:
【中文标题】windows下为android部署qt3d项目【英文标题】:Deploying qt3d project for android under windows 【发布时间】:2013-11-12 15:24:53 【问题描述】:我正在尝试在 Windows 下使用 qt5 和 qt3d 在 android 上部署测试程序。 构建 qt3d 是成功的,仍然需要手动将库和源复制到我的 Qt5 文件夹中。看起来 qt3d 工作正常,模块被识别为这样。
现在我想在 qt3d 文件夹中构建其中一个示例项目。更准确地说,我尝试构建 qt3d 茶壶示例。
C:\Qt\android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/bin/arm-linux-androideabi-g++ -c -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack -std=gnu++0x -O2 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -fno-exceptions -Wall -Wno-psabi -W -D_REENTRANT -fPIE -DQT_NO_PRINTDIALOG -DQT_NO_XKBCOMMON -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_3D_LIB -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\mkspecs\android-g++ -I..\teapot -I..\..\..\include -I..\..\..\include\Qt3D -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtOpenGL -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtWidgets -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtGui -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtCore -I.moc\release_shared -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\include -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include -IC:\Qt\android-ndk-r9b\platforms\android-9\arch-arm\usr\include -I. -o .obj\release_shared\teapotview.obj ..\teapot\teapotview.cpp
C:\Qt\android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/bin/arm-linux-androideabi-g++ -c -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack -std=gnu++0x -O2 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -fno-exceptions -Wall -Wno-psabi -W -D_REENTRANT -fPIE -DQT_NO_PRINTDIALOG -DQT_NO_XKBCOMMON -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_3D_LIB -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\mkspecs\android-g++ -I..\teapot -I..\..\..\include -I..\..\..\include\Qt3D -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtOpenGL -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtWidgets -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtGui -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtCore -I.moc\release_shared -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\include -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include -IC:\Qt\android-ndk-r9b\platforms\android-9\arch-arm\usr\include -I. -o .obj\release_shared\main.obj ..\teapot\main.cpp
C:\Qt\Qt5.1.1\5.1.1\android_armv7\bin\moc.exe -DQT_NO_PRINTDIALOG -DQT_NO_XKBCOMMON -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_3D_LIB -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\mkspecs\android-g++ -I..\teapot -I..\..\..\include -I..\..\..\include\Qt3D -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtOpenGL -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtWidgets -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtGui -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtCore -I.moc\release_shared -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\include -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include -IC:\Qt\android-ndk-r9b\platforms\android-9\arch-arm\usr\include -I. -I/usr/include -I/usr/local/include ..\teapot\teapotview.h -o .moc\release_shared\moc_teapotview.cpp
C:\Qt\android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/bin/arm-linux-androideabi-g++ -c -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack -std=gnu++0x -O2 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -fno-exceptions -Wall -Wno-psabi -W -D_REENTRANT -fPIE -DQT_NO_PRINTDIALOG -DQT_NO_XKBCOMMON -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_3D_LIB -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\mkspecs\android-g++ -I..\teapot -I..\..\..\include -I..\..\..\include\Qt3D -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtOpenGL -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtWidgets -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtGui -IC:\Qt\Qt5.1.1\5.1.1\android_armv7\include\QtCore -I.moc\release_shared -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\include -IC:\Qt\android-ndk-r9b\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include -IC:\Qt\android-ndk-r9b\platforms\android-9\arch-arm\usr\include -I. -o .obj\release_shared\moc_teapotview.obj .moc\release_shared\moc_teapotview.cpp
C:\Qt\android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/bin/arm-linux-androideabi-g++ --sysroot=C:\Qt\android-ndk-r9b/platforms/android-9/arch-arm/ -Wl,-soname,libteapot.so -Wl,-rpath-link=C:/Qt/Qt5.1.1/5.1.1/android_armv7/lib -Wl,--no-undefined -Wl,-z,noexecstack -shared -o \bin\libteapot.so .obj\release_shared\teapotview.obj .obj\release_shared\main.obj .obj\release_shared\moc_teapotview.obj -LC:\Qt\android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a -LC:\Qt\android-ndk-r9b/platforms/android-9/arch-arm//usr/lib -LC:/Qt/qt-3d/lib -lQt53D -LC:\Qt\android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a -LC:\Qt\android-ndk-r8e/platforms/android-14/arch-arm//usr/lib -lgnustl_shared -lsupc++ -llog -lz -lm -ldl -lc -lgcc -LC:\Qt\Qt5.1.1\5.1.1\android_armv7\lib -lQt5OpenGL -lQt5Widgets -lQt5Gui -lQt5Core -lGLESv2
16:19:28: The process "C:\Qt\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe" exited normally.
16:19:28: Elapsed time: 00:11.
现在我想为 android 部署那个项目(点击那个箭头按钮)。部署到 Android 并不成功。没有生成 APK 文件,只是失败了。
mingw32-make: Nothing to be done for 'first'.
16:22:02: The process "C:\Qt\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe" exited normally.
16:22:02: Starting: "C:\Qt\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe" INSTALL_ROOT="C:\Qt\qt-3d\examples\qt3d\teapot\android" install
Die Syntax fr den Dateinamen, Verzeichnisnamen oder die Datentr„gerbezeichnung ist falsch.
makefile:1908: recipe for target 'install_target' failed
mingw32-make: *** [install_target] Error 1
16:22:04: The process "C:\Qt\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project teapot (kit: Android for arm (GCC 4.8, Qt 5.1.1)-Qt 5.1.1 for Android armv7)
When executing step 'Copy application data'
16:22:04: Elapsed time: 00:05
那么问题出在哪里?非常感谢提前...
【问题讨论】:
【参考方案1】:问题出在包含 pri 的 Qt3D 示例 pro 文件中。我获取示例以在 Android 上构建和部署的方式是创建一个新的 Quick2 项目并将 qml 和其他资源简单地复制到新项目的 qml 文件夹中。然后,如果您使用资产,所有内容都会为您复制到 APK。如果您想更快地加载,请将资源文件添加到项目中并添加所有现有文件,然后在 main.cpp 中更改为使用 qrc: 前缀来获取入口点 qml 文件。祝你好运!
【讨论】:
以上是关于windows下为android部署qt3d项目的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2015 RTM Cordova 项目不会调试/部署到 Android、Windows、Windows Phone