dyld`__abort_with_payload:没有错误消息


85

当我使用XCode启动我的应用程序时,出现崩溃但没有错误

应用程序只是在此线程上停止

在此处输入图片说明

我应该怎么做才能获得有关该问题的更多信息?

Answers:


107

如果使用自定义框架,则需要将其放在Xcode项目“目标/常规”标签下的“嵌入式二进制文件”部分中。


1
我确实有一个自定义框架,它在Xcode项目的Target> General下的“ Embedded Binaries”下列出。当我尝试运行单元测试时,我仍然遇到此问题。我最近将代码的Swift部分升级到了Swift 3(从2)。如果有帮助……
马里奥·古兹曼

@MarioAGuzman您如何解决的?在Swift 3迁移之后,我也遇到了问题
iOS

@iOS不幸的是我没有真正的修复。该问题通过刚刚发布的Xcode 8.3得以解决。
马里奥·古斯曼

为什么需要在“嵌入式​​二进制文件”部分中?我正在尝试使用ObjectiveDropboxOfficial.framework。我收到此错误,将其放入Embedded并“修复”了它。但是,我再次将其取出,并保持“固定”状态。其他配置了相同AFAICT的目标却失败了。Dropbox安装文档没有说要放入Embedded Frameworks。
Jim Leask '17

有帮助。还要确保在“链接的框架和库”中没有重复项。将其添加到“嵌入式”部分时,它会自动将其添加到“链接”部分。
milesmeow

59

对我来说,一个简单的Clean,并Rebuild整理出来。希望能帮助到你。


81
清理,清理生成文件夹,删除“派生数据”文件夹的内容,Pod安装(如果适用),重新启动Xcode,重新启动计算机;然后在门上好好涂抹一些羔羊的血
johnnyclem '17

1
也帮了我!
Dmitriy Greh '18

删除目录并从git中获取最后一次提交没有帮助,但是清理并重新构建有助于大声笑
えるまる

8
就我而言,我不得不将辣椒和柠檬绑在门框上。
Naresh

1
我也不得不牺牲我的第一个儿子,但它奏效了!
安道尔内梅特

25

在此处输入图片说明系统更新到macOS 10.15.2 beta版后出现此问题。禁用“ Thread Sanitizer”可以解决此问题(Xcode 11.2)。现在,我无法使用Thread Sanitizer,而不得不等待下一次操作系统更新。


6
当升级到Mac 10.15.2后,Xcode 11.3模拟器中出现问题时,本文将回答原始问题。看来是Apple的错误,请参阅forums.developer.apple.com/thread/126891
Vadim Motorine

19

将框架添加到嵌入式二进制资产列表可以解决此问题。这是最终框架在Xcode GUI中作为嵌入式框架(Xcode 9.2,我个人更喜欢可视化面包屑痕迹;-))的外部框架的设置: 在此处输入图片说明

Apple是否故意使运行时崩溃,以某种方式告诉开发人员您不能在iOS开发中将非Apple框架用作简单链接框架的问题?最好将其显示为我认为会发生的构建错误……并带有一个“移动它”按钮。

嵌入式二进制文件的使用使最终用户不必添加独立于您的应用程序的框架(或由安装程序完成)。对于iPhone(iOS),这是不可能的,但是在macOS上,这是可能的,但是很快就会变得混乱。

对于最终用户而言,只需拖放一个应用程序以将其安装在macOS上会更好,这是嵌入式成为优势的地方。嵌入还避免了要管理框架的外部版本的经典“ DLL冲突”。(磁盘空间便宜,我客户的时间很宝贵)。


小更新。现在,Xcode 10.1允许您将自定义框架从默认情况下的“使用库链接二进制文件”部分拖到需要复制的“复制捆绑资源”部分。它不再只是复制引用但也要移动它。屏幕在这里拍摄:stackoverflow.com/questions/24993752/...
威廉Cerniuk

13

我刚刚修复了项目中的错误!
如果在Object-C项目中使用swift框架,建议您更改构建设置。
始终将Swift标准库选项嵌入到YES。像这样:在此处输入图片说明

希望这对您有用。


即使我的项目中(显然)没有任何快速代码,这也对我有用。
Jim75

XCode将值更改回No,而我已经忘记了。谢谢:)
SeikoTheWiz


10

Xcode 11.1,关闭Do not EmbedEmbed & Sign是一个不错的选择。

0

222

谢谢@mkonovalov,@William Cerniuk


1
为我工作。+1
Abhimuralidharan

1
这是强制性的步骤,您尝试将自定义框架嵌入到您的App中。
Akash Bhardwaj

6

1)继续执行,以查看调试器中是否显示任何消息,例如“ MyFramework.framework”。如果是这种情况,请按照以下讨论进行操作:未加载OS X Framework库:“未找到映像” 对我来说,此答案有效:https : //stackoverflow.com/a/44796734/4060763

2)确保您已通过“嵌入的二进制文件”部分添加了二进制文件。

3)确保在“构建阶段”部分中启用了框架签名。

4)确保嵌入式框架不是符号链接。

5)您可以将链接的框架设为可选,而不是在“使用库链接二进制”阶段中将其设为必需。这将告诉iOS在启动期间不要寻找这些框架。但是无论如何,您都需要修复错误才能使用这些框架!

6)检查所有info.plist条目是否正确。就我而言,我使用的是iOS的Mac info.plist文件。它正在寻找iOS项目中不存在的一些xib文件。

7)进行任何此类更改后,请进行清洁和构建。这是必需的,因为xcode不会复制/更改这些文件(如果已存在)。

8)从iPad上删除该应用程序,然后安装。与7相同的原因。


6

在诊断中取消选中“ Guard Malloc”对我有用。 请参阅图片进行设置


2
Guard Malloc,是正确的。有人知道为什么它可以解决崩溃问题吗?
Mojo66 '18 -4-1

1
您也可以尝试清理项目,然后再次运行,或者只是重新启动Xcode。这些错误很烦人,有点像Xcode中的错误
Karanveer Singh

5

为了回答最初的问题“我该怎么做才能获得有关该问题的更多信息?”,此Apple论坛线程提供了一个非常简单的提示:只需在XCode外部运行崩溃的应用程序即可(即,从XCode停止它,然后在您的XCode上手动运行它)设备)。这将产生一个崩溃日志,其中包含有关所发生事件的更多详细信息。然后,您可以从XCode窗口菜单/设备和模拟器->查看设备日志中查看此日志。


4

我只是错过了在info.plist中应用“隐私-相机使用说明”。

不知道此信息是否对其他人有帮助...



3

我遇到了一个具有相同签名的错误(我的项目在Obj-C中),发现我忘记了与适当框架的链接。导致发现错误的调试日志中的错误消息是:

dyld:找不到符号:_OBJC_CLASS _ $ _ SFSafariViewController

对于我的特定错误,在目标->构建阶段->“使用库链接二进制文件”中添加SafariServices.framework解决了该问题。尽管您可能没有相同的特定错误和解决方案,但检查调试日志以获取线索非常有用。


2

在将Xcode更新到v10.2.1迅速更新到v5.0之后,如果使用的是迦太基+ RxSwift,那么新的RxSwift就会遇到这种情况RxRelay.framework。您应该转到/ Carthage / Build目录,找到该框架并将其拖入项目。别忘了也将它添加到您的carthage copy-frameworks脚本中: $(SRCROOT)/Carthage/Build/iOS/RxRelay.framework

解决由于:https : //stackoverflow.com/a/52550148/2493555


1

如果您在Objective-C应用程序中使用Swift编写的框架,则需要在使用该框架的应用程序中包含Swift工具链。

我发现这样做的方法是在应用程序中创建一个虚拟swift文件,以便XCode识别swift并将其适当地添加到项目中。然后,您可以删除虚拟文件。

如果有人知道一种更好的方法,可以在不添加swift文件的情况下将swift显式添加到Objective-C项目,那么我很乐意。


1

如果使用Carthage构建框架,则将该框架拖到项目中后,应将其添加到General / Embeded Binaries。


1

我找到解决问题的正确方法。

确保将AppleWWDRCA.cer其设置为系统默认模式,然后它将起作用:

在此处输入图片说明


也为我工作。
dev_shanghai

1

我面临着同样的问题。在目标的“构建设置”中将“始终嵌入Swift标准库”设置为“是”对我有用。


1

我遇到了类似的问题,该问题通过缺少plist中的权限规范来解决(尽管很奇怪。)

我尝试使用AVCaptureDevice,但刚开始时崩溃了(我的应用程序很小)

加入- Privacy - Camera Usage Descriptioninfo.plist解决对我来说。


1

要添加到遇到此错误的一长串列表中,当我在XCode12.2 Beta 2上部署到运行MacOS 10.15.5的Mac且部署目标设置为MacOS 11.0时,就会发生此错误。发生这种情况是因为我在添加SideBar时尝试了Mac Catalyst教程应用程序。将目标切换到MacOS 10.15.5可消除该错误并正确启动了该应用程序。


0

我已经解决了我的项目中的错误。
1.发生错误时检查其他线程。我发现我的错误与相机有关。

在此处输入图片说明

  1. 在Info.plist文件中添加Camera隐私。
    1)打开info.plist文件。
    2)添加一个名为“隐私-相机使用说明”的新密钥,并输入描述应用程序为何需要相机的字符串。该说明将在您的应用程序需要使用隐私时显示。

在此处输入图片说明


0

我刚刚遇到了同样的问题,其原因是由于在全新的macOS Mojave更新之后,我已经撤销了我的开发人员证书并使用Xcode 10创建了新的证书(对于某些证书,它删除了所有登录证书,并且已经过时了。钥匙串证书)。

因此,我要做的就是从设备中删除已安装的应用程序,然后再次通过Xcode运行它们,以使其在设备中安装正确的新Provisioning Profile :)


0

有时,当您使用只能从目标版本的更高iOS版本访问的系统框架时,会发生这种情况。可以通过将此链接的框架标记为可选来解决此问题。

例如,针对iOS 11且正在使用AuthenticationServices for iOS 12自动填充功能的项目将在iOS 11所述的方式下崩溃。


0

实际上,我遇到了11.3.1的问题,并且如上所述已经关闭了Thread Sanitizer。就我而言,我曾经在我的Application文件夹中使用过不同的xCode版本,

/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app

/Applications/Xcode.app - was 11.2

我花了2天的时间才能了解构建系统默认情况下会在/Applications/Xcode.app上显示。因此,将11.3.1引入/Applications/Xcode.app最终可以解决问题


0

另外,如果使用自定义框架,请确保将Mach-O类型设置为静态库。我读到某处IOS不允许dylib。无论如何,这对我有用。


0

我也遇到了同样的问题。我使用的是iOS 14 Beta,当我将其更新为正式版本时,问题已得到解决。


-1

我只有在真实设备(iPhone SE)上运行时才遇到该问题。在模拟器上的项目按预期工作。

我确实从这个线程以及从这里尝试了所有修复程序:未加载OS X Framework库:“未找到图像” 这些都不对我有用。

对我来说,重新启动iPhone后就解决了问题(原文如此!)。

我做了:

  • 清理构建文件夹,
  • 清理派生数据,
  • 从设备删除应用程序,
  • 重启设备

终于成功了。:)

如果其他所有解决方案均失败,请不要忘记尝试一下。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.