Qt on Android studio
Qt on Android studio
使用Qt创建器,我遵守了 MyLib.so,MyLibQt.so(为Android编译)。MyLib是使用MyLibQt的包装器。在MyLibQt中,我有这样的行
if (!QApplication::instance())
{
g_bCleanUpInstance = true;
new QApplication(argc, argv);
}
在Android Studio,我将这些库添加到项目(jniLibs)中。该库已成功添加到 apk,它已被编译。问题是:当我尝试使用以前的代码行从 MyLib 调用方法时,我得到异常:
A/MyLibQt.dll: (空):0((空)):此应用程序无法启动,因为它找不到或加载Qt平台插件"android"
我添加了 jniLibs libqtforandroid.so,但它没有帮助。所以,我的问题是:如何解决它?
这么晚。问题的根本原因并不那么明显。适用于 Android 的 Qt 插件需要自定义库中的函数 main()。如果插件找不到该函数,插件将引发异常,并且插件将无法正确加载。
大约是Qt5.4-5.7。我不知道现在怎么样了,但可以表明也有同样的情况。
从错误消息中可以明显看出,Qt应用程序不仅仅是一些你可以随意运行的代码,它运行在自己的"运行时"上,即平台插件,它提供了Qt代码和设备之间的链接。
当您使用 Qt 工具链时,平台插件将与 Qt 应用程序捆绑在一起,对于 android Qt 应用程序,Qt 代码无论如何都会编译为.so
库。但是您将其显式编译为库,因此不包括平台插件,因为假设您将在包含它的Qt应用程序中使用该库。
可以手动完成,但我不是该主题的专家,可能还有其他复杂性,例如不在为支持 Qt 应用程序而定制的活动上运行,或者 Qt 所需的其他一些辅助文件,这些文件通常由 Qt 工具链创建和捆绑,但做相反的事情是一个安全的选择——只需使用 Qt 工具链构建您的 Qt 应用程序, 并使用其中必要的 Java 代码。
- Android Studio 中带有静态库的原生C++代码
- 如何在 Android Studio 4 中编译 C/C++ 原生代码
- Android Studio:如何在build.gradle中定义自定义宏(针对不同的构建变体),并让原生C / C++
- 更新后的Android Studio现在需要Clang,不再链接到GCC的库
- 如果我的手机是 ARMv8,为什么 Android Studio 会C++编译为 ARMv7?
- Android NDK - 无法在 Visual Studio 2017 中调试
- 将图像从 Android Studio 发送到 CPP
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- C++17 标准库包括不适用于 Visual Studio 2017 中的 Android 项目
- 如何在Android Studio中将C++文件正确链接到现有的Android项目?
- 在 Android Studio 中添加 C/C++ 的包含路径
- Android Studio-在现有的旧项目中启用本机C++调试(card.io Android Source)
- 为什么只有一个库的链接器错误'multiple definitions'?在 Android Studio 中使用 CMake (3.4.1)
- 如何调试visual studio 2017生成的C++代码.android中的SO文件和其他第三方库
- Android Studio 3.5.1 和 NDK 20.0 找不到 cstdint
- 将Visual Studio 2017配置为使用现有的Android SDK和NDK组件
- 如何使用Java Native Interface在C++中导入python库-Android Studio
- Android Studio External Native Build 预编译标头
- Android Studio TextView Init C++