.pro 文件中的未知模块 - 无法构建包含 androidextras 模块的应用程序

Unknown module in .pro file - cannot build app with androidextras module included

我正在开发一些 Qt/QML 应用程序,它将部署到 Android OS。现在,我需要模块 androidextras,但是如果我将 androidextras 放入我的 .pro 文件中,如下所示

QT += qml quick widgets sql core bluetooth printsupport androidextras

然后我重新运行 qmake,我得到以下错误:

Project ERROR: Unknown module(s) in QT: androidextras

我还尝试打开并 运行 示例项目 Qt Notifier 但出现了同样的错误,因此我无法构建我的应用程序或示例,它们本应开箱即用。

我正在使用 KUbuntu 15.04gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13) 编译器和 Desktop Qt 5.5.0 GCC 64bit Qt 版本。如何构建此 androidextras 模块? 我已经安装了 Android arm v7 工具包,您可以从维护工具屏幕截图中看到:

我用 clear && ./configure -opensource -confirm-license -verbose -cups -plugin-sql-mysql -android-sdk /opt/android-sdk-linux -android-ndk /opt/android-ndk-r10d && make && make install 重新编译了整个 Qt,设置 QtCreator 中的 Qt 版本和 Qt Kit,更改了构建工具包,仍然弹出相同的错误。为什么?

Extras 模块旨在为特定平台提供特定 的附加功能,因此 在该平台上可用。它可能是对 iOS 应用程序上徽章编号的支持,对 Windows 跳转列表的支持或一些实用函数,用于将类型转换为相应的平台原生类型(例如 QPixmapCGImageRef,再次出现在 Mac 额外内容中)。

存在四个附加模块 - Win, Mac/iOS, X11, Android - 只要你针对 specific 选择的平台针对 specific[=38= 进行编译】 套件,一切都很好。对于桌面环境,它也是自动的:您的主机始终是您的目标机器。

移动工具包用于从某个(桌面)主机交叉编译到另一个(移动)目标机器。在此设置中,您可以轻松地(并且错误地)使用错误的工具包编译特定于平台的代码。

一般来说,您应该将特定于平台的 modules/code 放在 条件 中,以确保它仅针对它们可用的特定套件进行编译。对于必须为桌面和移动平台或跨不同桌面平台编译的软件尤其如此。 .pro 文件中的条件可能如下所示:

android: QT += androidextras
mac: QT += macextras
// ...other platform specific and platform independent  settings

有关 android .pro 示例文件,请参阅 ,其中还包括清单特定设置。

代码中应遵循相同的方法,即检查 OS 并有条件地编译平台代码。例如,一个函数的多平台实现可能如下所示:

if defined(Q_OS_ANDROID)
#include <QtAndroid>
#include <QAndroidJniObject>
#endif

// other code...

void YourClass::function()
{
#if defined(Q_OS_ANDROID)
// platform code
#elif defined(Q_OS_WIN)

#endif
}        

例如 for a complete Android example or 一些有用的 iOS 特定关键字。