dyld:未加载库:@ rpath / libswift_stdlib_core.dylib

问题描述 投票:197回答:36

将Swift类添加到旧的Xcode项目后,我收到此错误。

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

如何让项目再次运行?

swift dyld
36个回答
148
投票

对我来说,以前的解决方案都没有奏效。我们发现在Build Settings中有一个标志ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(在早期版本中:“Embedded Content包含Swift Code”)需要设置为YES。默认是NO!


3
投票

我尝试了上面给出的所有答案,没有任何效果。

最后更新到约塞米蒂后工作


3
投票

我有一个Obj-C项目,我开始添加swift源文件。以下为我解决了这个问题:

  1. 链接:RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Swift编译器 - 代码生成:EMBEDDED CONTENT CONTAINS SWIFT = YES

我刚刚从模板Xcode 6.3创建了一个新项目,并将项目设置与我原来的原始项目进行了比较。


3
投票

尝试按住Alt,然后转到产品 - >清理构建文件夹...

希望它会帮助某人..


3
投票

发生这种情况的原因很多。刚刚度过了一个有趣的周末,找到了导致这个问题的另一个问题(代码签名的顺序),我想创建一个汇总答案,将所有可能的解决方案结合在一起:

  1. 添加嵌入式内容包含Swift代码到项目。如果您的应用包含Swift代码,则需要设置此标志。
  2. 清洁项目。除了Project> Clean,您还可以删除DerivedDataBuild目录。在首选项下查看DerivedData的位置。 Build应该在你的项目文件夹中。
  3. 确保Runpath搜索路径包含@executable_path/Frameworks
  4. 确保您的证书在OU(组织单位)字段中包含您的Apple团队ID Apple将为您添加此项,只需撤销现有的分发证书并创建一个新证书,下载,安装在KeyChain上,重新生成所有配置文件,下载和重建。
  5. Xcode重启。如果一切都基本上好,但Xcode尚未到达那里。

这很简单。如果您正在进行自己的命令行构建,则可能正在创建自己的.ipa文件以进行上载。在这种情况下,您需要确保以下内容:

  1. 确保SwiftSupport/iphoneos中的Swift文件版本与Contents/YourApp.app/Frameworks中的版本相同因为Swift在版本之间尚未兼容,所以必须确保这些版本是您构建应用程序的版本。您可以在/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos下找到这些库。
  2. 首先签署库和框架。您需要首先codesign库和框架文件(在Frameworks文件夹中的.app下),然后签署整个.app树。 .app树必须用entitlements.plist签名,但不能签署框架。

希望当Swift 3.0问世时我们不再需要将Swift与我们的应用程序捆绑在一起,整个问题就会消失。


2
投票

我使用带有生产证书的Ad Hoc(或企业)mobileprovision遇到了这个问题。切换到开发证书和mobileprovision解决了这个问题。


2
投票

我的项目是一个带有一些Objective-C类的Swift项目。使用旧的inHouse(企业)证书签名时遇到了同样的问题。

以下步骤为我解决了这个问题。

  1. 创建并使用新证书和移动设备。 (参考AIRSIGN’s blog
  2. Runpath Search Paths构建设置为:$(inherited) @executable_path/Frameworks。 (参考matt’s answer

2
投票

解决方案6:

在我们的案例中,企业分发证书已被撤销。生成新证书并更新配置文件修复了该问题。

(这个错误似乎有很多不同的原因。希望这有助于某人。)


2
投票

我遇到了同样的问题,设置正确的代码符号标识解决了问题(Build settings-> Code Signing Identity)。

根据Apple technical question“iOS 8发布后创建的所有企业级和标准iOS开发人员证书都在适当的位置使用新的Team ID字段以允许Swift语言应用程序运行”


2
投票

如果通过嵌入式二进制文件添加三个框架,它们也将添加到链接框架和库中。删除链接框架和库中的三个条目将解决问题。

魔术方法,如重新启动Xcode和重启Mac对我不起作用。


2
投票

将框架添加为“嵌入式二进制”而不仅仅是“链接框架和库” - 修复了我的问题。

我还将Embedded Content Contains Swift Code标志设置为YES。


91
投票

如果在转换Objective-C项目期间出现问题以开始使用Swift时,可能会发生此错误。问题是链接器构建设置从未正确配置,因此您必须手动完成。查找Runpath搜索路径构建设置并将其设置为:

$(inherited) @executable_path/Frameworks

编辑:我还应该补充说,最近发生了一些完全由其他事情引起的错误 - 苹果公司在Swift本身做了一个改变,从Xcode 6.1或6.1.1开始。唯一的解决方案似乎是退出Xcode,在Keychain Access中销毁您的证书,转到成员中心并删除所有证书和配置文件(商店中应用程序的配置文件除外 - 您无法删除它们),然后启动整个证书申请流程从头开始。


1
投票

升级到OS X(Yosemite)的最新版本

经过几个小时的试验和错误,我解决了这个问题。 - 如果这适用于您的情况当然。

直到我将Mac OS X从Mavericks升级到Yosemite之前,我遇到了同样的问题。 - 它解决了我的问题,希望它也可以解决你的问题


1
投票

我尝试了在网络上找到的所有解决方案,包括Apple和新证书。没有成功。

在经过6个月的尝试后,我可以运行xcode的唯一方法是在我的macbook上创建一个新帐户。


1
投票

如果将此库添加到Build Phases中的“Copy Files”段,通常此错误将消失。


1
投票

如果以上所有内容都没有帮助你,你真的感到沮丧...尝试所有的最佳技巧:Clean,并确保Clean Build Folder。 :)希望它有助于某人!


1
投票

这些解决方案似乎都没有一直对我有用;每次成功运行后,它都会再次失败。对于我,“嵌入式内容包含Swift代码”标志始终设置为YES。

结果我将Xcode设置为6.3兼容。将其改回3.2兼容解决了它:


1
投票

我也有这个问题,只是它找不到libswiftXCTest.dylib

解决方案是将XCTest.framework添加到Build Phases/Link Binary with Library的测试目标中。即使我正在尝试构建主要目标,我也会收到此错误。


0
投票

当我向一个旧项目添加一个带有Swift语言的新的今日扩展目标时,就会出现这种情况。通过将项目更新为推荐设置,可以轻松修复。 Xcode 6.0.1


0
投票

我使用Mavericks Xcode 6.1.1在使用iOS 8.1.1的iPhone5上进行测试时遇到了同样的问题。我尝试了所有可能的解决方案,包括新证书和配置文件,但没有任何帮助。我在项目级别和目标级别上对Embedded Content Contains Swift CodeRunpath Search Paths进行了更改。

我现在安装了Yosemite,没有任何进一步的改变,它开始工作。


0
投票

同样的问题,对我来说,Crashlytics / Fabric / Beta / Twitter / Whatever-they-call-yourself本身上传了一个缺少嵌入式框架的二进制文件。如果我制作了一个存档,然后以标准方式导出了企业版,那么他们就有了魅力。


0
投票

我的环境:Cocos2d 2.0,Box2d,Objective C

除了做上面的其他答案,我终于进入了General选项卡并使WatchKit可选。

Targets:General:Linked Frameworks and Libraries: WatchKit.framework: Optional


79
投票

我不确定为什么这个问题被低估了,当我第一次尝试将Swift与现有项目一起使用时,我也遇到了这个问题。 Xcode重启也为我解决了这个问题。


0
投票

几个月后,在这里尝试一切...疯狂的定义...在一个新的Mac用户下启动Xcode解决了它。

我删除了〜/ Library / Developer / *并重新安装了Xcode-所以不知道还有什么要格式化以使其工作。


54
投票

我在这个问题上搜索得很久。导致此问题的原因有多种。

如果您在Objective C项目中遇到Swift代码/库,则应该尝试解决方案1-2-3

如果您在使用新的Swift项目时遇到此问题,解决方案4将最适合您。

Solution 1:

重启Xcode,然后重启电脑和iPhone

Solution 2:

转到项目构建设置并将Always Embed Swift Standard Libraries(以前的Embedded Content Contains Swift Code)标志设置为YES

Solution 3:

转到项目构建设置并将@executable_path/Frameworks添加到Runpath Search Paths选项

Solution 4:

如果以上都不起作用,这应该。苹果似乎是AirSign's post中提到的忍者修补证书

在InHouse证书

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR

他们添加了一个名为OU的新字段

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

所以你应该重新创建证书和配置


40
投票

在我的情况下,我试图导入自定义框架,并得到类似的错误。事实证明,我必须在嵌入式二进制文件中导入框架,而不是导入到链接的框架和库中。

嵌入式二进制文件位于项目设置 - > - >常规下


16
投票

对于使用Adhoc / Enterprise分发版本遇到此问题的开发人员,

从开发门户创建生产证书,然后重新生成分发配置文件。在Mac上下载并安装它们。确保您在Xcode构建设置中选择了正确的配置文件并重建您的应用程序。

资料来源:https://devforums.apple.com/message/1022908#1022908


14
投票

解决方案5:

就我而言,在答复中提到的所有解决方案都非常有用,但没有一个有效。我通过在项目目标的“常规”部分的“嵌入式二进制”部分中添加我的swift库来解决我的问题。也许这是因为我在我的工作区中包含了我的快速框架?无论它现在编译什么!准备好斯威夫特,我在这里!


10
投票

Xcode的简单重启为我解决了这个问题。


5
投票

对我来说,问题是由于我的Apple全球开发者关系认证机构无效。

从这里下载:https://developer.apple.com/certificationauthority/AppleWWDRCA.cer

将其拖放到Keychain Access中,清理项目并运行。

© www.soinside.com 2019 - 2024. All rights reserved.