作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 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< 包含/em>。在那种情况下,显然声明
QT += androidextras
必须写入所有适用的 .pro 文件中。否则,qmake 不会考虑它,并且在编译期间不会包含这些库。
感谢大家的参与。
关于java - 找不到 libQt5AndroidExtras.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457894/
我正在开发一些将部署到 Android 操作系统的 Qt/QML 应用程序。现在,我需要模块 androidextras 但如果我输入 androidextras在我的里面.pro文件如下 QT +=
我是一名优秀的程序员,十分优秀!