在 Android 应用程序上部署 Qt 时出错

Posted

技术标签:

【中文标题】在 Android 应用程序上部署 Qt 时出错【英文标题】:Error deploying Qt on Android application 【发布时间】:2014-04-08 18:46:07 【问题描述】:

我正在尝试运行我的第一个 Qt android 应用程序,并按照本教程进行操作:

http://urfoex.blogspot.ro/2013/12/qt5-android-setting-up-qt-52-for-android.html

但是,在我运行它之后,我得到了这个错误:

i686-linux-android-g++: error: unrecognized command line option '-marm' make: *** 
[main.o] Error 1 21:33:42: The process "make" exited with code 2.
Error while building/deploying project avd_tests (kit: Android for x86 (GCC 4.8, Qt 5.2.1)) When executing step 'Make'

我也尝试过使用armeabi,但我得到了:

In file included from ../.android-ndk/sources/cxx-stl/gnu-libstdc++/4.8/include/algorithm:60:0,
                 from ../.Qt5.2.1/5.2.1/android_armv7/include/QtCore/qglobal.h:82,
                 from ../.Qt5.2.1/5.2.1/android_armv7/include/QtCore/qcoreapplication.h:45,
                 from ../.Qt5.2.1/5.2.1/android_armv7/include/QtWidgets/qapplication.h:45,
                 from ../.Qt5.2.1/5.2.1/android_armv7/include/QtWidgets/QApplication:1,
                 from ../avd_tests/qtquick2controlsapplicationviewer/qtquick2controlsapplicationviewer.h:13,
                 from ../avd_tests/main.cpp:1: ../.android-ndk/sources/cxx-stl/gnu-libstdc++/4.8/include/utility:68:28: fatal error: bits/c++config.h: No such file or directory  #include <bits/c++config.h>
                            ^ compilation terminated. make: *** [main.o] Error 1 21:44:14: The process "make" exited with code 2. Error while building/deploying project avd_tests (kit: Android for armeabi-v7a (GCC 4.8, Qt 5.2.1)) When executing step 'Make'

我正在构建的应用程序是默认的Qt Quick 应用程序。我正在使用Qt 5.2.1QtCreator 3.0.1

任何人都知道它可能是什么,或者有人知道如何让Android 上的QtGNU/Linux 上工作吗?

【问题讨论】:

【参考方案1】:

事实证明,这是Android SDK 较新版本中的一个已知错误。

正如Qt for Android 的创建者Bogdan Vatra 所指出的,解决方案是:

查找较旧的 Android SDK。 升级您的 Qt 创建器(使用 Qt SDK 5.3) 使用真实设备。

为了解决问题,我从http://download.qt-project.org/snapshots/qt/5.3/5.3.0-RC/2014-04-14_55/下载了qt-opensource-linux-x64-android-5.3.0-RC_2014-04-14_00-48-35-55.run,部署成功!

谢谢博格丹!

【讨论】:

【参考方案2】:

您应该从here 下载并安装适用于 Android(Linux 32 位或 64 位)的 Qt 5.2.1。 Qt Project 的 SDK 不随 Android SDK/NDK 一起提供,因此您必须自己从 here 下载并安装它们。您需要 Android NDK(版本 r9+)和 SDK(版本 22+)。

如果您不打算创建 Android Java 应用,请确保您只下载 SDK 而不是 ADT Bundle 或 Android Studio。

下载后解压。对于 Android SDK,您应该连接到 Internet 并下载所需的工具。您必须至少安装 Android API-13!您还必须安装 Android SDK Platform-tools 和 Android SDK Build-tools。

打开 Qt Creator。进入Tools-&gt;Option-&gt;Android设置页面,设置Android SDK和NDK位置。

你可以找到详细教程Here。

【讨论】:

非常感谢您的回答。我会在几个小时内尝试你的例子,因为我现在在工作。我使用了 Qt 5.2.1 linux 64 在线安装程序并从那里安装了 android。我手动下载了 ndk 和 sdk 并从 tools->option->android 手动设置路径,但您可以看到上面的结果。不过我会试试你的方法,我会让你知道结果。 我试过了,但是我得到了以下错误: 构建后我得到: 12:40:26: Running steps for project untitled2... 12:40:26: 配置不变,跳过 qmake 步骤. 12:40:26:开始:“make” make:“first”无事可做。 12:40:26:“make”进程正常退出。 12:40:26:删除目录 /home/user/build-untitled2-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_1-Debug/android-build 12:40:26:开始:“make” INSTALL_ROOT=/home/user/build-untitled2-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_1-Debug/ android-build 安装 cp -f -R /home/user/untitled2/qml/untitled2 /home/user/build-untitled2-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_1-Debug/android-build/assets/qml/ install -m 755 -p “libuntitled2.so” “/home/user/build-untitled2-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_1-Debug/android-build/libs/armeabi-v7a/libuntitled2.so” 12:40:26:进程“make”正常退出。构建/部署项目 untitled2 时出错(套件:Android for armeabi-v7a(GCC 4.8,Qt 5.2.1))执行步骤“部署到 Android 设备”时 12:42:40:经过时间:02:14。

以上是关于在 Android 应用程序上部署 Qt 时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 buildozer 在 android 上部署 kivy 应用程序时出错

尝试使用共享库部署 Qt 应用程序时出错

在 Android 上部署 Qt 应用程序真的很慢吗?

如何解决`E Qt JAVA:找不到Surface 1-通过意图恢复到Qt @ android应用程序时出错?

Qt for android运行时出错 Error: Target id 'android--1' is not valid

将 Worker Thread 信号与 MainWindow 插槽连接时出错(Qt5)