首页 文章

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

提问于
浏览
346

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

我试过了

  • 重新启动Xcode,iPhone,电脑

  • 清洁和重建

  • 撤销并创建新的证书/配置文件

  • Runpath搜索路径是 $(inherited) @executable_path/Frameworks

  • 嵌入式内容包含Swift代码'Yes'

  • 代码签名标识是开发人员

以下是整个错误

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

30 回答

  • 92

    我同时安装了多个版本的Xcode . 该框架是使用较新版本的Xcode构建的 . 我试图编译的应用程序是旧版本的Xcode . 当我使用相同版本的Xcode清理和编译框架和应用程序时,事情就有效了 .

  • 20

    就我而言,

    我已设置 @executable_path/Frameworks

    但我还必须设置“框架搜索路径”

    $(PROJECT_DIR)/Frameworks
    

    改为 recursive

    哪个适合我 .

  • 2

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

    @executable_path/Frameworks
    

    来自 Runpath Search Paths 在我的构建设置中 . 更换它修复了一切(谢谢源代码控制!)

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

  • 7

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

  • 3

    令人惊讶的是,我所做的只是 "Clean" my project (移动cmd K)并且它起作用了 . 似乎与证书有关 .

  • 16

    我正在使用Xcode 7.2 . 如果您尝试了上述所有操作并且仍然出现错误,请尝试从Keychain Access中删除旧证书!终于解决这个问题真是太痛苦了 .

  • 58

    在我的情况下,我的一个测试目标是工作,但另一个不是 . 这是错误的库或其他什么给出上述错误 . 我比较了两个测试目标的设置,发现其中一个缺少“测试主机”的配置,所以我从工作测试目标中复制了它,并修复了我破坏的测试目标!

    enter image description here

  • 10

    我正在使用Xcode 8.3.3和Xcode 9.2 . 我的解决方案是使用Xcode Select将默认Xcode从8切换到9:

    $ xcode-select --print-path

    $ sudo xcode-select -switch /Applications/Xcode-9.2.app

    编辑:实际上似乎有用的是Xcode 9.2使用了来自Xcode 8.3.3的派生数据 . 不是解决方案,但至少它允许我继续我的工作 .

  • 0

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

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

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

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

  • 48

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

    enter image description here

  • 1

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

    Build Settings > Always Embed Swift Standard Libraries

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

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

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

    enter image description here

    国旗原名为 Embedded Content Contains Swift Code

  • 113

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

    我鼓励你在这里提到的Apple bug报告中记录这张票,因为Apple确实应该解决这个大错误:https://stackoverflow.com/a/41401354/559760

  • 0

    从以下位置更改目标的 Copy Pods Resources

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

    至:

    "${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
    
  • 6

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

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

    enter image description here

  • 25

    这些解决方案都不适合我 . 重启手机修好了 . 奇怪,但它的工作原理 .

  • 0

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

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

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

    enter image description here

    enter image description here

  • 0

    为了在设备中,您还需要将动态框架添加到项目的 General 选项卡中的 Embedded binaries 部分 .

    enter image description here

  • 27

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

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

  • 4

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

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

  • 5

    要添加到Enterprise分发证书解决方案:您可以打开Keychain并检查证书 . 如果有任何红色文字说信任链无法验证或被撤销,它将无法正常工作!在我的计算机上,即使门户网站显示它仍然有效,我们的分发证书也显示为已撤销 . 我们获得了一个新的分发证书,它在Keychain中是绿色(有效),这解决了这个问题 .

  • 0

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

    enter image description here

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

  • 2

    那里有很多答案,但可能是我的答案会帮助一些人 .

    我有同样的问题,我的应用程序在模拟器上工作正常,但在设备上崩溃,因为我推出应用程序,并给出如上所述的错误 . 我已经尝试了所有答案和解决方案 . 在我的案例中,我的项目我有多个目标 . 我已经从目标A创建了重复的目标B.目标B工作正常而目标A崩溃了 . 我为每个目标使用不同的Image资源 . 搜索并做谷歌后,我找到了一些可能对某人有帮助的东西 .

    当我更改两个应用的启动图像资源的名称时,应用程序停止崩溃 . 例如,目标A启动图像资产名称LaunchImage A.目标B午餐图像资产名称LaunchImage B并在每个目标的“常规”选项卡中正确分配 . 我的应用程序工作正常

  • 2

    我认为Apple已经在Swift app crashes when trying to reference Swift library libswiftCore.dylib下进行了总结

    引自 Technical Q&A 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
    

    构建存档和打包应用程序时需要新证书 . 即使您拥有其中一个新证书,只需重新签署现有的swift应用程序存档也行不通 . 如果它是使用iOS 8之前的证书构建的,则需要构建另一个存档 . 重要提示:如果您需要撤销并设置新的企业分发证书,请谨慎使用 . 如果您是内部企业开发人员,则需要注意不要撤销用于签署应用程序的分发证书,任何一个企业员工仍然使用该证书作为使用该企业分发证书签名的任何应用程序将立即停止工作 . 以上仅适用于企业分发证书 . 对于企业/标准iOS开发人员,可以安全地撤销开发证书 .

    作为AirSign的家伙state问题源于 In-House certificatesubject 字段中缺少的 OU 属性 .

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

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

  • 6

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

  • 0

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

  • 15

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

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

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

  • 1

    上述解决方案无效我 . 我通过以下步骤解决了这个问题:

    • 我不得不去手机(设置> Profiles )并删除手机中的 Profiles (包括与这些 Profiles /规定相关的所有应用) .

    • 之后,请确保在xcode中下载苹果规定 . 转到xcode设置>帐户,然后登录您的Apple开发者帐户 .

  • 4

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

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

    enter image description here

  • 4

    当Xcode要求您重置证书时,你 reset 它 . 该应用程序可以在实际设备上运行,而不会因错误消息而崩溃 . 一旦这个问题在一个快速项目中得到解决 . 其他有这个问题的快速项目也是固定的 .

    我已经为这些问题做了大约半天的努力,我发现在配置门户网站中一次又一次地重置证书并没有帮助 .

相关问题