Qt 6.7.1 Android应用启动失败:java.lang.RuntimeException异常求助
Qt 6.7.1 Android应用启动崩溃排查
问题描述
将Qt从6.6版本升级至6.7.1后,所有为Android构建的应用均无法正常运行。即使是Qt内置的sensorsshowcase示例,编译正常但启动后立即卡死,偶尔会在QtCreator输出面板抛出以下错误:
I libc : SetHeapTaggingLevel: tag level set to 0 I sensorsshowcase: Late-enabling -Xcheck:jni I sensorsshowcase: Using CollectorTypeCMC GC. D CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10270; state: ENABLED D CompatibilityChangeReporter: Compat change id reported: 242716250; UID 10270; state: DISABLED W ziparchive: Unable to open '/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.dm': No such file or directory W ziparchive: Unable to open '/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.dm': No such file or directory D nativeloader: Configuring clns-4 for other apk /data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.apk. target_sdk_version=31, uses_libraries=, library_path=/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/lib/arm64:/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/org.qtproject.example.sensorsshowcase V GraphicsEnvironment: Currently set values for: V GraphicsEnvironment: angle_gl_driver_selection_pkgs=[] V GraphicsEnvironment: angle_gl_driver_selection_values=[] V GraphicsEnvironment: Global.Settings values are invalid: number of packages: 0, number of values: 0 V GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported. D AndroidRuntime: Shutting down VM E AndroidRuntime: FATAL EXCEPTION: main E AndroidRuntime: Process: org.qtproject.example.sensorsshowcase, PID: 10826 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate application org.qtproject.qt.android.bindings.QtApplication package org.qtproject.example.sensorsshowcase: java.lang.ClassNotFoundException: Didn't find class "org.qtproject.qt.android.bindings.QtApplication" on path: DexPathList[[zip file "/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.apk"],nativeLibraryDirectories=[/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/lib/arm64, /data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1474) E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1399) E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7268) E AndroidRuntime: at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2337) E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107) E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:232) E AndroidRuntime: at android.os.Looper.loop(Looper.java:317) E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8501) E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878) E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "org.qtproject.qt.android.bindings.QtApplication" on path: DexPathList[[zip file "/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.apk"],nativeLibraryDirectories=[/data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/lib/arm64, /data/app/~~B-syU75y9wcmnJ0UIiDrcg==/org.qtproject.example.sensorsshowcase-QOuwM3qfB_eTUShCSyjgjw==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:379) E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312) E AndroidRuntime: at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) E AndroidRuntime: at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52) E AndroidRuntime: at android.app.Instrumentation.newApplication(Instrumentation.java:1345) E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1467) E AndroidRuntime: ... 11 more 10:24:13: "org.qtproject.example.sensorsshowcase" died.
已尝试操作
- 按照QTBUG-119059调整CMake设置
- 按Qt文档配置Android 34相关SDK与NDK:
- 执行命令:
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" - 执行命令:
sdkmanager "ndk;26.1.10909125"
- 执行命令:
- 测试设备为Pixel 6a,构建目标为arm64-v8a(Windows环境)
可能的错误原因
- Qt Android组件未同步更新:升级Qt后,Android相关的Qt库(如
QtAndroidBindings)可能未正确安装或更新,导致APK中缺失org.qtproject.qt.android.bindings.QtApplication类对应的Dex文件。需检查Qt Installer中Android组件的安装状态,重新安装Qt 6.7.1的Android模块。 - Qt Creator配置未同步:升级Qt版本后,Qt Creator可能仍沿用旧版本的Android配置。进入
工具>选项>设备>Android,确认SDK、NDK路径正确,且Qt版本选择为6.7.1。 - 构建缓存残留:旧版本Qt的构建缓存可能干扰新构建。删除项目的
build文件夹,以及Qt Creator的缓存目录(Windows下为%APPDATA%\QtProject\qtcreator),然后重新编译。 - Gradle配置冲突:Qt 6.7可能调整了Gradle默认配置,旧项目的
build.gradle或gradle.properties未同步更新。示例项目可删除.gradle文件夹后重构;自定义项目需对比Qt 6.7新创建项目的Gradle配置,修改现有项目的对应文件。 - NDK版本隐性兼容问题:尽管安装了文档指定的NDK版本,仍可能存在Qt 6.7.1与该NDK的隐性兼容问题。尝试切换至Qt 6.7文档推荐的其他NDK版本(如NDK 25c),或确认NDK环境变量配置正确。
- Dex合并失败:编译过程中可能出现Dex合并错误但未在Qt Creator输出中显示。手动查看构建目录下的Gradle日志(路径通常为
build\android-build\app\build\outputs\logs),排查是否存在Dex相关错误。
内容的提问来源于stack exchange,提问作者lmpall4
相关产品推荐
相关产品推荐

