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

时间:2014-09-24 18:40:24

标签: ios swift xcode dyld

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

我试过了

  • 重新启动Xcode,iPhone,电脑
  • 清洁&重建
  • 撤销和创建新证书/提供资料
  • 运行路径搜索路径为$(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

50 个答案:

答案 0 :(得分:529)

对我来说,以前的解决方案都没有奏效。我们发现有一个"始终嵌入Swift标准库"构建设置中的标志需要设置为YES。默认情况下是NO!

Build Settings > Always Embed Swift Standard Libraries

设置完成后,在重新构建之前清理项目。

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

  

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

enter image description here

该旗帜以前称为Embedded Content Contains Swift Code

答案 1 :(得分:130)

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

答案 2 :(得分:95)

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

@executable_path/Frameworks

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

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

答案 3 :(得分:59)

对于设备,您还需要将动态框架添加到项目Embedded binaries标签中的General部分。
enter image description here

答案 4 :(得分:56)

在Xcode 8中,var box1 = document.querySelector('.nav'); var startx = 0; var starty = 0; var dist = 0; var endx=0; var endy=0; box1.addEventListener('touchstart', function(e){ var touchobj = e.changedTouches[0]; startx = parseInt(touchobj.clientX); 选项的选项不再可用。

它已重命名为box1.addEventListener('touchmove', function(e){ e.preventDefault(); var touchobj = e.changedTouches[0]; endx = parseInt(touchobj.clientX); endy = parseInt(touchobj.clientY); let dist = endy - starty; window.scrollBy(0, dist); }, false); box1.addEventListener('touchend', function(e){ var touchobj = e.changedTouches[0]; endx = parseInt(touchobj.clientX); endy = parseInt(touchobj.clientY); }, false);

enter image description here

答案 5 :(得分: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]>双击您的团队名称>点击刷新按钮以更新证书和配置文件

答案 6 :(得分:25)

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

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

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

enter image description here enter image description here

答案 7 :(得分:22)

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

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

答案 8 :(得分:17)

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

enter image description here

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

答案 9 :(得分:16)

我认为Apple已在Swift app crashes when trying to reference Swift library libswiftCore.dylib

下对其进行了总结

引自技术Q& A QA1886

  

Swift应用程序在尝试引用Swift库时崩溃了   libswiftCore.dylib。

     

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

     

答:要解决此问题,您需要使用代码对应用进行签名   签署证书时,主题组织单位(OU)设置为   你的团队ID。所有企业和标准iOS开发人员证书   在iOS 8发布后创建的具有新的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,问题源于内部证书主题字段中缺少的 OU 属性>

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

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

答案 10 :(得分:10)

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

<强> P -> Build Phases -> Embed Frameworks -> + 即可。这对我有用。

enter image description here

答案 11 :(得分:7)

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

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

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

答案 12 :(得分:6)

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

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

为:

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

答案 13 :(得分:6)

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

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

答案 14 :(得分:6)

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

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

答案 15 :(得分:6)

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

答案 16 :(得分:6)

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

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

答案 17 :(得分:5)

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

答案 18 :(得分:4)

这些解决方案都不适合我。重启手机修好了。奇怪但它有效。

答案 19 :(得分:4)

对我而言,尝试过一切都没有成功,有效的方法是从@executable_path/Frameworks删除Packaging section(不知道它是如何在那里出现的)< / p>

enter image description here

答案 20 :(得分:4)

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

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

答案 21 :(得分:3)

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

我建议你在苹果错误报告中记录这张票,因为苹果真的应该解决这个大错误: https://stackoverflow.com/a/41401354/559760

答案 22 :(得分:2)

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

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

答案 23 :(得分:2)

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

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

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

答案 24 :(得分:2)

我们有一个统一的项目,可以创建一个xcode项目,其中包括使用swift的库。

我们在此线程上尝试了所有合理的建议。

没有任何效果。代码可以在新设备上正常运行,并在iOS <= 12

上崩溃

看来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)")

   }
}

为了统一起见,还请在创建xcode项目的后期处理中添加project.AddBuildProperty(target, "SWIFT_VERSION", "Swift 5");

答案 25 :(得分:2)

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

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

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

无论如何,即使它看起来不正确,它也将为我服务-我的应用只是我不打算分发的实用程序,至少现在可以运行!

答案 26 :(得分:1)

我在Xcode 8.3.2上。对我来说,问题是AppleWWDRCA证书是在系统和登录密钥链中。删除了两个,然后添加到登录钥匙串,现在它再次运行正常。失去2天

答案 27 :(得分:1)

我正在使用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的派生数据。不是解决方案,但至少它可以让我继续我的工作。

答案 28 :(得分:1)

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

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

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

通过重新下载WWDR (Apple Worldwide Developer Relations Certification Authority)来解决此问题。

答案 29 :(得分:1)

如果您遇到这样的错误:

  

无法加载捆绑包“ YourFrameworkTests”,因为   损坏或缺少必要的资源。尝试重新安装捆绑软件。   (dlopen_preflight(/ some / path /.../ YourFrameworkTests.xctest / YourFrameworkTests):   库未加载:@ rpath / SomeOther.framework / SomeOther引用   来自:/ some / path /...)

并在框架中使用 CocoaPods ,然后尝试编辑Podfile并从inherit! :search_paths目标中删除Test,然后运行pod install再次。

有关更多详细信息,请参见https://github.com/CocoaPods/CocoaPods/issues/8868

答案 30 :(得分:1)

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

答案 31 :(得分:0)

我测试了所有上述解决方案,但没有解决任何问题。 我正在使用Xcode 10.2和macOS 10.14.3。 首先,我为命令行工具安装了swift 5运行时支持,但未做任何更改 第二我将操作系统更新为10.14.4,没有任何改变 第三,我将Xcode更新为11.2.1,并解决了问题(不要使用Xcode 11.2,它有存档问题并已弃用)

答案 32 :(得分:0)

当我试图在私有Pod上运行单元测试时遇到了这个问题。

我做了所有人都建议的一切。没事。

我要做的就是在不同的模拟器上运行单元测试。

我没有尝试重置模拟器的内容和设置,也许效果不错¯_(ツ)_ /¯

答案 33 :(得分:0)

两年后遇到了同样的问题。我认为this post解释了我的原因(但可能不是这个问题的原因)。使用订阅的开发者帐户或静态库可能会有所帮助。就像删除use_frameworks!中的Podfile一样。

答案 34 :(得分:0)

就我而言,这是早期版本iOS13的错误。

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

坎巴拉

2020年3月25日上午12:41

仅供参考,此问题已在13.4版中修复

答案 35 :(得分:0)

在Xcode 11中对我有用的是转到General-> Frameworks,Libraries和Embedded Content,然后将所讨论的框架的“ Embed”选项更改为“ Embed&Sign”

Embed and Sign option

答案 36 :(得分:0)

我遇到了同样的问题

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

// MARK: - 核心数据栈

 lazy var persistentContainer: NSPersistentContainer = {
            /*
             The persistent container for the application. This implementation
             creates and returns a container, having loaded the store for the
             application to it. This property is optional since there are legitimate
             error conditions that could cause the creation of the store to fail.
            */
            let mom = NSManagedObjectModel.mergedModel(from: [Bundle(for: Self.self)])!
            
            let container = NSPersistentContainer(name: "Test", managedObjectModel: mom)
            container.loadPersistentStores(completionHandler: { (storeDescription, error) in
                if let error = error as NSError? {
                    // Replace this implementation with code to handle the error appropriately.
                    // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
                     
                    /*
                     Typical reasons for an error here include:
                     * The parent directory does not exist, cannot be created, or disallows writing.
                     * The persistent store is not accessible, due to permissions or data protection when the device is locked.
                     * The device is out of space.
                     * The store could not be migrated to the current model version.
                     Check the error message to determine what the actual problem was.
                     */
                    fatalError("Unresolved error \(error), \(error.userInfo)")
                }
            })
            return container
        }()

答案 37 :(得分:0)

我有同样的问题,问题是这样的:

dyld: Library not loaded: @rpath/Result.framework/Result Referenced from: /private/var/mobile/Containers/Bundle/Application/74AD1FE2-7095-47D2-B059-520863050EE2/ReactiveCocoaTest.app/Frameworks/ReactiveCocoa.framework/ReactiveCocoa Reason: image not found

我的解决方案如下:

TARGET - &gt; Build Setting - &gt; Other Linker Flag - &gt;删除ReactiveCocoa框架。如果是xxx.framework,您应该删除xxx

删除ReactiveCocoa

delete the ReactiveCocoa

答案 38 :(得分:0)

简而言之,您是否尝试过“启用Bitcode = NO”。这个对我有用。

就我而言,我的项目是用Object-C编写的,包括一个用swift编写的第三方框架。我可以在开发人员模式下在模拟器和真实设备上运行我的APP。但是,一旦我使用Ad-hoc配置文件获得APP并在真实设备上安装了这个ipa OTA,它就崩溃了。甚至没有提到上传到商店。希望这些信息可以提供帮助。

答案 39 :(得分:0)

如果你的项目有cocoapods和不同的方案,请尝试运行pod update,为我修复它。

答案 40 :(得分:0)

https://github.com/CocoaPods/cocoapods-integration-specs/pull/24/files的帖子中,这意味着swift.dylib需要签名但失败了。我甚至无法通过cocoapod支持创建一个新的快速项目。

答案 41 :(得分:0)

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

enter image description here

答案 42 :(得分:0)

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

我在这些问题上花费了大约半天时间,我发现在配置门户网站中一次又一次地重置证书并没有帮助。

答案 43 :(得分:0)

就我而言,

我已设置@executable_path/Frameworks

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

$(PROJECT_DIR)/Frameworks

更改为recursive

哪个适合我。

答案 44 :(得分:0)

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

答案 45 :(得分:0)

以上解决方案对我不起作用。 我通过以下步骤解决了这个问题:

  1. 我必须去手机(设置&gt;个人资料)并删除 手机中的个人资料(包括所有相关的应用) 这些简介/条款)。
  2. 在那之后,请确保你 在xcode中下载苹果规定。转到xcode设置&gt; 帐户并登录您的Apple开发者帐户。

答案 46 :(得分:0)

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

答案 47 :(得分:-1)

对我来说,解决方案如下 禁用“在产品包中嵌入资产包”,此问题将消失

enter image description here

答案 48 :(得分:-1)

按照这些步骤为我工作:

  • 点击您的项目名称(导航器的顶部)
  • 再次点击您的项目名称(不在目标上)
  • 单击选项卡构建设置
  • 搜索Runpath Search Paths

  • 将其值更改为$(继承)标志(删除@ executable_path / Frameworks)。

答案 49 :(得分:-1)

对于 Xcode 12.x,对我有用的是转到 General > Frameworks, Libraries, and Embedded Content。然后,选择嵌入并签署所有 Agora 框架。 (默认为不嵌入。

enter image description here

相关问题