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

我正在试着在我的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
250156 次浏览
对于设备,您还需要将动态框架添加到项目的General选项卡的Embedded binaries部分 enter image description here < / p >

对我来说,之前的解决方案都没用。我们发现在构建设置中有一个“总是嵌入Swift标准库”的标志,需要设置为YES。默认是NO !

Build Settings > Always Embed Swift Standard Libraries

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

给热心的读者一些解释 最重要的部分是:

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

enter image description here

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

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

  1. 去管理证书的苹果开发者网站: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 >首选项>帐户>[你的苹果ID] >双击你的团队名>点击刷新按钮更新证书和配置文件

我开始得到这个错误时,我删除:

@executable_path/Frameworks

Runpath Search Paths在我的构建设置。替换它使一切重新恢复正常(感谢源代码控制!)

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

对我来说,它只是我目标的名字:

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

好的,在这里分享这个错误的另一个原因。我花了几个小时才弄明白。

在我的情况下,我的证书在钥匙串访问的信任策略是永远的信任,将其更改回默认值解决了问题。

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

enter image description here enter image description here

我认为苹果已经在当试图引用Swift库libswiftCore.dylib时,Swift应用程序崩溃下总结了它

引自技术问题:

Swift应用程序崩溃时试图引用Swift库 libswiftCore.dylib . < / p >

问:关于libswiftCore我能做什么?的Dylib加载错误 当我试图运行Swift语言应用程序时,设备的控制台发生了什么?< / p > A:要纠正这个问题,你需要使用代码为你的应用程序签名 签名主题组织单元(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人状态的问题根源于内部证书主题字段中缺少属性。

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

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

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

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

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

enter image description here

要添加到企业分发证书解决方案:您可以打开Keychain并检查证书,如果有任何红色文本表示信任链无法验证或正在撤销,那么它将不起作用!在我的电脑上,我们的分发证书显示为已撤销,尽管门户网站显示它仍然有效。我们获得了一个新的分发证书,在Keychain中是绿色的(有效的),这解决了这个问题。

换了新mac后,我也遇到了同样的问题,几个小时后,我尝试了问题中所有建议的答案,但没有一个对我有效。

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

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

下面这些步骤对我很有效:

  • 单击项目名称(在导航器的最上方)
  • 再次点击你的项目名称,(不是目标)
  • 单击“生成设置”选项卡
  • 搜索Runpath Search Paths

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

在尝试了所有的东西之后,我终于发现,构建似乎并不总是一次又一次地包括每个细节。也许是为了加快进程…… 为了确保在设备上运行前包装完整,请先进行清洁:Shift-Cmd-K。 然后使用Cmd-B构建。 然后在你的设备上运行它。 一件容易的事。 向你们所有在那个地方的好人致以亲切的问候!< / p >
以上的解决方案对我没用。 我通过以下步骤修复这个问题:

  1. 我不得不去电话(设置>配置文件)和删除 手机中的配置文件(包括所有相关的应用程序)
  2. 在那之后,确保你 在xcode中下载苹果的条款。进入xcode设置>

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

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

:

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

没有一个解决方案对我有效。重启手机解决了这个问题。这很奇怪,但很有效。

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

https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846 < / p >

令人惊讶的是,我所做的只是“清理”我的项目 (shift+cmd+K),它工作了。但似乎和证书有关。

我使用的是Xcode 7.2。如果您尝试了以上所有方法,但错误仍然发生,请尝试从密钥链访问中删除旧证书!好不容易才解决这个问题。

就我而言,

我已经设置了@executable_path/Frameworks

但是我还要设置框架搜索路径

$(PROJECT_DIR)/Frameworks

更改为recursive

这对我来说很管用。

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

enter image description here

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

当Xcode要求你重置certs时,你重置它。应用程序可以在实际设备上运行,而不会因错误消息而崩溃。一旦在一个swift项目中解决了这个问题。其他swift项目也解决了这个问题。

我已经为此奋斗了大约半天,我发现在配置门户中一次又一次地重置certs并没有帮助。

假设项目P正在导入自定义库L,那么必须将L添加进去

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

enter image description here

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

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

在我的例子中,我的一个测试目标是工作的,但另一个不是。它给出了上面的错误与一个丢失的库或其他。我比较了两个测试目标的设置,发现其中一个缺少“测试主机”的配置,所以我从工作测试目标中复制了它,它修复了我破碎的测试目标!

enter image description here

https://github.com/CocoaPods/cocoapods-integration-specs/pull/24/files的帖子,这意味着迅速。Dylib需要签名,但失败了。我甚至没有在cocoapod的支持下创建一个新的swift项目。

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

简单地说,你有没有试着检查“启用Bitcode=NO”。这对我很管用。

以我为例,我的项目是用Object-C编写的,包括一个用swift编写的第三方框架。我可以在模拟器和真实设备上以开发者模式运行我的应用程序。然而,一旦我实现了Ad-hoc provision profile的APP,并在真实设备上安装了这个ipa OTA,它就崩溃了。更不用说上传到存储了。希望这些信息能有所帮助。

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

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

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

它说通过重新下载WWDR(苹果全球开发者关系认证机构)来修复此问题。

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

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

enter image description here

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

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 -> Build Setting -> Other Linker Flag ->中删除ReactiveCocoa框架。如果是xxx.framework,你应该删除xxx

删除ReactiveCocoa

delete the ReactiveCocoa

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

我鼓励你在苹果漏洞报告中记录这个错误,因为苹果真的应该解决这个巨大的错误: https://stackoverflow.com/a/41401354/559760 < / p >

有很多答案,但我的答案可能会帮助别人。

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

当我改变两个应用程序的启动图像资产的名称时,应用程序停止崩溃。例如,目标A启动映像资产名称LaunchImage A。目标B午餐映像资产名称LaunchImage B,并在每个目标的General Tab中正确分配。我的应用程序运行良好。

我使用的是Xcode 8.3.2。对我来说,问题是AppleWWDRCA证书同时存在于系统和登录钥匙串中。删除了这两个,然后添加到只是登录钥匙链,现在它再次运行良好。2天损失😭

当升级Xcode(并随后升级到新版本的Swift)时,如果你的项目使用了用旧版本/以前版本的Swift构建/编译的框架,也会导致此错误消息。

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

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

enter image description here

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

——打印路径

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

编辑:实际上,Xcode 9.2使用了来自Xcode 8.3.3的派生数据,这似乎对这里有所帮助。不是解决办法,但至少能让我继续工作。

最容易被忽视的方式:清理和重建。

这解决了问题后,尝试以上的答案,并没有工作。

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

/应用程序/ xcode /内容/ /开发/工具链/ XcodeDefault.xctoolchain / usr / lib /快速/ macosx /

这样做确实会在运行时给出一个警告,说Xcode已经找到了两个版本的libswiftCore——这是有道理的。除了没有包含这一行导致Xcode找不到任何版本的libswiftCore。

无论如何,这将为我做,即使它似乎不正确-我的应用程序只是一个实用工具,我不打算分发,至少它现在运行!

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

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

如果你得到一个这样的错误:

bundle "YourFrameworkTests"无法加载,因为它已经加载了 损坏或缺少必要的资源。尝试重新安装bundle。 (dlopen_preflight(/一些/道路/…/ YourFrameworkTests.xctest / YourFrameworkTests): 库未加载:@rpath/SomeOther.framework/SomeOther引用 来自:/一些/道路/…)< / p >

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

更多细节,参见https://github.com/CocoaPods/CocoaPods/issues/8868

我测试了上面所有的解决方案,但没有一个解决问题。 我使用的是Xcode 10.2和macOS 10.14.3。 首先,我安装了swift 5对命令行工具的运行时支持,但没有任何变化 第二,我将操作系统更新到10.14.4,没有任何变化 第三,我把Xcode更新到11.2.1,问题解决了(不使用Xcode 11.2。它有存档问题,已弃用)

我在试图在一个私人pod上运行单元测试时遇到了这个问题。

每个人建议的我都做了。毫无效果。

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

我没有尝试重置模拟器的内容和设置,也许这也可以¯_()_/¯

两年后还是一样的问题。我认为这篇文章解释了我得到的原因(但可能不是这个问题的原因)。使用订阅的开发人员帐户或静态库可能会有所帮助。比如在你的Podfile中删除use_frameworks!

在我的情况下,这是一个错误的早期版本iOS13。

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

kambala

2020年3月25日上午12:41

供您参考,这个问题在13.4版本中得到了修复

我们有一个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)")


}
}

对于unity,也添加project.AddBuildProperty(target, "SWIFT_VERSION", "Swift 5");到你的后期处理,以创建xcode项目。

在Xcode 11中对我有用的是进入通用->框架,库和嵌入式内容,并将框架的“嵌入”选项更改为“嵌入&签署“

Embed and Sign option .

对于Xcode 12。x,对我有用的是去General >框架、库和嵌入式内容。然后,选择Embed &签署所有Agora框架。(默认为不嵌入。

enter image description here

我也有同样的问题

有很多答案,但我的答案可能会帮助别人。

// 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
}()

Xcode 13这里(13.1 react-native)。

创建一个干净的react-native项目,并将/usr/lib/swift作为跑道搜寻路径中的一个条目。

enter image description here

在添加了这些之后,我的项目最终没有崩溃!

以前的建议无济于事。

我在Xcode 13, iOS 12 mobile中也得到了完全相同的错误。

这里我的项目部署信息为12.0,但我的iOS 15.0中的框架部署信息

我已经更改了框架部署信息到12.0

结论:

这意味着框架和项目支持的版本问题。我们需要在创建框架后修复框架最低支持版本

对我来说,以上的方法都没用。

我通过在我的项目中创建空的迅速文件来设法摆脱这个问题。在那之后,做一个干净的构建,一切都正常工作!

希望这能帮助到其他人。

测试在iOS 15 &React Native 0.66

对我来说什么都没用,然后我做了下面这些步骤:

  1. 我从podfile中删除了flipper的使用。在我看来是这样的:

    use_flipper !({' fliper - folly ' =>'2.5.3', 'Flipper' =>'0.87.0', 'Flipper-RSocket' =>1.3.1的})

  2. 我在我的项目中添加了一个swift文件来创建一个桥接头。

我试着把所有的答案都看一遍。(可能漏掉了一些) 但这是我的解决方案。可能对某人有帮助。 我刚刚在我的项目中创建了一个swift文件(void.swift)。当我添加这个文件时,它要求我创建一个桥接。我答应了。这是所有!它开始起作用了。 背景:我的项目是写在obj c.和我添加了FBSDK pods到我的项目。之后,我开始得到这个错误。

我在Xcode 13+上创建版本时也遇到了同样的问题。不得不把时间浪费在解决这个问题上。最后,我能够解决以下步骤的问题。

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

/usr/lib/swift

enter image description here

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

对我来说,我忘记在Podfile中添加下面的target 'Runner' do两行代码

target 'Runner' do
use_frameworks!
use_modular_headers!
end

添加这些代码解决了,希望对你有所帮助!