如何在Android设备上解析Qt应用程序的ClassNotFoundEception?
How can I resolve a ClassNotFoundEception of Qt app on an Android device?
我正在使用 Qt for Android 和 JNI 来访问 Android API。如果我使用虚拟 Android 设备在模拟器中运行该应用程序,但不在物理 Android 设备上运行该应用程序,则这工作正常。这是令人困惑的。
我使用基于Qt 5.14.0(Clang 10.0(Apple(,64位(的Qt Creator 4.11.0进行开发。下面是异常的堆栈跟踪:
W System.err: java.lang.ClassNotFoundException: Didn't find class "com.myapp.launcher.worker.AppWorker" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib]]
W System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
W System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
W System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
W System.err: at org.qtproject.qt5.android.QtNative.startQtApplication(Native Method)
W System.err: at org.qtproject.qt5.android.QtNative$7.run(QtNative.java:387)
W System.err: at org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61)
W System.err: at java.lang.Thread.run(Thread.java:764)
有人知道吗?我认为这不是源代码中的错误,而是其他地方的错误,也许在套件设置中。我已经为我的项目使用了Qt模板。
这是我的解决方案:
我从Qt Creator的模板创建了一个新应用程序,并将其与Qt Android的示例项目进行了比较:
我的结论是,我必须修改 .pro 文件。首先,我必须添加以下行:
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources
然后我不得不替换DISTFILES
,如果我创建一个Java类,这是由Qt Creator自动添加的:
OTHER_FILES +=
main.qml
android-sources/src/com/hello/android/Backend.java
android-sources/AndroidManifest.xml
最后,我不得不在文本编辑器模式下编辑我从exmaple项目中复制的AndroidManifest.xml
:
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="com.hello.android.Backend" android:label="Hello Android" android:screenOrientation="unspecified">
在我最初问题的项目中,最后一步是不必要的。
相关文章:
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 使用 Bazel 编译 QT 应用程序时访问资源
- 将 Crashpad 与 Windows Qt 应用程序集成
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- 在 Ubuntu 服务器上运行 QT 应用程序时崩溃
- 如何在Android设备上解析Qt应用程序的ClassNotFoundEception?
- Qt应用程序找不到第三方DLL并崩溃
- 在 Linux 上部署 Qt 应用程序
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- Android因为权限问题而杀死Qt应用程序
- 初始化和终止Qt应用程序的正确方法?
- Qt 5 应用程序崩溃并出现"qLineEdit::setText"
- 从 ParaView 构建自定义 Qt 应用程序示例时出错
- Qt 应用程序具有意外的 QDir::currentPath
- Qt应用程序不响应鼠标和键盘事件
- 在Qt应用程序中包含Python.h会导致对Qt函数的未定义引用
- 需要有关在qt c ++应用程序中使用崩溃问题的建议
- 从Qt应用程序执行MSI文件
- Qt 应用程序中与Qt版本相关的运行时错误
- 将Qt应用程序与CMake和Visual Studio链接起来