dyld:Library未加载:@ rpath / libswiftCore.dylib
我正在尝试在iPhone 4上运行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
对于我以前的解决方案没有工作。 我们发现Build Settings中有一个“Embedded Content Contains Swift Code”标志需要设置为YES。 这是默认的NO!
设置完成后,在再次构建之前清理项目。
敏锐的读者一些解释最重要的部分是:
请在您的应用中将嵌入式内容包含Swift代码(EMBEDDED_CONTENT_CONTAINS_SWIFT)构建设置设置为YES,如图2所示。此构建设置指定目标产品是否嵌入了带有Swift代码的内容,它告诉Xcode将Swift标准库嵌入到您的应用中当设置为YES时。
当我删除时,我开始得到这个错误:
@executable_path/Frameworks
从我的生成设置中的运行Runpath Search Paths
。 替换它再次固定一切(感谢善良的源代码管理!)
我不知道它是如何到达那里,但它似乎是一个二进制文件找到它的嵌入式Swift运行时所需要的。
令人惊讶的是,我所做的只是“清理”我的项目 (shift + cmd + K),它工作。 虽然似乎与证书有关。
对于设备,还需要将动态框架添加到项目的“ General
选项卡中的“ Embedded binaries
部分。
我认为这是一个错误,直接从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 8+
从XCode8嵌入式内容包含Swift代码选项不再可用将需要更改"Always Embed Swift Standard Libraries = YES"
好的,在这里分享这个错误的另一个原因。 我花了几个小时来解决这个问题。
在我的情况下,我的证书在Keychain Access中的信任策略是Always Trust ,把它改回默认值解决了这个问题。
为了打开证书设置窗口,双击证书钥匙链访问列表中的证书。
我有这个问题运行我的Swift测试(但不是我的应用程序)。 事实证明,测试需要在其Runpath Search Paths
构建测试目标的设置中包含@executable_path/Frameworks
。 将运行路径搜索路径设置为以下对我来说很有帮助:
$(inherited) @executable_path/Frameworks @loader_path/Frameworks
我认为苹果已经在Swift应用程序崩溃时总结了它, 当试图引用Swift库libswiftCore.dylib
引用自技术问答QA1886 :
当试图引用Swift库libswiftCore.dylib时,Swift应用程序崩溃。
问:当我尝试运行Swift语言应用程序时,我的设备控制台中的libswiftCore.dylib加载错误怎么办?
答:要解决此问题,您需要使用代码签名证书为主题组织单位(OU)设置您的团队ID来签署您的应用程序。 在iOS 8发布之后创建的所有企业级和标准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的员工在内部证书的主题字段中声明缺失OU属性的问题所在。
主题:UID = 269J2W3P2L,CN = iPhone分布:公司名称, OU = 269J2W3P2L ,O =公司名称,C = FR
我有一个企业发展证书,创建一个新的解决了这个问题。
您必须将Runpath Search Paths
设置为@executable_path/Frameworks
如下面的构建设置屏幕截图所示:
如果您在Swift中创建了任何嵌入式框架,您可以将其设置为YES
则Embedded Content Contains Swift Code
。
让我们项目P导入自定义库L,那么你必须添加L到
P -> Build Phases -> Embed Frameworks -> +
。 这对我行得通。
移动到一个新的mac后,我遇到了同样的问题,几个小时后,尝试在问题中提出的所有答案,这一切都为我工作。
我的解决方案是安装这个缺少的证书。 http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
从以下位置更改目标的复制副本资源 :
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"
至:
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
在试了一切之后,我终于发现,构建似乎并不总是包含每一个细节一次又一次。 也许是为了加快这个过程…为了确保在设备上运行之前进行整体打包,请首先进行Clean:Shift-Cmd-K。 然后用:Cmd-B构建。 之后,在您的设备上运行它。 简单。 亲切的问候你在那个地方所有的好人!
对于我来说,尝试一切都没有成功,有什么工作是从Packaging section
删除@executable_path/Frameworks
(不知道它是如何在那里摆在首位)
没有解决方案为我工作。 重新启动手机固定它。 奇怪,但它的工作。
我通过删除派生的数据解决,这一次它正常工作。 试过Xcode 7.3.1GM
就我而言,这只是我的目标的名字:
我把它重命名为: MyApp.something和同样的问题出现了。 但是我在构建设置窗口中看到,我的产品模块名称已经改变,就像这个MyApp一样。 所以,我删除了我的目标名称( MyAppSomething )中的点,问题就没有了。
这些解决方案似乎没有任何工作,但是当我将世界范围的开发人员证书的权限更改为Use System defaults
然后它的工作。 我在下面的链接中包含了步骤和屏幕截图
我会鼓励你在苹果bug报告中记录这张票据,因为苹果真的应该解决这个巨大的错误: https : //stackoverflow.com/a/41401354/559760
有很多答案,但可能是我的答案将有助于一些。
我有同样的问题,我的应用程序在模拟器上工作正常,但在设备崩溃,因为我Lunches应用程序,并给出错误如上。 我尝试了所有的答案和解决方案。 在我的案例中,我的项目我有多个目标。我从目标A创建了重复的目标B.目标B正常工作,而目标A崩溃。 我为每个目标使用不同的图像资产。 搜索和谷歌搜索后,我找到了可能有助于某人的东西。
当我更改两个应用程序的启动图像资产的名称时,应用程序停止崩溃。 例如Target A Launch Image资产名称LaunchImage A。 目标B午餐图像资产名称LaunchImage B并在每个目标的“常规”选项卡中正确分配。 我的应用工作正常。
Xcode 7.2,iOS 9.2在一个设备上,其他9.0。 两者都有错误。 不知道是什么原因造成的,但是WWDR的解决方案对我来说是正确的。 安装证书和问题解决。
https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846
要添加到企业分发证书解决方案:您可以打开钥匙串并检查证书。 如果有任何红色的文字表示信任链不能被验证或被撤销,它将无法工作! 在我的电脑上,即使门户网站显示它仍然有效,我们的发行证书也显示为已撤销。 我们得到了一个新的发行证书,这个发行证是绿色的(有效的)钥匙链,这就解决了这个问题。
以下这些步骤为我工作:
- 点击你的项目名称(导航器的顶部)
- 再次点击你的项目名称,(不是目标)
- 单击选项卡生成设置
-
搜索
Runpath Search Paths
-
将其值更改为$(继承)标志(删除@ executable_path / Frameworks)。
上述解决方案不适合我。 我通过以下步骤解决了这个问题:
- 我必须去电话(设置>配置文件),并删除手机中的配置文件(包括与这些配置文件/规定相关的所有应用程序)。
- 之后,请确保您在xcode中下载苹果规定。 转到xcode设置>帐户并登录到您的苹果开发者帐户。
我正在使用Xcode 7.2。 如果您尝试了上述所有操作,并且错误仍然存在,请尝试从Keychain Access中删除旧证书! 终于解决这个问题真是太痛苦了
就我而言,
我已经设置了@executable_path/Frameworks
但是我也必须设置“框架搜索路径”
$(PROJECT_DIR)/Frameworks
更改为recursive
哪个适合我。
当Xcode要求您重置证书时,请重置它。 而且该应用程序可以运行在实际的设备上,而不会崩溃与该错误消息。 一旦这个问题在一个快捷项目中得到解决。 其他有这个问题的快捷项目也是固定的。
我已经为这些工作半天挣扎了,而且我发现在配置门户中一次又一次地重新设置证书并没有帮助。
我有多个版本的Xcode同时安装。 该框架是用更新版本的Xcode构建的。 我试图编译的应用程序是使用旧版本的Xcode。 当我使用相同版本的Xcode清理和编译框架和应用程序时,事情就起作用了。
就我而言,我的一个测试目标是工作,但另一个不是。 这是给一个缺少的库或其他任何上述错误。 我比较了这两个测试目标的设置,发现其中一个缺少“测试主机”的配置,所以我从工作测试目标中复制了它,并修复了我的破坏测试目标!
从https://github.com/CocoaPods/cocoapods-integration-specs/pull/24/files的帖子,这意味着swift.dylib需要登录,但失败。; 我甚至用cocoapod支持创建了一个新的swift项目。