安卓工作室上的 Qt
Posted
技术标签:
【中文标题】安卓工作室上的 Qt【英文标题】:Qt on Android studio 【发布时间】:2016-04-22 10:44:06 【问题描述】:使用 Qt creator,我编译了 MyLib.so、MyLibQt.so(为 android 编译)。 MyLib 是使用 MyLibQt 的包装器。在 MyLibQt 我有这样的行
if (!QApplication::instance())
g_bCleanUpInstance = true;
new QApplication(argc, argv);
在 Android Studio,我将这些库添加到项目 (jniLibs)。该lib已成功添加到apk,已编译。 问题是:当我尝试从 MyLib 调用方法时,使用前面的代码行,我得到异常:
A/MyLibQt.dll: (null):0 ((null)): 此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“android”
我添加到 jniLibs libqtforandroid.so,但没有帮助。所以,我的问题是:如何解决?
【问题讨论】:
如果你正在写一个Qt应用程序,android studio是不必要的。 【参考方案1】:从错误消息中可以明显看出,Qt 应用程序不仅仅是一些你可以随意运行的代码,它运行在它自己的“运行时”上,即平台插件,它提供Qt代码和设备之间的链接。
当您使用 Qt 工具链时,平台插件将与 Qt 应用程序捆绑在一起,对于 android Qt 应用程序,Qt 代码无论如何都会编译为.so
库。但是您将其显式编译为库,因此不包含平台插件,因为假设您将在包含它的 Qt 应用程序中使用该库。
可能可以手动执行,但我不是该主题的专家,可能存在其他复杂情况,例如未在为支持 Qt 应用程序而定制的活动上运行,或 Qt 所需的其他一些辅助文件它通常由 Qt 工具链创建和捆绑,但做相反的事情是安全的选择 - 只需使用 Qt 工具链构建您的 Qt 应用程序,并使用其中的必要 Java 代码。
【讨论】:
【参考方案2】:抱歉这么晚才回复。 问题的根本原因并不那么明显。 适用于 Android 的 Qt 插件需要自定义库中的 main() 函数。如果插件没有找到该函数,则插件抛出异常,插件将无法正确加载。
大约是 Qt5.4-5.7。我不知道现在情况如何,但可以建议存在相同的情况。
【讨论】:
以上是关于安卓工作室上的 Qt的主要内容,如果未能解决你的问题,请参考以下文章