Reason: no suitable image found

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/Stylist.app/Stylist
Reason: no suitable image found.  Did find:
/private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib'
(lldb)

I am getting this error when building on my iPhone. I am able to build on the simulator. I have redone all my provision files however I still can't build on my iPhone. My Xcode is like this

enter image description here

Is this a framework problem or a signing issue? This did not happen in Xcode 6. Thank you.

145481 次浏览

你可能没有正确的足弓,你可以做一个

file /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib

我不确定你是如何链接的,但它可能不是正确的方式(如果 libswiftcore 是一个工厂库,如果它是库的一些添加,那么它可能没有被正确编译)

关于这个问题我找了很久,有几个原因导致了这个问题。

如果您和 Swift 代码/库在 Objectice C 项目中遇到问题,您应该尝试使用解决方案1-2-3

如果您正面临这个问题与一个新的迅捷项目解决方案4将适合您的最佳。

解决方案1 :

重启 Xcode,然后是电脑和 iPhone

解决方案2 :

转到项目生成设置,并将 Embedded Content Contains Swift代码标志设置为 YES

解决方案3:

转到项目生成设置并将 @executable_path/Frameworks添加到 Runpath Search Path 选项

解决方案4:

如果上述方法都不管用,那么应该可以。苹果似乎是 AirSign 文章中提到的“忍者修补”证书

在 InHouse 的证书上

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR

他们添加了一个名为 OU的新字段

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

所以你应该重新创建证书和条款

我以前有过这样的问题,因为不小心吊销了我的证书。然后我所有的快速项目都有这个问题。有两种方法可以解决这个问题:

点击 Product & right tarrow; Clean (或者 CMD + Shift + K)

或者手动清除 Xcode 设置文件:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Caches/com.apple.dt.Xcode

删除衍生数据对我来说很有用。

通过 Xcode-> Preferences-> Locations-> 单击派生数据路径后面的箭头,删除 Finder 中的整个派生数据文件夹。

如果您不小心重置了您的密钥链,这可能是由于密钥链中缺少 Apple 证书造成的。我按照 这个上的答案来解决我的问题。

我有同样的问题,并能够通过重新下载 WWDR 来解决 (苹果全球开发者关系认证机构)。 从这里下载: < a href = “ http://developer.apple.com/certificate icationauthority/AppleWWDRcA.cer”> http://developer.apple.com/certificationauthority/applewwdrca.cer

我也有这个问题,然而我在上面和其他几篇文章中都没有尝试过,除了这个。

对于我来说,我更改了 bundle 标识符,因为对于分发和开发,我们有不同的 bundle ID。

我的硬件在这个条款中是允许的,我的团队帐户是有效的,但是它在其他一些框架中抛出了上面的错误。

结果我需要把旧版本的应用程序从我的手机上完全移除。而不是按照标准的方式删除。

解决方案:

  1. 确保目标电话连接上了
  2. 在 xcode 菜单中单击[ Window > Device ]
  3. 在左侧菜单中选择目标设备。
  4. 右边是设备中的应用程序列表。找到您试图测试的应用程序并删除它。

显然,在同一个团队中以不同的捆绑包 ID 安装同一个应用程序时,如果您没有完全从头开始,就会有一些对框架的引用混淆不清。

希望这对谁有帮助。

引自 技术问答 QA1886:

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

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

答: 为了纠正这个问题,您需要使用代码签名证书签署您的应用程序,并将主题组织单元(OU)设置为您的团队 ID。在 iOS8发布后创建的所有企业级和标准 iOS 开发人员证书在适当的位置都有新的 Team ID 字段,以允许 Swift 语言应用程序运行。

通常,此错误出现在设备的控制台日志中,其消息类似于下列消息之一: [ ... . ][ deni-mmap ]映射文件没有团队标识符,也不是平台二进制文件: /private/var/mobile/Container/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Framework/libift tCore.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

在构建存档和打包应用程序时,需要新的证书。即使你有一个新的证书,只是辞职现有的迅速应用程序档案不会工作。如果它是使用前 iOS8证书构建的,那么您将需要构建另一个归档文件。

重要提示: 如果需要撤销和设置新的企业分发证书,请谨慎使用。如果你是一个内部的企业级开发人员,你需要小心,不要撤销一个曾经用来签署应用程序的发行证书,因为你的任何一个企业员工仍然在使用的应用程序,已经签署了企业发行证书的应用程序将立即停止工作。以上仅适用于企业分销证书。对于企业/标准 iOS 开发人员来说,撤销开发证书是安全的。

正如 AirSign 的家伙们所说,问题的根源在于内部证书的主题字段中缺少 OU 属性。

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

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

Xcode->Product->Clean + Xcode Restart

在尝试了许多其他提到的解决方案之后,我做了一个 Xcode-> Product-> Clean 并重新启动 Xcode,这使我感到永远的尴尬。

对我来说,这个问题的出现是由于 WWRD 证书——我的是最新的,但出于某种原因,它被设置为“始终信任”,而不是“使用系统默认”,这显然有所不同。

当我通过 xcodebuild 和 xcrun PackageApplication 在命令行中构建应用程序时,使用企业概要文件对应用程序进行签名时,出现了这种情况。在我们的 CI 构建服务器上,证书被设置为密钥链中的“总是信任”(选择证书-> 获取信息-> 信任-> “使用系统默认值”可以更改为“总是信任”)。我不得不把它设置回“使用系统默认值”,以使这个工作。 最初,我们将其设置为“总是信任”,以解决软件更新和证书更新后出现的密钥链对话框。

我只是清理项目和 Clean Build Folder的替代产品菜单

下面的步骤成功地实现了。

1)在动态库中,安装名称必须是“@loader _ path”

2)在主要工程中,运行路径搜索路径必须是“@loader _ Path”和“@loader _ Path/Framework”

3)从 keychain used 视图—— > 显示过期证书并删除所有内容。

4)删除分发证书并重新安装。

5)下载 developer.apple.com/certificationauthority/applewwdrca.cer 及安装。

您可以重新生成证书并重新启动 iPhone。

这对我有用,我希望这能帮到你。

  1. 从设备中删除应用程序
  2. 清理项目(CMD + 换挡 + K)
  3. 在设备上构建/运行

我通过检查我的本地密钥链来解决这个问题

冒着引起更多混乱的风险,我在更新到 XC8时遇到了这个问题。

这些建议和其他线索都没有解决这个问题。真正起作用的是从“链接二进制与库”构建阶段、“目标依赖”构建阶段和“链接框架和库”常规设置中删除所有内容。

仅供参考,我正在使用 Carthage,并已将 $(PROJECT_DIR)/Carthage/Build/tvOS添加到 FRAMEWORK_SEARCH_PATHS构建设置中,以便能够找到我的框架。

FYI 2,这个项目和框架,是100% 快速的,并且框架正在构建 DEFINES_MODULE = YES

我最近遇到了这个问题。我尝试了所有可能的解决办法,但没有一个奏效。最后,我离开了 Xcode,删除了 keychain 中的证书,安装了所有新东西,重新启动了 mac。幸运的是,它像魅力一样起作用:)

我也有同样的问题,所以我可以通过重新下载 WWDR (Apple Worldwide Developer Relations Certification Authority)来解决。从 给你下载:

并在钥匙链中设置为 永远相信。切换到 Use System Default

对我有用,我希望这个能帮到你

在我的例子中,密钥链将证书显示为不受信任,为了解决这个问题,我将证书的信任选项设置为“总是信任”。将证书设置为“总是信任”是导致崩溃的主要原因。我无法将应用程序安装到设备中。通过将信任选项设置为“系统默认值”而不是“始终信任”解决了这个问题。这招对我很管用。

如果你在 Xamarin Studio 工作,并且你正在参考一个便携式图书馆,你需要为它做 PCL 诱饵和切换技巧,你会看到同样的症状。如果引用项目相对于引用库过期,则会发生此情况。我发现我已经将我的通用库更新到了一个更新的框架,更新了我的软件包,但是没有更新我的 iOS 软件包来匹配。更新包为我解决了这个错误。

您需要为项目中(直接或间接)链接的每个动态框架设置证书(只是证书而不是配置文件)enter image description here

在我的例子中,在删除所有由 Xcode 创建并下载的证书之后。让 xcode 8.1管理应用程序的认证,它工作得很好! ! ! 希望这个能帮到别人。

我只在模拟器上遇到过这个问题。它似乎与我们的应用程序中的一些无效的 Entitments 有关,但是当我们在设备上运行时,这个问题并没有出现。

我用这些把戏解决了。

第一步:

转到项目构建设置,并添加@Executive _ path/Framework 到 Runpath Search Path 选项

第二步:

转到目标构建设置,并添加@Executive _ path/Framework 到 Runpath Search Path 选项和 Framework Search Path。

enter image description here

第三步:

重新下载 WWDR (苹果全球开发者关系认证机构) ,设置为使用系统默认值作为选项。

第四步:

使用终端删除所有派生数据

Rm-rf ~/Library/Developer/Xcode/deriedData/*

第五步 :

删除所有证书并重新安装到钥匙链。我启用了使用系统默认选项。

第六步:

重启 Xcode。

面临同样的问题

  1. 我的开发人员证书过期了,所以创建了新的开发人员 证书及下载
  2. 清除并重新启动 xcode,这对我来说很有用

我在使用 XCode 9时遇到了这个问题。以上的方法都没有奏效。这个方法对我很有效:

Project > Build Settings > Swift Compiler - Search Path: Setting "Import Paths"$(PROJECT_DIR)(递归)

这解决了我的错误-

重新下载 WWDR (苹果全球开发者关系认证机构) ,设置为使用系统默认值作为选项。

在我的情况下,这是一个问题,我正在使用的豆荚之一。我最终移除了那个吊舱,并手动将其中的代码放入我的项目中。

enter image description here

我有一个类似的问题,其中详细信息作为第一个图像。

我的解决方案是将认证总是信任转换为使用系统默认值。 就像: enter image description here

enter image description here

您可能仍然得到这个问题后,尝试@结一虎答案。也许它看起来是固定的,但是如果它再次出现(可能在 xCode 9上)。

然而,这种变通方法似乎是有效的(适用于 Cocoapods 1.5.x) :

  1. 清理你的项目
  2. 关闭 Xcode 并删除衍生数据
  3. 在项目中打开 Podfile,并添加以下内容:

    Post _ install do | installer | Pods _ project. build _ configuration. each do | config | Build _ sets. delete (‘ CODE _ SIGING _ ALLOWED’) Build _ sets. delete (‘ CODE _ SIGING _ REQUIRED’) 结束 结束

  4. 分离舱更新

资料来源:

Https://github.com/evgenyneu/cosmos/issues/105

Https://github.com/skyscanner/skyfloatinglabeltextfield/issues/201#issuecomment-381915911

谢谢你@C édric

不管怎样,我在 XCode9.0.1中遇到了类似的错误。我尝试卸载和重新安装所有的证书,但当我重新安装时,他们似乎记得我以前的信任设置。对我来说,最终起作用的似乎是关闭“苹果全球开发者关系认证机构”的“始终信任”设置,然后重新启动。多么神秘的问题!