刚刚完成将代码库更新到Swift 4.它在模拟器中运行良好。当我构建到设备时,我立即崩溃,没有错误消息:
它在模拟器中工作正常。
上面有一些主题:
iOS app crashes with no error, just (lldb)
dyld`__abort_with_payload: With no error message
从我学到的问题可能是二进制文件,但我已经挖掘了我的链接二进制文件,我相信一切都是正确的。
有关从哪里开始调试此问题或问题可能是什么的任何想法?
Update1:我有一个xcodeproj的内部框架,所以我尝试将其删除并安装为pod,但错误仍然存在。
Update3 通过启动应用程序而不是从Xcode但手机本身然后跟踪错误日志来强制崩溃的错误跟踪:
Termination Description: DYLD, Library not loaded: @rpath/PromiseKit.framework/PromiseKit | Referenced from: /var/containers/Bundle/Application/C50A937F-2A6F-4E5C-89C7-2D
Update4 删除promisekit框架后,应用程序的shell版本会在设备上编译,这导致我得出结论(就像其他有这个神秘问题的人一样)是框架链接错误。然而,尝试共同线程中的所有解决方案,如:
iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta
没有奏效。嵌入和链接或其他任何东西都没有用。
所以这是一个链接某种错误的框架,但链接和嵌入似乎无法解决问题。
答案 0 :(得分:0)
使用模拟器可以解决开发问题的一个原因是它可以访问Macintosh资源。该项目可能偶然被链接到Macintosh版本的框架或库。它存在于模拟器上,但在iPhone设备上不存在。
过去我遇到过一些问题,当iOS和Mac的目标名称相同时,Xcode会选择错误的框架版本。如果您有此类框架,请尝试临时更改一个或两个目标名称和产品名称。然后看看Xcode是否正在选择你想要的那个。
答案 1 :(得分:0)
它的长短是当我将框架嵌入到主应用程序中时,它引起了一些其他模糊的错误。当我从构建阶段删除了一个脚本时,它允许嵌入实际工作并解决了问题。
我能够嵌入框架,应用程序开始在设备上编译。
因此,如果您将来遇到此类错误,解决方案仍然是嵌入它,但在我的情况下,还有另一个问题阻止嵌入工作。
答案 2 :(得分:0)
解决了另一个问题:https://stackoverflow.com/a/48538124/1012775 我修改了一些搞砸了我的构建设置的设置。因此我在这里遇到了与提问者相同的问题。
我通过做一个' git reset --hard'并回到了我干净的状态。因为我不再有这个问题,感谢上帝。 它也可能适合你。