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

use*_*185 393 xcode dyld ios swift

我想在我的iPhone 4s上运行一个Swift应用程序.它在模拟器上工作正常,我的朋友可以在他的iPhone 4s上成功运行它.我有iOS 8和Xcode 6的官方发行版.

我试过了

  • 重启Xcode,iPhone,电脑
  • 清洁和重建
  • 撤消并创建新的证书/配置文件
  • Runpath搜索路径是 $(inherited) @executable_path/Frameworks
  • 嵌入式内容包含Swift Code是'是'
  • 代码签名身份是开发人员

以下是整个错误

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
Run Code Online (Sandbox Code Playgroud)

小智 540

对我来说,以前的解决方案都没有奏效.我们发现Build Settings中有一个"Always Embed Swift Standard Libraries"标志,需要设置为YES.默认是NO!

Build Settings > Always Embed Swift Standard Libraries

设置完成后,在再次构建之前清理项目.

对于敏锐的读者一些解释 最重要的部分是:

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

在此输入图像描述

国旗原先被称为 Embedded Content Contains Swift Code

  • 它现在被称为Always Embed Swift标准库. (72认同)
  • 也为我工作,所以感谢一帮.令我困惑的是,如果我将swift代码添加到项目中,为什么Xcode不会自动更新?这听起来像是一种合理的默认行为.我想这样可以让你更好地控制包含的库等. (20认同)
  • 这样做之后要干净. (17认同)
  • 对我来说是"在产品包中嵌入资产包"! (10认同)
  • 这样做后干净就解决了我的问题.很高兴我检查了评论!=] (2认同)
  • 意识到!-仅在您的项目不使用Swift代码并且具有用Swift编写的嵌入式库时才需要这样做。 (2认同)

roy*_*rma 135

令人惊讶的是,我所做的只是"清理"我的项目(shift + cmd + K)并且它有效.似乎与证书有关.

  • 哈,是的,它奏效了.我之前已经重置了我的证书,这个干净就像一个魅力. (12认同)
  • 这里同样的问题。处理证书后,需要重新构建新版本。 (2认同)

jem*_*ons 95

我删除后开始收到此错误:

@executable_path/Frameworks
Run Code Online (Sandbox Code Playgroud)

来自Runpath Search Paths我的构建设置.更换它会再次修复所有内容(谢谢源代码控制!)

我不知道它是如何实现的,但似乎二进制文件需要找到它的嵌入式Swift运行时.

  • 对我来说,从Xcode 8b5开始,它实际上是用于macOS单元测试的`@loader_path /../ Frameworks`和用于需要添加的iOS单元测试的`@ loader_path/Frameworks`. (5认同)
  • 将一个旧的iOS6项目更新到iOS7和Swift并得到了该错误.@ executable_path/Frameworks修复了它.谢谢! (2认同)

Hle*_*kyi 69

这里是 Xcode 13(13.1 带有 React-Native)。

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

在此输入图像描述

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

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


Mus*_*afa 61

对于设备,还需要将动态框架添加到项目选项卡中的Embedded binaries部分General.
在此输入图像描述

  • 答案很模糊. (61认同)
  • 要阐明:如果您在错误消息中看到的是框架的名称(例如,您制作的自定义Cocoa Touch Framework),请不要仅在构建阶段中的目标依赖项中添加.framework.您还需要在"常规"选项卡中将其添加到"嵌入式二进制文件".这个答案为我解决了. (5认同)
  • 为我工作.仅添加到"链接的框架和库"部分并没有成功. (2认同)

Bon*_*nie 61

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

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

在此输入图像描述


小智 27

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

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

  • 原谅我的无知......这个答案与被问到的问题有什么关系?看起来你回答了另一个问题.或者更准确地说,你回复了@ user3056783删除的答案,这只是一个"我有这个问题太评论". (4认同)

nal*_*exn 25

好的,在这里分享这个错误的另一个原因.我花了几个小时来解决这个问题.

在我的情况下,我的证书在Keychain Access中的信任策略是Always Trust,将其更改回默认值解决了问题.

要打开证书设置窗口,请双击证书的Keychain Access列表中的证书.

在此输入图像描述 在此输入图像描述


Don*_*Lea 23

运行我的Swift测试时遇到了这个问题(但不是我的应用程序).事实证明,测试需要具有超过测试目标@executable_path/FrameworksRunpath Search Paths构建设置.将Runpath搜索路径设置为以下内容对我来说很有魅力:

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks
Run Code Online (Sandbox Code Playgroud)

  • 哈利路亚!上帝保佑你DonnaLea.那刚刚结束了3个小时的斗争. (2认同)

Jim*_*ray 20

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

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


lor*_*isi 17

你必须设置Runpath Search Paths@executable_path/Frameworks作为显示在生成设置的下面的截图:

在此输入图像描述

如果你有任何在Swift中YES构建的嵌入式框架,那么你可以设置为Build Options Embedded Content Contains Swift Code.


fla*_*nka 16

我想Apple 在尝试引用Swift库libswiftCore.dylib时已经在Swift app崩溃下进行了总结

引自QA1886技术问答:

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

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

答:要解决此问题,您需要使用代码签名证书对您的应用进行签名,并将主题组织单位(OU)设置为您的团队ID.发布iOS 8之后创建的所有Enterprise和标准iOS开发人员证书都在适当的位置使用新的Team 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
Run Code Online (Sandbox Code Playgroud)

在构建存档和打包应用程序时需要新证书.即使您拥有其中一个新证书,只需重新签署现有的swift应用程序存档也行不通.如果它是使用iOS 8之前的证书构建的,则需要构建另一个存档.

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

由于AirSign球员状态从丢失的问题根源OU中的属性主题的现场内务证书.

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

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


Saz*_*han 10

让我们的项目P导入自定义库L,然后你必须添加L

P -> Build Phases -> Embed Frameworks -> +.这对我行得通.

在此输入图像描述


Mic*_*ang 8

最简单,最容易忽略的方法:清理和重建。

在尝试了上述答案后,此问题得以解决,但没有奏效。


Bru*_*lho 7

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

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

在这里找到答案. /sf/answers/1014657031/


Isu*_*mal 7

当我创建发布版本时,Xcode 13+ 也遇到了同样的问题。不得不浪费我的时间来解决这个问题。最后我能够通过以下步骤解决该问题。

我在构建设置 -> 链接的运行路径搜索路径中添加了一个新的发布条目。

/usr/lib/swift

在此输入图像描述

添加后,我可以运行我的应用程序而不会崩溃!


Bar*_*zyk 6

从以下位置更改目标的复制窗格资源:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"
Run Code Online (Sandbox Code Playgroud)

至:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
Run Code Online (Sandbox Code Playgroud)


Whi*_*ger 6

我通过删除派生数据解决了这次它正常工作.尝试使用Xcode 7.3.1GM


Pau*_*iel 6

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

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


Guy*_*Guy 6

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

我们尝试了该线程上的每一个合理建议。

什么都没起作用。代码在新设备上运行良好,在 iOS<=12 上崩溃

看来 swift 是如此聪明,即使你将其设置为“ALWAYS_EMBED_SWIFT_LIBRAIES”=“YES”,它也不包含 swift 库。

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

显然,这暗示 mighty-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)")

   }
}
Run Code Online (Sandbox Code Playgroud)

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


小智 5

在尝试了所有内容之后,我终于发现,构建似乎并不总是一次又一次地包含每个细节.也许是为了加快这个过程...为了确保在设备上运行之前的整个包装,先做一个Clean:Shift-Cmd-K.然后使用:Cmd-B构建.之后,在您的设备上运行它.简单.亲切的问候你们在那个地方的所有好人!


归档时间:

查看次数:

187354 次

最近记录:

6 年 前