基于 Qt 的 android 应用程序在一台特定设备上启动时崩溃。 “dlopen 失败:libqtforandroid”
Posted
技术标签:
【中文标题】基于 Qt 的 android 应用程序在一台特定设备上启动时崩溃。 “dlopen 失败:libqtforandroid”【英文标题】:Qt based android application is crashing during startup on one specific device. "dlopen failed: libqtforandroid" 【发布时间】:2019-11-12 01:57:57 【问题描述】:我的应用程序在启动时仅在一台特定设备上崩溃:华为平板电脑 AGS2-W09。 Qt 5.12.3。
我有一个来自设备的 logcat 转储:
07-01 10:53:09.327 6135 6156 E androidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: file offset for the library "/data/data/pl.domain.appname/qt-reserved-files/plugins/platforms/android/libqtforandroid.so" >= file size: 0 >= 0
07-01 10:53:09.327 6135 6156 E AndroidRuntime: at java.lang.Runtime.load0(Runtime.java:928)
07-01 10:53:09.327 6135 6156 E AndroidRuntime: at java.lang.System.load(System.java:1624)
07-01 10:53:09.327 6135 6156 E AndroidRuntime: at org.qtproject.qt5.android.QtNative$2.run(QtNative.java:183)
07-01 10:53:09.327 6135 6156 E AndroidRuntime: at org.qtproject.qt5.android.QtThread$2.run(QtThread.java:87)
07-01 10:53:09.327 6135 6156 E AndroidRuntime: at org.qtproject.qt5.android.QtThread$1.run(QtThread.java:61)
07-01 10:53:09.327 6135 6156 E AndroidRuntime: at java.lang.Thread.run(Thread.java:784)
07-01 10:53:09.330 1184 1922 W ActivityManager: Force finishing activity pl.domain.appname/.AppActivity
接下来我该怎么做才能找到问题?
【问题讨论】:
您是否将 Qt 正确部署到设备上。设备Android版本是否与您使用的Qt版本兼容。 问题已经解决。真正的问题是 Android ABI 政策的最新变化。错误信息具有误导性。应用找不到arm64库,用v8a工具链编译解决了问题。 @Rajju,既然你已经解决了这个问题,请在答案部分自己回答这个帖子。然后,您可以将其标记为答案。 【参考方案1】:问题解决了。如果您遇到类似的问题,那是因为您试图在 64 位设备上运行 32 位应用程序。 Qt 还不支持 AAB,所以需要分别编译 32 位(armeabi v7a)和 64 位(armeabi v8a)。
【讨论】:
以上是关于基于 Qt 的 android 应用程序在一台特定设备上启动时崩溃。 “dlopen 失败:libqtforandroid”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 和 Android 的给定时间检测用户是不是仅在一台设备上处于活动状态
如何在一台完全离线的电脑上安装Android studio开发环境