【问题标题】:dyld: Library not loaded. Reason : no suitable image founddyld:库未加载。原因:没有找到合适的图片
【发布时间】:2015-01-22 20:18:20
【问题描述】:

我在这里查看了很多答案,但没有一个能解决我的问题。

我有一个带有自定义框架和一个 iOS 应用项目的 Xcode 工作区。该项目一直运行良好,直到今天早上,现在它构建但立即崩溃:

dyld: Library not loaded: @rpath/ONCKit.framework/ONCKit
  Referenced from: /private/var/mobile/Containers/Bundle/Application/4DF67A3F-6255-4276-8812-8C742A363995/atero_t.app/atero_t
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/4DF67A3F-6255-4276-8812-8C742A363995/atero_t.app/Frameworks/ONCKit.framework/ONCKit: mmap() error 1 at address=0x100118000, size=0x000B8000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/4DF67A3F-6255-4276-8812-8C742A363995/atero_t.app/Frameworks/ONCKit.framework/ONCKit
    /private/var/mobile/Containers/Bundle/Application/4DF67A3F-6255-4276-8812-8C742A363995/atero_t.app/Frameworks/ONCKit.framework/ONCKit: mmap() error 1 at address=0x100280000, size=0x000B8000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/4DF67A3F-6255-4276-8812-8C742A363995/atero_t.app/Frameworks/ONCKit.framework/ONCKit

我整天都在尝试构建设置,但我完全迷失了。

【问题讨论】:

    标签: xcode cocoa frameworks dylib codesign


    【解决方案1】:

    我今天遇到了这个问题,并以同样的方式解决了它。撤销和重新生成代码签名解决了这个问题。但是要阐明其中的“为什么”部分。

    Apple 继续更改证书内容。更准确地说,它在主题下添加了一个新的“OU”(组织单位)字段。通过撤销和重新生成代码签名,它添加了缺失的字段,问题就消失了。

    【讨论】:

    • 这个OU字段是在哪个部分添加的?在 Issuer 中还是在 Subject 中??你能指出来吗?
    • 修改了答案以更清晰。 OU 是可以在主题部分下找到的组织单位。
    【解决方案2】:

    仅针对像我这样最近遇到此问题并想知道在何处以及如何准确撤消哪个代码签名实体(位于首选项>帐户中)的任何其他人:

    早上对我来说一切都很好。我在其他地方读到了有关重新启动的信息。因此,在进行另一个冗长的签名身份供应配置文件会话之前,我刚刚重新启动了我的机器。显然,无需任何进一步的努力就可以解决它。

    OS X 10.11.4 上的 Swift、Xcode 7.3。

    【讨论】:

      【解决方案3】:

      如果这对任何人都有帮助,我一直在网上找到的解决方案都没有为我工作。拉了我的头发 2 天,并尝试了一切。我撤销了内部证书、新的配置文件、将文件添加到嵌入式等。

      直到我注意到在钥匙串访问中我的 Apple WWDR 和 iOS 分发证书被设置为 "Always Trust" 而不是“使用系统默认值”之前,我这辈子都无法弄清楚出了什么问题。将我的证书切换回"Use Systems Defaults",一切都恢复正常。我不知道这是为什么以及如何工作,但确实如此。

      【讨论】:

      • 我其实不相信。这也是我的问题。在使用 Xcode 的设备上运行的本地计算机上对我来说很好,但是当启动从 Jenkins 构建作业生成的 IPA 时,由于证书的信任设置配置方式不同,它失败了。该错误绝不表明它与证书有关。你让我免了几天的痛苦。
      • 这真的解决了我的问题。我不敢相信这会导致钥匙串中的这种误导属性!
      【解决方案4】:

      清理 Xcode 的派生数据

      Launch Finder > Go > Go To Folder > 粘贴下面的行

      ~/Library/Developer/Xcode/DerivedData
      

      现在重新启动 Xcode。

      【讨论】:

        【解决方案5】:

        事实证明,如果您在多个设备上运行应用程序,Xcode 会缓存一些特定于设备的内容,这些内容可能会混淆。简单的解决方法是删除 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
        

        【讨论】:

        • 四年后,这篇精彩的帖子解决了我的问题。谢谢@Tarik
        • 如果解决方案对用户有帮助,那就太好了
        【解决方案6】:

        只需更改代码签名配置文件即可解决问题。前往目标。然后在 General->Signing->Team

        中选择不同的选项

        【讨论】:

          【解决方案7】:

          好吧,就我而言,我使用的是 cocoapods,并从 pod 文件中进行更改:

          target 'CoreMotionExample' do
          # Comment the next line if you don't want to use dynamic frameworks
          use_frameworks!
          
          # Pods for CoreMotionExample
          pod 'Firebase/Analytics'
          

          target 'CoreMotionExample' do
          # Comment the next line if you don't want to use dynamic frameworks
          # use_frameworks!
          
          # Pods for CoreMotionExample
          pod 'Firebase/Analytics'
          

          然后事情开始起作用了......我不知道为什么

          【讨论】:

          • 您是否使用免费的开发者帐户进行签名?自 iOS 13.3.1 以来,外部框架不适用于免费帐户,因此这可能就是为什么切换到静态库可以为您解决问题。
          【解决方案8】:

          我的问题通过删除“use_frameworks!”得到了解决。并将其替换为“use_modular_headers!”在 Podfile 中并在终端中执行 pod update 和 pod install。

          希望这对你有所帮助,就像我在这个问题上摸索了一个星期后所做的那样。

          【讨论】:

            猜你喜欢
            • 2018-03-24
            • 1970-01-01
            • 2013-12-25
            • 2012-03-20
            • 2013-07-16
            • 1970-01-01
            • 1970-01-01
            • 2020-05-12
            • 2020-01-28
            相关资源
            最近更新 更多