Ker*_*nic 5 installation qt qtandroidextras
我正在开发一些将部署到 Android 操作系统的 Qt/QML 应用程序。现在,我需要模块,androidextras
但如果我按如下方式放入androidextras
我的.pro
文件中
QT += qml quick widgets sql core bluetooth printsupport androidextras
Run Code Online (Sandbox Code Playgroud)
然后我重新运行qmake
,出现以下错误:
项目错误:QT 中的未知模块:androidextras
我还尝试打开并运行示例项目Qt Notifier,但发生了同样的错误,因此我无法构建我的应用程序或示例,这应该是开箱即用的。
我使用KUbuntu 15.04
与gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
编译器和Desktop Qt 5.5.0 GCC 64bit
Qt的版本。我如何构建这个androidextras
模块?Android arm v7
正如您从维护工具屏幕截图中看到的那样,我已经安装了套件:
我用 重新编译了整个 Qt 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
,在 QtCreator 中设置了 Qt 版本和 Qt 套件,更改了构建套件,但仍然弹出相同的错误。为什么?
Extras 模块旨在提供特定于某个平台的附加功能,因此仅在该平台上可用。它可能是iOS应用上的徽章数量的支持,到Windows跳转列表或者一些实用功能的支持,从一个类型转换为相应的本机平台类型(例如QPixmap
到CGImageRef
,又在苹果演员)。
存在四个额外模块 - Win、Mac/iOS、X11、Android - 只要您针对特定工具包针对特定选择的平台进行编译,一切都很好。对于桌面环境,它也是自动的:您的主机始终是您的目标机器。
移动工具包用于从某个(桌面)主机到另一个(移动)目标机器进行交叉编译。在此设置中,您可以轻松(并且错误地)使用错误的工具包编译特定于平台的代码。
一般来说,您应该将特定于平台的模块/代码放在条件语句中,以确保仅针对它们可用的特定工具包进行编译。对于必须为桌面和移动平台或跨不同桌面平台编译的软件尤其如此。.pro
文件中的条件可能如下所示:
android: QT += androidextras
mac: QT += macextras
// ...other platform specific and platform independent settings
Run Code Online (Sandbox Code Playgroud)
请参阅此答案以获取 android.pro
示例文件,其中还包含清单特定设置。
在代码中也应遵循相同的方法,即检查操作系统并有条件地编译平台代码。例如,一个函数的多平台实现可能如下所示:
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
}
Run Code Online (Sandbox Code Playgroud)
例如,请参阅此答案以获取完整的 Android 示例或此其他答案以获取一些有用的 iOS 特定关键字。
归档时间: |
|
查看次数: |
3093 次 |
最近记录: |