【问题标题】:dyld: Library not loaded: @rpath/libswiftCore.dylib on Xcode 9 onlydyld:库未加载:@rpath/libswiftCore.dylib 仅适用于 Xcode 9
【发布时间】:2018-03-04 13:07:09
【问题描述】:

我最近从 8.3.3 升级到 Xcode 9。

我们的项目和我们使用的所有其他框架一样都是用 Objective-C 编写的。我添加了一个用 Swift(3.0 版)编写的框架。在 Xcode 8 中,我能够在模拟器和设备上毫无问题地构建和运行项目。在 Xcode 9 中,由于错误,我无法在模拟器或设备上运行项目:

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: .../libraryname
Reason: image not found

降级后,我能够再次运行该项目。

我的配置有:

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
STRIP_SWIFT_SYMBOLS = NO;
SWIFT_VERSION = 3.0;

【问题讨论】:

  • 将您的框架添加到选择目标 -> 常规 -> 嵌入式二进制文件
  • 该库在 Embedded Binaries 和 Linked Frameworks and Libraries 中链接。
  • 有完全相同的问题。有兴趣寻找解决方案。

标签: ios objective-c swift3 xcode9


【解决方案1】:

只需清理并构建即可解决此问题。在 Xcode 9.2 和 Swift 4 中测试

【讨论】:

    【解决方案2】:

    在与这个错误斗争了几个小时并尝试了各种解决方案之后,我的解决方案与这里的其他解决方案不同,所以我将它添加给其他可能受益的人。

    我试过了: - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES - LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks

    运气不好。原来这个问题更基本。我的项目有多个构建目标,并且主机应用程序的设置以某种方式未设置。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题(在 Xcode 9.4.1 上),但在任何帮助下都无法解决。我遇到了一个问题,Xcode 不断提示我使用我的钥匙串,但无法完成请求——尽管我提供了密码。该应用程序已成功构建并安装。但是,它在设备上运行时立即崩溃。

      这就是解决我的问题的方法。

      • 删除了我的证书和公钥/私钥对
      • 创建了新证书(通过 CSR)并将其安装在我的计算机上
      • 将新证书链接到配置文件并在 Xcode 上安装配置文件
      • 清理了构建并删除了设备上的现有构建
      • 万岁!!!

      希望这对正在地球上搜索的人有所帮助!

      【讨论】:

        【解决方案4】:

        这主要发生在您的证书信任设置设置为“始终信任”时。将其更改为“系统默认值”并重新创建构建。这应该可以解决问题:https://egeek.me/2017/10/21/code-signing-blocked-mmap-on-ios-device/

        【讨论】:

          【解决方案5】:

          尝试重新启动 Xcode。我尝试了其他所有方法,这就是停止问题的原因。

          【讨论】:

            【解决方案6】:

            遇到了同样的问题。我正在使用 Xcode 9.2、Swift 4 并且我的设备在 iOS 11.1 中运行。

            解决办法:

            我在 Keychain Access 中删除了 Apple Worldwide Developer Relations 证书颁发机构并替换为新的(您可以下载certificate here

            之后,我将“信任”(双击证书)从“始终信任”更改为“系统默认”。

            【讨论】:

            • 试过了,这并没有解决问题。
            【解决方案7】:

            您是否正在使用 Carthage 并且您的机器上有多个 XCode_s?我最近跑步时遇到了问题 carthage update --use-ssh --platform iOS 在命令行中选择了 xcode8.3.3。然后将构建的框架包含到构建中。

            要让它在 XCode9 中工作,你需要运行 switch 命令 sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer 用于您的 Xcode.app 并再次运行 carthage。

            希望对你有帮助。

            【讨论】:

              【解决方案8】:

              必须使用与您的项目相同的 Swift 版本构建 Swift 框架(在本例中,Swift 4 继承自您升级并通过 Xcode 9 运行)。

              用新版本重建并重新添加/替换框架,它应该可以工作。

              【讨论】:

                猜你喜欢
                • 2016-05-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-11-24
                • 2019-08-19
                相关资源
                最近更新 更多