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

Posted

技术标签:

【中文标题】dyld:库未加载:@rpath/libswiftCore.dylib【英文标题】:dyld: Library not loaded: @rpath/libswiftCore.dylib 【发布时间】:2014-11-19 08:55:18 【问题描述】:

我正在尝试在我的 iPhone 4s 上运行 Swift 应用程序。它在模拟器上运行良好,我的朋友可以在他的 iPhone 4s 上成功运行它。我有 ios 8 和 Xcode 6 的正式版本。

我试过了

重启Xcode、iPhone、电脑 清理和重建 撤销和创建新的证书/配置文件 运行路径搜索路径为$(inherited) @executable_path/Frameworks 包含 Swift 代码的嵌入内容为“是” 代码签名身份是开发人员

以下是全部错误

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib

【问题讨论】:

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib 的可能重复项 清理和重建对我有用 解决方案是here。同一个话题 清理和重建适合我的项目 1 我也遇到了同样的问题...通过添加以下内容得到解决:在您的 podfile 中:use_modular_headers!而不是use_frameworks!祝你好运!我希望这对你有用! 【参考方案1】:

对我来说,以前的解决方案都不起作用。我们发现 Build Settings 中有一个“Always Embed Swift Standard Libraries”标志需要设置为 YES。默认为NO!

Build Settings > Always Embed Swift Standard Libraries

设置后,在再次构建之前清理项目。

For keen readers some explanation 最重要的部分是:

在您的应用程序中将 Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) 构建设置设置为 YES,如图 2 所示。此构建设置指定目标产品是否具有包含 Swift 代码的嵌入内容,它告诉 Xcode 嵌入 Swift 标准库设置为 YES 时在您的应用中。

该标志以前称为Embedded Content Contains Swift Code

【讨论】:

也为我工作,非常感谢。令我困惑的是,如果我将 swift 代码添加到项目中,为什么 Xcode 不自动更新呢?这听起来像是一个合理的默认行为。我想这种方式可以让您更好地控制包含的库等。 对我来说是“在产品包中嵌入资产包”! 完成此操作后进行清洁。 在这样做之后进行清洁是解决我的问题的方法。很高兴我检查了 cmets! =] 现在称为 Always Embed Swift 标准库。【参考方案2】:

令人惊讶的是,我所做的只是“清理”我的项目(shift+cmd+K)并且它起作用了。不过似乎确实与证书有关。

【讨论】:

Clean 是有意义的,因为它会强制刷新构建中使用的缓存项。我必须这样做,因为我刚刚刷新了签名证书。我做了一个干净和干净的构建文件夹(Option-clean)。 哈哈,是的,它奏效了。我早些时候重置了我的证书,这种清洁就像一个魅力。 天才,哈哈,这是因为我怀疑从 swift 2 升级到 3 之间没有清理,至少对我而言 这里有同样的问题。操作证书后需要新的构建。 这里有同样的问题。清洁是必须的步骤。无需操纵证书。我的问题解决了。【参考方案3】:

我在删除时开始收到此错误:

@executable_path/Frameworks

来自我的构建设置中的Runpath Search Paths。替换它再次修复了所有问题(感谢源代码控制!)

我不知道它是如何到达那里的,但二进制文件似乎需要它来查找其嵌入式 Swift 运行时。

【讨论】:

将旧的 iOS6 项目更新到 iOS7 和 Swift 并得到该错误。 @executable_path/Frameworks 修复了它。谢谢! 对我来说,从 Xcode 8b5 开始,实际上需要添加用于 macOS 单元测试的 @loader_path/../Frameworks 和用于 iOS 单元测试的 @loader_path/Frameworks 是的!这是在 iOS 10/Xcode 8 中为我完成的修复。该项目在 iOS 2-3 上作为纯 Objective-c 开始,我们现在刚刚添加了一些 Swift。 添加这个也为我修复了错误。有人知道这一切的全部原因吗?感谢您的帮助。 也为我工作! (XCode 8.2.1)【参考方案4】:

对于设备,您还需要将动态框架添加到项目的General选项卡中的Embedded binaries部分。

【讨论】:

有什么想法吗? @Mustafa 答案很模糊。 再次,回答相当模糊。不完全确定这对 OP 意味着什么。 为我工作。仅添加到“链接的框架和库”部分并没有成功。 说明:如果您在错误消息中看到的是框架的名称(例如,您制作的自定义 Cocoa Touch 框架),请不要只在构建阶段的目标依赖关系。您还需要将其添加到常规选项卡中的嵌入式二进制文件中。这个答案为我解决了这个问题。【参考方案5】:

在 Xcode 8 中,Embedded Content Contains Swift Code 选项不再可用。

已重命名为"Always Embed Swift Standard Libraries = YES"

【讨论】:

这有助于我在 WatchOS 上崩溃【参考方案6】:

我认为直接从 Xcode 生成证书是一个错误。要解决(至少在 Xcode 6.1 / 6A1052d 中):

    访问管理证书的 Apple Developer 网站:https://developer.apple.com/account/ios/certificate/certificateList.action 选择您的证书(应在“状态”下显示“由 Xcode 管理”)并“撤销”它 按照此处的说明手动生成新证书:https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32 转到 Xcode > 首选项 > 帐户 > [您的 Apple ID] > 双击您的团队名称 > 点击刷新按钮以更新证书和配置文件

【讨论】:

仅在 XCode 中删除和创建时才为我工作,developer.apple.com 的“证书、标识符和配置文件”工具创建了新的错误证书。 原谅我的无知...这个答案与所提出的问题有什么关系?看起来你回答了一个不同的问题。或者更准确地说,您回复了 @user3056783 已删除的答案,这只是一个“我也有这个问题的评论”。 我刚刚在 Xcode 中生成了一个证书,所以它可能是同样的问题,尽管我能够通过运行 Clean 来解决它。 那个“刷新”按钮现在重命名为“全部下载”... :) XCode 7 中的同样问题。在 Apple 开发者中心手动生成证书文件解决了我的问题。【参考方案7】:

好的,在这里分享导致此错误的另一个原因。我花了几个小时才解决这个问题。

在我的情况下,我在 Keychain Access 中的证书的信任策略是始终信任,将其改回默认值即可解决问题。

为了打开证书设置窗口,双击证书钥匙串访问列表中的证书。

【讨论】:

它也对我有用。我使用 pod 来包含 PubNub 和 AWS sdks。我尝试使用不同的方法,例如更改“运行路径搜索路径”它已设置为上述答案中提到的值。将 swift 代码嵌入构建设置中标记为“是”但不起作用。最后,这个解决方案对我有用。干杯。 为我工作。我永远不会怀疑这样的事情。非常感谢。 我尝试了以上所有解决方案,这就是棺材上的钉子。我不确定我是否需要所有这些的组合,但这对我来说是赢家。需要明确的是,我所做的是:清理项目,在运行路径搜索路径中包含 load_path,将分发证书从系统移动到登录钥匙串,将始终嵌入 swift 标准库设置为是,“不受信任”证书(将其设置回系统默认信任)。 圣莫莉...非常感谢!【参考方案8】:

我在运行我的 Swift 测试(但不是我的应用程序)时遇到了这个问题。事实证明,测试需要在测试目标的Runpath Search Paths 构建设置中包含多个@executable_path/Frameworks。将运行路径搜索路径设置为以下对我来说很有吸引力:

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks

【讨论】:

是的,就是这样! AFDateHelper.framework 面临这个问题,Result.framework 面向那些在此处使用 Google 的人。我意识到这是解决方案,因为这样做会更改我收到此错误的框架的名称 - 这是一个我错过了包含在 carthage copy-frameworks 中的框架,因为它是次要依赖项(我是一个框架使用已添加) 哈利路亚!上帝保佑你,唐娜莉亚。这刚刚结束了 3 小时的斗争。 太棒了。正是我想要的。【参考方案9】:

此问题在 Xcode 10.2 中再次出现。您必须从 Apple 下载并安装以下软件包。它为命令行工具提供Swift 5 运行时支持

https://support.apple.com/kb/DL1998?locale=en_US

【讨论】:

我得到 dyld:找不到符号:_$s11SubSequenceSlTl。这行得通? 太棒了!解决了这个 有效!这让我想起了旧时的 windows 编程,当你需要安装可再发行的 Visual c++ msvcrt.dll 谢谢!尝试了其他所有方法,就是这样。【参考方案10】:

您必须将Runpath Search Paths 设置为@executable_path/Frameworks,如以下构建设置屏幕截图所示:

如果您有任何用 Swift 制作的嵌入式框架,则可以将 Build Options Embedded Content Contains Swift Code 设置为 YES

【讨论】:

YES,对于swift中的框架,需要将“Embedded Content Contains Swift Code”设置为YES 我制作了一个命令行工具,它使用了一些 dylib,这些 dylib 将与本地目录中的工具一起交付(而不是在 /usr/lib 或类似的目录中)。 otool -L for these dylibs 告诉我他们已经在使用@rpath/... 作为他们自己的路径。现在,通过将 Runpath Search Path 设置为该文件夹的路径,我可以运行我的工具,它会找到存储在它旁边的文件夹中的 dylib。 在尝试将 Swift 模块添加到 React Native 项目中时,却找不到 @rpath/libswiftAppKit.dylib。 issue 让我了解到我必须添加搜索路径:@executable_path/../Frameworks/ 基于these instructions。这是否仅适用于我的项目结构,我不能说。值得注意的是,我无需清理 DerivedData 即可使此设置生效!【参考方案11】:

我想苹果已经在Swift app crashes when trying to reference Swift library libswiftCore.dylib下总结了

引自技术问答 QA1886

尝试引用 Swift 库时,Swift 应用程序崩溃 libswiftCore.dylib.

问:对于我的 libswiftCore.dylib 加载错误,我该怎么办? 当我尝试运行我的 Swift 语言应用程序时出现的设备控制台?

答:要解决此问题,您需要使用代码对您的应用进行签名 将主题组织单位 (OU) 设置为的签名证书 您的团队 ID。所有企业和标准 iOS 开发人员证书 在 iOS 8 发布后创建的具有新的团队 ID 字段 在适当的位置允许 Swift 语言应用程序运行。

通常此错误会出现在设备的控制台日志中,并带有一条消息 类似于以下之一:

[....] [deny-mmap] mapped file has no team identifier and is not a platform binary:
/private/var/mobile/Containers/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib

Dyld Error Message:
  Library not loaded: @rpath/libswiftCore.dylib

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0

Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5

构建存档和打包时需要新证书 你的应用程序。即使您拥有新证书之一,也只需辞职 现有的 swift 应用程序存档将不起作用。如果它是用一个 iOS 8 之前的证书,您将需要构建另一个存档。

重要提示:如果您需要撤销并设置新的,请谨慎使用 企业经销证书。如果您是内部企业 开发人员,您需要注意不要撤销 用于签署应用程序的分发证书 企业员工仍在使用已签名的任何应用程序 该企业经销证书将停止工作 立即地。以上仅适用于企业经销 证书。开发证书可以安全撤销 企业/标准 iOS 开发人员。

作为 AirSign 人员 state,问题源于 内部证书subject 字段中缺少 OU 属性。

主题:UID=269J2W3P2L,CN=iPhone 分布:公司名称,OU=269J2W3P2L,O=公司名称,C=FR

我有一个企业开发证书,创建一个新的解决了这个问题。

【讨论】:

在花了很多时间试图了解为什么我的新 CI 设置无法正确发布 beta 应用程序(确实是企业帐户)之后,我发现在导出选项中,compileBitcode 必须为 true .【参考方案12】:

让我们的项目P正在导入自定义库L,那么你必须将L添加到

P -> Build Phases -> Embed Frameworks -> +。这对我有用。

【讨论】:

【参考方案13】:

这里是 Xcode 13(带有 react-native 的 13.1)。

创建了一个干净的 react-native 项目,并将 /usr/lib/swift 视为 Runpath Search Paths 中的一个条目。

添加之后,我的项目终于运行了,没有崩溃!

之前的建议没有任何帮助。

【讨论】:

这拯救了我的一天!以上解决方案均不适用于 Xcode 13,谢谢!【参考方案14】:

最容易被忽略的方法:清理和重建。

在尝试了上面的答案后解决了这个问题,但没有奏效。

【讨论】:

【参考方案15】:

我在搬到新的 Mac 后遇到了同样的问题,几个小时后,尝试了问题中所有建议的答案,但这些都不适合我。

我的解决方案是安装这个丢失的证书。 http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

在这里找到答案。 https://***.com/a/14495100/976628

【讨论】:

【参考方案16】:

将目标的复制 Pods 资源更改为:

"$SRCROOT/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"

到:

"$SRCROOT/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"

【讨论】:

除非这破坏了其他东西,否则这就是我的解决方案! 那东西还坏了什么?你能帮我改进一下答案吗? 它似乎可以正常运行,但运行“pod install”会覆盖更改。 @RealCasually 你是对的有没有办法防止覆盖这个或任何解决方法? 天啊。在尝试了 100 件其他事情和 4 个小时的捣蛋之后,这对我来说是个问题。 framework.sh 与 resources.sh 到底发生了什么?【参考方案17】:

我通过删除派生数据解决了这个问题,这一次它可以正常工作。尝试使用 Xcode 7.3.1GM

【讨论】:

删除我的派生数据也有效,我事先做了一个干净的(CMD+K),以防万一错误死了!【参考方案18】:

在升级 Xcode(以及随后升级到新版本的 Swift)并且您的项目使用使用旧版/先前版本的 Swift 构建/编译的框架时,也可能会导致此错误消息。

在这种情况下,重建框架并重新添加它会解决问题。

【讨论】:

这发生在我身上,从 Xcode 9.2 到 9.3。虽然我直到升级后很久才发现它,因为只要该项目以前是使用 Xcode 9.2 构建的,它就可以无限期地使用 Xcode 9.3。只有在进行干净的结帐后,我才发现这一点。 我认为这个答案的评价不够高。使用 Carthage 并安装更新版本的 Xcode,您需要重建 Carthage 库以解决此问题。【参考方案19】:

在尝试了一切之后,我终于发现,构建似乎并不总是一次又一次地包含每个细节。也许是为了加快进程... 为了确保在设备上运行之前进行完整打包,请先进行清洁:Shift-Cmd-K。 然后使用:Cmd-B 构建。 之后在您的设备上运行它。 简单。 向在那个地方的所有好人致敬!

【讨论】:

【参考方案20】:

就我而言,这只是我的目标的名称:

我这样重命名它:MyApp.something 并且出现了同样的问题。 但是我在构建设置窗口中看到,我的产品模块名称已更改为 MyApp-something。 因此,我删除了目标名称中的点 (MyAppSomething),问题就消失了。

【讨论】:

【参考方案21】:

对我来说,尝试了一切都没有成功,有效的方法是从 Packaging section 中删除 @executable_path/Frameworks(不知道它是如何出现的)

【讨论】:

这是框架路径还是主项目设置路径? 我有一个项目静态库 a 并想将 swift fw 添加到其中。该指令与 Embedded Contain Contains Swift to Yes 代码一起解决了所有问题。 这似乎破坏了我的项目。【参考方案22】:

没有一个解决方案对我有用。重启手机就解决了。奇怪,但它奏效了。

【讨论】:

【参考方案23】:

这些解决方案似乎都不起作用,但是当我将全球开发者证书的权限更改为 Use System defaults 时,它就起作用了。我在下面的链接中包含了步骤和屏幕截图

我鼓励您在此处提到的苹果错误报告中记录票证,因为苹果确实应该解决这个巨大的错误: https://***.com/a/41401354/559760

【讨论】:

【参考方案24】:

我们有一个统一项目,它创建了一个包含使用 swift 的库的 xcode 项目。

我们尝试了关于这个线程的每一个合理的建议。

没有任何效果。代码在新设备上运行良好,在 iOS 上崩溃

似乎 swift 很聪明,即使您将其设置为 "ALWAYS_EMBED_SWIFT_LIBRAIES"="YES" 它也不包含 swift 库。

真正为我们解决问题的是在项目中包含一个虚拟 swift 文件。 该文件必须包含对调度基础库的调用。

显然这暗示了强大的 xcode 强制包含库,但这次是真实的。

这是我们添加的虚拟文件,使其工作:

import Dispatch
import Foundation


class ForceSwiftInclusion 

   init() 

    // Force dispatch library.
    DispatchQueue.main.async 
      print("something")
    

    // Force foundation library.
    let uuid = UUID().uuidString
    print("\(uuid)")

   

为了统一,还要将project.AddBuildProperty(target, "SWIFT_VERSION", "Swift 5"); 添加到您的后处理中以创建 xcode 项目。

【讨论】:

【参考方案25】:

Xcode 7.2、iOS 9.2 在一台设备上,9.0 在另一台设备上。两者都有错误。不知道是什么导致了它,但上面的 WWDR 解决方案对我来说是正确的。安装该证书并解决问题。

https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 道歉。下载 WWDR 证书,然后将其打开以安装到您的钥匙串中。证书在这里:developer.apple.com/certificationauthority/AppleWWDRCA.cer【参考方案26】:

那里有很多答案,但我的答案可能会对某些人有所帮助。

我遇到了同样的问题,我的应用程序在模拟器上运行良好,但在设备上崩溃了,因为我午餐应用程序并给出了上述错误。我已经尝试了所有答案和解决方案。在我的情况下,我的项目我有多个目标。我从目标 A 创建了重复的目标 B。目标 B 工作正常,而目标 A 崩溃了。我为每个目标使用不同的图像资产。在搜索和做谷歌之后,我发现了一些可能对某人有帮助的东西。

当我更改两个应用的启动图像资产的名称时,应用停止崩溃。例如 Target A Launch Image 资产名称 LaunchImage A 。目标 B 午餐图像资产名称 LaunchImage B 并在每个目标的常规选项卡中正确分配。我的应用程序运行良好。

【讨论】:

【参考方案27】:

对于我构建一个依赖于 3rd 方 Swift 库(例如 SQLite)的 MacOS 命令行 Swift 应用程序来说,上述解决方案似乎都不起作用。起作用的是直接将以下路径添加到构建设置中的运行路径搜索路径:

/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/

这样做确实会在运行时发出警告,说 Xcode 找到了 2 个版本的 libswiftCore - 这是有道理的。除了不包括该行会导致 Xcode 找不到任何版本的 libswiftCore。

无论如何,即使它看起来不正确,我也会这样做 - 我的应用程序只是一个实用程序,我不打算分发它,至少它现在可以运行!

【讨论】:

谢谢!我处于你的情况,这对我也有效。 是的,这就是 CLI 的解决方案!【参考方案28】:

在 Xcode 11 中对我有用的是 General -> Frameworks, Libraries, and Embedded Content 并将相关框架的“嵌入”选项更改为“嵌入和签名”

【讨论】:

谢谢你……你今天救了我……【参考方案29】:

我同时安装了多个版本的 Xcode。该框架是使用更新版本的 Xcode 构建的。我尝试编译的应用程序使用的是旧版本的 Xcode。当我使用相同版本的 Xcode 清理和编译框架和应用程序时,一切正常。

【讨论】:

【参考方案30】:

在测试使用 AWS 服务添加 S3 文件时,我开始遇到类似的错误。下面是错误。 dyld:库未加载:@rpath/AWSAutoScaling.framework/AWSAutoScaling

我搜索了很多,以上解决方案对我也没有帮助。下面的链接帮助我解决了这个问题。

https://forums.developer.apple.com/thread/21292

上面说通过重新下载WWDR (Apple Worldwide Developer Relations Certification Authority)来解决这个问题。

【讨论】:

以上是关于dyld:库未加载:@rpath/libswiftCore.dylib的主要内容,如果未能解决你的问题,请参考以下文章

Xcode - dyld:库未加载

dyld:库未加载 Xcode11

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

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

dyld:库未加载:@rpath/OneSignal.framework/OneSignal

libmpc - dyld:库未加载 - 原因:找不到图像