【问题标题】:Qt android ndk - app crashesQt android ndk - 应用程序崩溃
【发布时间】:2014-11-28 11:56:37
【问题描述】:

我最近一直在尝试在Qt 中制作一些非常简单的应用程序,昨天它曾经在桌面和 Android 上都能正常工作(使用 android ndk ,我知道用c++做android应用不好,但我就是想试试)。

今天,不知从何而来,应用程序的输出是这样的:

我发现的唯一一件事就是清理应用程序的缓存和数据,重新启动手机,重建,n其中一个工作正常

【问题讨论】:

  • 将所有相关信息放在您的问题中,而不是链接到它。
  • 文字截图对于我们这些在移动设备上阅读的人来说太糟糕了:(
  • 你的目标SDK版本是什么,你的手机运行的是什么版本?

标签: android qt android-ndk qt-designer qtwidgets


【解决方案1】:

Qt 应用程序在资源的某处有一组使用过的 .so 库名称。 在启动时,它会加载所有这些 .so 库(通过 loadLibrary())。 加载库的顺序很重要:函数不能 在尚未加载的库中定义的引用函数。所以实现循环依赖是很棘手的。

从日志中我看到 libszachy_android_1.so 中的某个函数(名称对吗?有点奇怪)调用尚未加载的 srand();也许,稍后在加载列表中会提到,但 loadLibrary() 不知道计划的未来。 因此,你得到了这个。

如果您的代码昨天有效,那么您可能已经进行了一些更改。如果您使用版本控制,您可能可以比较今天和昨天的版本并查看差异。也许,您已经插入了一个前向引用(在加载列表的意义上)。 OTOH,有时 Eclipse 和 make 都无法检测到源代码已更改并进行了不正确的构建(我确实观察到了这一点,但无法重现)。您是否尝试从手机中卸载该应用程序?您是否尝试删除构建目录中的所有现有 .so 文件 (rm *.so)?

也许,您的某个 .so 模块已损坏:有时尽管有错误仍会生成一个对象,并且它可能会在后续构建中使用(至少这是我可以解释构建故障的方式)。

也许,您的设备上没有剩余内存,无法正确解压 .so。

我建议在有根设备上检查带有adb shell 的应用程序目录。

PS 您发布了一个几乎无法阅读的屏幕截图。请将其替换为adb logcat输出的相关部分(希望你知道如何使用,如果没有,首先要学习adb logcatadb shell)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多