答案 0 :(得分:86)
如果您使用的是自定义框架,则需要将其放在“目标/常规”选项卡下Xcode项目中的“嵌入式二进制文件”部分中。
答案 1 :(得分:50)
对我来说,一个简单的Clean
和Rebuild
将其整理出来。希望它有所帮助。
答案 2 :(得分:13)
将框架添加到嵌入式二进制资产列表中修复此问题。以下是外部框架在Xcode GUI中作为嵌入式框架的最终形式的设置(Xcode 9.2,我个人喜欢视觉面包屑路径更好;-)):
Apple是否故意使运行时崩溃以某种方式告诉开发人员您不能将非Apple框架用作iOS开发中的简单链接框架的问题?最好把它作为我认为的构建错误出现......用一个按钮说“移动它!”
嵌入式二进制文件的使用使最终用户不必独立于您的应用程序添加框架(或者您使用安装程序)。在iPhone(iOS)的情况下,这是不可能的,但在macOS上,它是可能的,但可以快速混乱。
对于最终用户来说,简单地拖放应用程序以将其安装在macOS上就更好了,这就是嵌入式成为一种好处的地方。嵌入还避免了使用框架的外部版本进行管理的经典“DLL冲突”。 (磁盘空间很便宜,我的客户的时间很宝贵。)
答案 3 :(得分:10)
对我来说有用的是制作框架"可选"而不是"必需"。
希望有所帮助!
答案 4 :(得分:9)
答案 5 :(得分:8)
此问题在系统更新到macOS 10.15.2 beta之前出现。禁用“ Thread Sanitizer”可以解决此问题(Xcode 11.2)。现在,我无法使用Thread Sanitizer,而不得不等待下一次操作系统更新。
答案 6 :(得分:4)
答案 7 :(得分:3)
1)继续执行以查看调试器中是否显示任何消息,例如“MyFramework.framework”未找到。如果是这种情况,请遵循以下讨论:OS X Framework Library not loaded: 'Image not found' 对我而言,这个答案有效: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相同的原因。
答案 8 :(得分:3)
要回答原始问题“我该怎么做才能获得有关此问题的更多信息?”,this Apple forum thread提供了一个非常简单的提示:只需在XCode外部运行崩溃的应用(即从XCode停止它,然后在您的设备上手动运行它)。这将产生一个崩溃日志,其中包含有关所发生事件的更多详细信息。然后,您可以从XCode窗口菜单/设备和模拟器->查看设备日志中查看此日志。
答案 9 :(得分:3)
我遇到了一个带有相同签名的错误(我的项目在Obj-C中)并且发现我忘记了与相应的框架链接。调试日志中导致发现错误的错误消息是:
dyld:未找到符号:_OBJC_CLASS _ $ _ SFSafariViewController
对于我的特定错误,在目标中添加SafariServices.framework - >构建阶段 - > " Link Binary with Libraries"解决了这个问题。虽然您可能没有相同的特定错误和解决方案,但检查调试日志以获取线索非常有用。
答案 10 :(得分:2)
我只是错过了在info.plist中应用“隐私-相机使用说明”。
不知道此信息是否对其他人有帮助...
答案 11 :(得分:2)
答案 12 :(得分:1)
如果你使用Carthage构建框架,在将框架拖到你的项目后,你应该将它添加到General / Embeded Binaries。
答案 13 :(得分:1)
我找到了解决问题的正确方法。
确保将AppleWWDRCA.cer
设置为系统默认模式,然后它将起作用:
答案 14 :(得分:1)
我在 IOS 14.5 上播放/实现 ATT(应用跟踪透明度)时遇到了这个问题,但尚未在 info.plist 中添加关于为什么需要用户跟踪的使用说明。
启用“允许应用程序请求跟踪”设置时应用程序崩溃(禁用时,一切正常)
Xcode 中的崩溃没有提供任何线索,除了
libsystem_kernel.dylib`__abort_with_payload: (SIGABRT)
CoreSimulator 757.5 - Device: iPhone 11 (29AD27B2-6EC0-4B9C-8C8C-C5450695A19C) - Runtime: iOS 14.5 (18E182) - DeviceType: iPhone 11
使用来自 https://stackoverflow.com/a/52550148/14414215 的答案并从实际设备获取崩溃日志产生了这个非常有用的线索。
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: TCC, This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSUserTrackingUsageDescription key with a string value explaining to the user how the app uses this data.
Triggered by Thread: 1
答案 15 :(得分:1)
我面临着同样的问题。在目标的“构建设置”中将“始终嵌入Swift标准库”设置为“是”对我有用。
答案 16 :(得分:1)
要添加到遇到此错误的详细列表,当我将XCode12.2 Beta 2部署到运行MacOS 10.15.5的Mac(部署目标设置为MacOS 11.0)时,会发生这种情况。发生这种情况是因为我在添加SideBar时尝试了Mac Catalyst Tutorial app。将目标切换到MacOS 10.15.5可消除该错误并正确启动该应用程序。
答案 17 :(得分:1)
我有一个类似的问题,可以通过缺少plist中的权限规范来解决(尽管很奇怪。)
我尝试使用AVCaptureDevice,但它刚启动时就崩溃了(我的应用程序很小)
添加-
Privacy - Camera Usage Description
info.plist
为我解决了这个问题。
答案 18 :(得分:1)
如果您在Objective-C应用程序中使用Swift编写的框架,则需要在使用该框架的应用程序中包含Swift工具链。
我发现这样做的方法是在应用程序中创建一个虚拟swift文件,以便XCode识别swift并将其适当地添加到项目中。然后,您可以删除虚拟文件。
如果有人知道在不添加swift文件的情况下明确地将swift添加到objective-c项目中,我会很高兴。
答案 19 :(得分:0)
我通过在常规 > 框架、库和嵌入内容下将“嵌入并签名”更改为“无需签名即可嵌入”来修复它。
答案 20 :(得分:0)
我发生了同样的问题。我使用的是iOS 14 Beta,当我将其更新为正式版本时,问题已解决。
答案 21 :(得分:0)
此外,如果您正在使用自定义框架,请确保将Mach-O类型设置为静态库。我读到某处IOS不允许dylib。无论如何,这对我有用。
答案 22 :(得分: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最终解决了问题
答案 23 :(得分:0)
我在使用Xcode 11.3和macOS Catalina 10.15.2时遇到了同样的问题。该应用程序在设备上运行良好,但在模拟器上却无法运行。看来模拟器有问题,解决方法是禁用Thread Sanitizer。
引用:https://forums.developer.apple.com/message/397978#397978
希望这会有所帮助。
答案 24 :(得分:0)
在将 Xcode更新为v10.2.1 ,并且将 swift更新为v5.0 之后,我遇到了这种情况。如果您使用的是迦太基+ RxSwift,则新的RxSwift使用{{1 }}。您应该转到/ Carthage / Build目录,找到该框架并将其拖入项目。别忘了也将它添加到您的RxRelay.framework
脚本中:
carthage copy-frameworks
答案 25 :(得分:0)
有时,当您使用只能从目标版本的更高iOS版本访问的系统框架时,会发生这种情况。可以通过将链接的框架标记为可选来解决此问题。
例如,针对iOS 11且正在将AuthenticationServices用于iOS 12自动填充功能的项目在iOS 11描述的方式下将崩溃。
答案 26 :(得分:0)
我刚刚遇到了同样的问题,其原因是由于在全新的macOS Mojave更新后,我撤销了我的开发人员证书并使用Xcode 10创建了新证书(对于某些证书,它删除了所有登录证书)并已过期一些钥匙串证书)。
因此,我要做的就是从设备中删除已安装的应用程序,然后再次通过Xcode运行它们,以使其在设备中安装正确的新Provisioning Profile:)
答案 27 :(得分:0)
我在项目中修正了错误 1.发生错误时检查其他线程。我发现我的错误是关于相机。
答案 28 :(得分:-1)
仅在真实设备(iPhone SE)上运行时,我才遇到该问题。在模拟器上的项目按预期工作。
我确实从这个线程以及从这里尝试了所有修复程序:OS X Framework Library not loaded: 'Image not found' 这些都不对我有用。
对我来说,重新启动iPhone后就解决了问题(原文如此!)。
我做到了:
终于可以了。 :)
如果其他所有解决方案均失败,请不要忘记尝试一下。
答案 29 :(得分:-2)
我把它按" pod install"排序命令。