libQt5AndroidExtras.so not found
libQt5AndroidExtras.so not found
我正在用Qt编写一个移动应用程序,需要进行一些特定于平台的调用,例如请求电池电量。因此,从Qt级别开始,我正在尝试调用Android SDK级别。从我在互联网上收集到的信息来看,应该可以做到以下几点。
我用要调用的代码创建了一个小的 Java 类:
// AndroidService.java
package path.to.java;
public class AndroidService {
public static int doSomething() {
System.out.println("Android says hi");
return 1;
}
}
接下来,在我的 Cpp 代码中,我使用 Qt 的 Android JNI 库调用它:
// androidservice.cpp
#include <QtAndroidExtras>
void doSomething() {
QAndroidJniObject::callStaticMethod<int>("path.to.java.AndroidService", "doSomething");
}
我在主函数中调用它。
最后,我将以下内容添加到我的 .pro 文件中:
// project.pro
android {
QT += androidextras
SOURCES += mobileservice/androidservice.cpp
OTHER_FILES += mobileservice/android/src/path/to/java/AndroidService.java
ANDROID_PACKAGE_SOURCE_DIR=$$_PRO_FILE_PWD_/mobileservice/android
}
编译后,这将构建没有错误。但是,在运行应用程序时,我遇到以下堆栈跟踪的崩溃:
E/AndroidRuntime( 7184): java.lang.UnsatisfiedLinkError: dlopen failed: library "libQt5AndroidExtras.so" not found
E/AndroidRuntime( 7184): at java.lang.Runtime.loadLibrary(Runtime.java:371)
E/AndroidRuntime( 7184): at java.lang.System.loadLibrary(System.java:988)
E/AndroidRuntime( 7184): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:252)
E/AndroidRuntime( 7184): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:655)
E/AndroidRuntime( 7184): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:895)
E/AndroidRuntime( 7184): at android.app.Activity.performCreate(Activity.java:6500)
E/AndroidRuntime( 7184): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
E/AndroidRuntime( 7184): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
E/AndroidRuntime( 7184): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218)
E/AndroidRuntime( 7184): at android.app.ActivityThread.access$1000(ActivityThread.java:198)
E/AndroidRuntime( 7184): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676)
E/AndroidRuntime( 7184): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 7184): at android.os.Looper.loop(Looper.java:145)
E/AndroidRuntime( 7184): at android.app.ActivityThread.main(ActivityThread.java:6837)
E/AndroidRuntime( 7184): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 7184): at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime( 7184): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
E/AndroidRuntime( 7184): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
尽管将androidextras库添加到我的.pro文件中,但该应用程序似乎无法找到它。我错过了什么吗?
好的,我想我找到了。我没有提到的是,我的项目由子项目组成:首先构建 project.pro,然后由 app.pro 和 test.pro 包含。在这种情况下,显然声明
QT += androidextras
必须写入所有适用的 .pro 文件中。否则,qmake 不会考虑它,并且在编译过程中不会包含库。
感谢大家的投入。
您确定运行应用程序时libQt5AndroidExtras.so
在场吗?如果您使用的是Qt Creator,您可以查看将应用程序部署到Android设备Qt文档。例如,您需要选择将本地Qt库部署到临时目录选项以在调试时部署Qt库,或者在创建APK时在APK中捆绑Qt库。
您也可以添加到您的专业文件中(androiddeployqt 应该检测依赖项):
ANDROID_DEPLOYMENT_DEPENDENCIES = <path>/libQt5AndroidExtras.so
相关文章:
- OpenCV Android C++ imwrite not found
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- C++初学者:为什么我的编译器根据我的循环返回"name not found"?
- _BitScanForward64 can not be found
- 使用提升 asio 时出现"resolve: Host not found (authoritative)"异常
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 使用自定义 nodejs 插件时的"The specified module could not be found"
- Boost.Python 和导入 dll,"The specified module could not be found"
- 为什么我在" 'X' identifier not found' "上收到错误
- WinDBG适用于从Visual Studio 2015保存的转储,但不适用于任务管理器。显示异常代码"not found"
- "Entry Point Not Found" Azure 中的错误 LightGBM R 包
- TBB_tbb_LIBRARY_DEBUG-NOT FOUND
- 在 Ubuntu 16.04 下运行协程示例会得到"'experimental/coroutine' file not found"
- 在 mongodb c++ 驱动程序中使用声明"not found"
- 如何修复"/bin/sh: bc: command not found"
- CMake,QT Quick & Visual Studio:"qrc:/main.qml:-1 File not found"
- opencv aruco.h not found windows 10 visual studio
- Qt Cmake 错误编译"GuiSupportQt not found"
- 如何在C++的程序中显示Windows的"DLL not found"错误?