代码之家  ›  专栏  ›  技术社区  ›  Aggressor

iOS应用程序仅在LLDB()启动时崩溃(该应用程序在模拟器中工作)

  •  1
  • Aggressor  · 技术社区  · 7 年前

    刚刚将代码库更新到Swift 4。它在模拟器中运行良好。当我构建到设备时,我会立即崩溃,没有错误消息:

    enter image description here enter image description here enter image description here

    它在模拟器中运行良好。

    上面有一些线程:

    App crashes only with (lldb)?

    iOS app crashes with no error, just (lldb)

    dyld`__abort_with_payload: With no error message

    据我所知,问题可能是链接的二进制文件,但我深入研究了我的链接二进制文件,我相信一切都链接正确。

    更新1: 我的一个xcodeproj有一个内部框架,所以我尝试将其删除并作为pod安装,但错误仍然存在。

    更新2 添加完整堆栈跟踪: enter image description here

    更新3 Termination Description: DYLD, Library not loaded: @rpath/PromiseKit.framework/PromiseKit | Referenced from: /var/containers/Bundle/Application/C50A937F-2A6F-4E5C-89C7-2D

    更新4 删除promisekit框架后,应用程序的shell版本确实在设备上编译,这让我得出结论(就像其他有这个神秘问题的人一样)是一个框架链接错误。然而,在公共线程中尝试所有解决方案,如:

    iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta

    没有工作。嵌入和链接或任何其他方式都不起作用。

    3 回复  |  直到 7 年前
        1
  •  0
  •   Walt Sellers    7 年前

    使用模拟器可能会阻碍开发的一个因素是它对Macintosh资源的访问。该项目可能意外链接到Macintosh版本的框架或库。它存在于模拟器上,但不存在于iPhone设备上。

    我曾经遇到过这样的问题:当iOS和Mac的目标名称相同时,Xcode选择了错误的框架版本。如果您有这样的框架,请尝试暂时更改一个或两个目标名称和产品名称。然后查看Xcode是否正在选择您想要的。

        2
  •  0
  •   Aggressor    7 年前

    长短不一的是,当我将框架嵌入主应用程序时,它引发了其他一些模糊的bug。当我从构建阶段删除runscript时,它允许嵌入实际工作,并解决了这个问题。

    因此,通过删除以下构建阶段中的运行脚本阶段: enter image description here

    因此,如果将来出现这种错误,解决方案仍然是嵌入它,但在我的例子中,还有另一个问题阻止了嵌入工作。

        3
  •  0
  •   AndaluZ    7 年前

    在我解决了另一个问题之后: https://stackoverflow.com/a/48538124/1012775 我修改了一些设置,把我的构建设置搞砸了。因此,我遇到了与提问者相同的问题。

    我通过“git重置-硬”解决了这个问题,然后回到了我的干净状态。感谢上帝,我已经没有这个问题了。 这可能对你也有用。