gpt4 book ai didi

java - 找不到 libQt5AndroidExtras.so

转载 作者:行者123 更新时间:2023-11-28 05:39:33 24 4
gpt4 key购买 nike

我正在用 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.protest.pro< 包含/em>。在那种情况下,显然声明

QT += androidextras

必须写入所有适用的 .pro 文件中。否则,qmake 不会考虑它,并且在编译期间不会包含这些库。

感谢大家的参与。

关于java - 找不到 libQt5AndroidExtras.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com