原因:找不到合适的图像[关闭]

问题描述 投票:111回答:31
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) 

在iPhone上构建时出现此错误。我能够在模拟器上构建。我重做了所有的配置文件,但是我仍然无法在我的iPhone上构建。我的Xcode是这样的

enter image description here

这是框架问题还是签名问题?这在Xcode 6中没有发生。谢谢。

ios iphone xcode dyld
31个回答
368
投票

我之前有这个问题意外撤销了我的证书。然后我所有的快速项目都有这个问题。有两种方法可以解决这个问题:

点击产品 - >清洁(或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

我不知道为什么。祝你好运,看看它是否有帮助。


1
投票

我也有这个问题,但是我上面没有尝试过,在其他几个帖子中也没有用过......除此之外。

对我来说,我更改了包标识符,因为我们有一个不同的包ID用于分发与开发。

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

事实证明,我需要完全从手机中删除旧版本的应用程序。而不只是以标准方式删除它。

方案:

  1. 确保目标手机已连接
  2. 从xcode菜单中单击[Window> Devices]
  3. 在左侧菜单中选择目标设备。
  4. 右侧是设备中的应用程序列表。找到您尝试测试并删除它的应用程序。

显然,在同一个团队下使用不同的捆绑ID安装相同的应用程序,如果您不是从头开始,那么有一些框架的参考会变得混乱。

希望这有助于某人。


1
投票

我刚刚通过alt产品菜单清理了项目和Clean Build Folder


1
投票

以下步骤成功完成。

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

2)在主项目中,Runpath搜索路径必须是“@loader_path”和“@ loader_path / Frameworks”

3)从钥匙串使用的视图 - >显示过期的证书并删除所有内容。

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

5)下载developer.apple.com/certificationauthority/AppleWWDRCA.cer并安装。


1
投票

引自Technical Q&A QA1886

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

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

答:要解决此问题,您需要使用代码签名证书对您的应用进行签名,并将主题组织单位(OU)设置为您的团队ID。发布iOS 8之后创建的所有Enterprise和标准iOS开发人员证书都在适当的位置使用新的Team ID字段以允许Swift语言应用程序运行。

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

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


1
投票

经过@Jieyi Hu回答,你可能仍会遇到这个问题。可能它似乎是固定的,但如果它再来(可能在xCode 9)。

但是,此解决方法似乎有效(适用于Cocoapods 1.5.x):

  1. 清理你的项目
  2. 关闭Xcode并删除DerivedData
  3. 在项目中打开Podfile,并添加: post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings.delete('CODE_SIGNING_ALLOWED') config.build_settings.delete('CODE_SIGNING_REQUIRED') end end
  4. pod更新

资料来源:

https://github.com/evgenyneu/Cosmos/issues/105

https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911

谢谢@Cédric


0
投票

你可能没有在那个lib中使用正确的拱门,你可以做一个

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

并且它应该向你显示该库中的arch ...我不确定你是如何链接的,但它可能不是正确的方法(如果libswiftcore是一个工厂库,如果它是一些添加到库然后它可能是没有正确编译)


0
投票

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

这项工作对我来说,我希望这对你有所帮助。


0
投票

我通过检查我的本地keychains来解决问题.Keep login.keychain拥有正确的证书


0
投票

我最近遇到了这个问题。我尝试了所有可能的解决方案,但没有任最后我退出了Xcode,删除了钥匙串中的证书并安装了所有新鲜的并重新启动了mac。幸运的是它像魅力一样工作:)


0
投票

我有同样的问题,并能够通过重新下载WWDR (Apple Worldwide Developer Relations Certification Authority)来解决。从here下载:

并在钥匙串中设置为始终信任。换到Use System Default

它适合我,我希望这能帮助你


26
投票
Xcode->Product->Clean + Xcode Restart

在尝试了许多其他提到的解决方案后,对我永远的尴尬,做Xcode-> Product-> Clean并重新启动Xcode,就可以了。


0
投票

在我的情况下,钥匙串显示证书是不可信的,为了解决这个问题,我已将证书的信任选项设置为“始终信任”。将证书设置为“始终信任”是崩溃的主要原因。我无法将应用程序安装到设备中。通过将信任选项设置为“系统默认值”而不是“始终信任”来解决此问题。它对我有用。


0
投票

如果您在Xamarin Studio中工作,并且您正在引用一个便携式库,您需要为其执行PCL诱饵和切换技巧,您会看到相同的症状。如果引用项目相对于引用的库已过期,则会发生这种情况。我发现我已经将我的公共库更新为更新的框架,更新了我的软件包,但没有更新我的iOS软件包以匹配。更新包为我解决了这个错误。


0
投票

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


0
投票

在我的情况下,删除Xcode创建并下载的所有认证后。让xcode 8.1管理app的认证,效果很好!希望这可以帮助别人。


0
投票

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


0
投票

我用这些技巧解决了。

步骤1:

转到项目构建设置并将@ executable_path / Frameworks添加到Runpath搜索路径选项

第2步:

转到目标构建设置并将@ executable_path / Frameworks添加到Runpath搜索路径选项和框架搜索路径。

enter image description here

第3步:

重新下载WWDR(Apple Worldwide Developer Relations Certification Authority),将“使用系统默认值”设置为选项。

第4步:

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

rm -rf~ / Library / Developer / Xcode / DerivedData / *

第5步:

删除所有证书并将其重新安装到Keychain。我启用了“使用系统默认”选项。

第6步:

重启Xcode。


0
投票

面临同样的问题

  1. 我的开发人员证书已过期,因此创建了新的开发人员证书并下载
  2. 清理并重新启动xcode这对我有用

0
投票

我用XCode 9遇到了这个问题。以上都没有解决。这对我有用:

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


0
投票

这解决了我的错误 -

重新下载WWDR(Apple Worldwide Developer Relations Certification Authority),将“使用系统默认值”设置为选项。


0
投票

在我的情况下,这是我正在使用的一个pod的问题。我最终删除了该pod并将其中的代码手动放入我的项目中。


25
投票

我在这个问题上搜索得很久。导致此问题的原因有多种。

如果您在Objective C项目中遇到Swift代码/库,则应该尝试解决方案1-2-3

如果您在使用新的Swift项目时遇到此问题,解决方案4将最适合您。

解决方案1:

重启Xcode,然后重启电脑和iPhone

解决方案2:

转到项目构建设置并将Embedded Content Contains Swift Code标志设置为YES

解决方案3:

转到项目构建设置并将@executable_path/Frameworks添加到Runpath搜索路径选项

解决方案4:

如果以上都不起作用,这应该。如AirSign的帖子所述,Apple似乎是忍者修补证书

在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

所以你应该重新创建证书和配置


0
投票

enter image description here

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

我的解决方案是切换认证始终信任使用系统默认值。就像:enter image description here enter image description here


18
投票

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


15
投票

如果您不小心重置了钥匙串,可能会因钥匙串中缺少Apple证书而发生这种情况。我按照this的回答来解决我的问题。

我有同样的问题,并能够通过重新下载WWDR(Apple全球开发者关系认证中心)来解决。从这里下载:http://developer.apple.com/certificationauthority/AppleWWDRCA.cer


11
投票

删除DerivedData对我来说很有用。

是通过Xcode - > Preferences - > Locations - >点击了DerivedData路径后面的箭头,并删除了Finder中的整个DerivedData文件夹。


5
投票

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


2
投票

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

这些建议和任何其他线程都没有解决它。 DID的工作原理是从“Link Binary with Libraries”构建阶段,“Target Dependencies”构建阶段以及“Linked Frameworks and Libraries”常规设置中删除所有内容。

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

仅供参考2,这个项目和框架,100%迅速,框架正在建设DEFINES_MODULE = YES


2
投票
  1. 从设备中删除应用程序
  2. 清理项目(CMD + SHIFT + K)
  3. 在设备上构建/运行
© www.soinside.com 2019 - 2024. All rights reserved.