关于ios:dyld:未加载库:@ rpath / libswiftCore.dylib /未找到图像

dyld: Library not loaded: @rpath/libswiftCore.dylib / Image not found

我将应用程序从xcode运行到我的iOS设备,iOS设备上会显示这个和黑屏。

控制台文本:

1
2
3
4
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/10DB2FE8-EF09-4857-B4AC-0DB2E4419D6F/App-Name.app/App-Name          
Reason: image not found        
(lldb)

Screenshot added


尝试将以下行添加到目标的runpath搜索路径中。

1
@executable_path/Frameworks

您的目标->构建设置->链接->运行路径搜索路径


我也有同样的问题。我最终在以下位置添加了框架:

  • General > Embedded Binaries
  • General > Linked Frameworks and Libraries
  • Build Phases > Link Binaries with Libraries
  • 嵌入的二进制文件似乎是我的关键。


    对于我来说,帮助添加@executable_path/Frameworks到项目运行路径搜索路径,而不是目标路径。enter image description here您的u项目->构建设置->链接->运行路径搜索路径


    其他的解决方案都没有帮助我,但是所有的问题都是通过删除Xcode的派生数据目录来解决的。


    在用Swift对象更新obj-c嵌入式框架之后,我必须将"Embedded Content Contains Swift Code"切换为"Yes",才能让我的obj-c应用程序工作。


    哦,是的。我花了几个小时来解决这个问题。您可以尝试在构建设置>构建选项下将"始终嵌入Swift标准库"设置为"是"。

    dyld: Library not loaded: @rpath/libswiftCore.dylib

    (别忘了在项目结束后按Shift+Cmd+K键)


    在框架目标(而不是应用程序目标)中,转到构建设置>构建选项>始终将标准Swift库嵌入为是。

    这帮我解决了问题!


    我通过从xcode派生的数据目录中删除所有内容来修复:

    ~/Library/Developer/Xcode/DerivedData

    祝大家好运!


    我也面临同样的问题,设置正确的代码签名标识解决了这个问题(构建设置->代码签名标识)。

    根据苹果技术问题,"iOS 8发布后创建的所有企业和标准iOS开发人员证书在适当的位置都有新的团队ID字段,以允许运行Swift语言应用程序。"


    我在命令行项目(Xcode10.2和MacOS 10.14.3)中遇到了这个错误。

    解决方案是更新到MacOS 10.14.4

    Swift command line projects won’t run on macOS 10.14.3 and earlier unless you install the Swift 5 Runtime Support for Command Line Tools package. Without that package, Swift command line projects crash on launch with"dyld: Library not loaded" errors. (46824656)

    来自Swift 5 Xcode 10.2发行说明


    在我的例子中,这个问题出现在Objective-C项目中,在这个项目中我使用了一个Swift框架(Airwatch SDK)。

    解决:我已经用xcode 9.3和11.0.1 iOS解决了这个问题,如下所述步骤:

  • 将Swift框架拖放到项目中,并移动到项目的默认框架文件夹中。
  • 然后将它们作为嵌入的二进制文件添加,如屏幕截图所示。
  • 将框架状态从必选更改为可选,如屏幕截图所示。(构建阶段>将二进制文件与库链接)
  • enter image description here

  • 在构建设置中将"始终嵌入Swift标准库"设置为"是"。

  • 在构建阶段>嵌入框架中设置子路径并选择目标作为添加框架的框架如截图所示。enter image description here

  • 希望它能帮助别人。


    我有同样的错误信息,我就是这样解决的:

    问题来自Xcode自动生成的证书。我不得不撤销这些证书,然后从developer.apple.com生成它们。

    解决方案是:-转到developer.apple.com/certificates——>吊销证书或者进入xcode>首选项>帐户>查看详细信息>选择签名标识>clic设置whell>撤销-访问developer.apple.com并按照说明生成新证书-在我的项目中的xcode中:转到代码签名标识,并用生成的证书对两个调试行进行签名。-两个发布行都设置为"iOS开发人员"-然后项目>清理-构建并在设备上运行


    @塞基兰的回答有效。

    我的证书是在iOS 8发布之前生成的。我撤销了所有证书,重新生成了所有配置文件,它立即解决了我的问题。

    我没有足够的声誉去投票支持@saikiran的答案,但这确实帮助解决了问题。


    我已经正确设置了运行路径搜索路径,但它仍然不起作用。@JustinDomnitz的回答让我走上了正确的道路:在我的目标的构建设置中将"总是嵌入Swift标准库"设置为"是",这对我来说是个技巧。


    如果在其他Swift版本中使用框架构建,则当前正在使用的版本(例如,如果升级xcode),也可能出现此错误消息。


    我也有这样的问题其他办法都帮不了我,所以我做了愚蠢的方式从头开始创建新项目和pod安装在确认它正常工作后,我复制了所有类文件和故事板文件,最后完成了!我想这是最后的办法,也许能帮到你


    似乎这个问题是由将swift文件包含到objective-c自定义框架中引起的。也不确定是否相关,但我的应用程序目标也是在Objective-C中构建的。也在调试中构建到模拟器。尚未验证发布或存档版本。此外,项目目标的运行路径搜索设置被设置为"@executable_path/frameworks",在框架的目标设置中,它们被设置为"@executable_path/frameworks"和"@loader_path/frameworks"。

    在尝试重建自定义框架并重新附加到应用程序目标、清除派生数据文件夹和其他一些建议之后,最终对我有效的是将自定义框架项目(而不是应用程序目标)的项目目标内的生成设置更改为"始终嵌入Swift标准库"为"是"。应用程序目标的设置似乎无关紧要。我通过重置模拟器和重建来验证这一点。这与丹尼尔塞格里亚的回答类似,但我无法添加评论,希望提供更清晰的答案。


    在一个客观C项目中,我也遇到了类似的问题,在这个项目中我开始包含swift文件。

    在我的例子中,我在主项目中创建了两个目标,并添加了一个swift空文件,它创建了一个桥接头文件和一些配置,但我只将其标记为一个目标的成员。第一个目标工作正常,但第二个目标不正常,我注意到构建设置的不同之处在于此设置:

    Runpath Search Paths -> $(inherited) and @executable_path/Frameworks

    我还需要将Objective-C桥接头引用到之前创建的文件:

    Objective-C Bridging Header -> pathTo/Target-Bridging-Header.h

    添加这两个设置后,第二个目标开始正常工作。


    对我来说已经成功了,选择

    1
    ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

    在"项目"->"生成设置"->"生成选项"中选择"是"。

    (椰子的纳米框架)


    我有同样的错误信息,我就是这样解决的:发生这种情况是因为我更改了包标识符,所以我只放置了旧的包ID,它又开始工作了。


    尝试清理构建文件夹,我遇到了同样的问题,并通过以下方式解决了它:产品->清理构建文件夹


    为我清理项目解决问题!


    以上所有的解决方案都不适合我。我在keychain中更改了iPhone开发者证书信任设置。它应该永远是信任的。将其更改为使用系统默认值。双击keychain中的证书打开选项屏幕从这个博客中发现这个


    对我来说,重启模拟器解决了这个问题。


    我以前在iPod touch iOS 9.3中遇到过这个问题。我使用了这篇文章中提到的所有方法,但没有一个有效。我检查了我的项目设置。在另一个链接标记中,我发现我添加了-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null

    此标志阻止Dyld插入越狱电话。当我删除此标志时,应用程序可以再次启动。我不知道它为什么起作用。因为在iPhone SE iOS 10中,我不需要删除这一行。但它在iPod touch iOS 9.3上确实有效。所以,如果你和我有同样的情况,就检查一下。


    如果存在_codesignature signature framework目录,请检查*.framework。如果没有代码签名文件夹,导航到构建阶段,单击+添加新的复制文件阶段以创建复制文件。之后,参考*.framework并选择代码登录副本


    我试过上面的一些案例,但似乎没能解决我的问题。我在一个项目中使用Git和Cocoapods,一旦我作出新的承诺,错误就消失了。