未加载自定义框架 dyld:未加载库:@rpath/Custom.framework/

Custom framework not loaded dyld: Library not loaded: @rpath/Custom.framework/

我有一个带有多个自定义动态框架的应用程序,这意味着我在 Xcode 6.2 上使用 iOS 8 作为 SDK。我的 Mac 在 Yosemite 上。这些框架有 Swift 来源和资源。

该应用程序是分布式企业,所以我只创建一个 IPA 并通过网页在内部分发,用户可以在其中下载和安装该应用程序。

该应用程序可以在 iPhone 5(iOS 8.1.2)、iPod Touch(iOS 8.2) 和模拟器上安装和运行 但不能 在 iPhone 6(iOS 8.1.2)上。错误始终是 dyld:未加载库:@rpath/Custom.framework/。每当我删除并添加框架以尝试修复它时,都会弹出另一个框架,因为它没有加载到 iPhone 6。(为什么!!!)

设置了以下内容:

是什么导致了这些问题,我该怎么做才能确保该应用程序在所有设备和 iOS 8 个版本上一致运行。

我找到的大多数解决方案都是反复试验的建议。

在阅读架构之前,我一直在寻找问题的原因。所以它提示我在连接 iPhone 6 时构建框架。我创建了一个包含所有默认值的项目。添加了几个框架,包括 Alamofire。在 iPhone 6 连接时构建它们。生成存档并部署和安装 OTA。安装该应用程序时 运行 没有问题。

我试图通过构建我的 iPod(MD717ZP/A) 来确认它。我不确定这是否是第 5 代。首先我清空了派生数据文件夹,清理了包括框架在内的所有项目。构建并部署了应用程序。将它安装在 运行ning 的 iPod 上。我把它安装在 iPhone 6 上,它立即崩溃了。

我一遍又一遍地尝试相同的过程。针对 iPhone 6 构建,然后在两者上安装 iPod。结果只是确认我需要在 iPhone 6 上构建它,这样应用程序才能在该设备上 运行 和更低的设备。

记住我只是将框架添加到 "Embedded Binaries"(目标 > 通用 > 嵌入式二进制文件),然后在 iPhone 6 上构建以使其工作。这可能意味着您需要拥有最新的设备,如果您希望它 运行由于某些架构要求在所有设备上运行。

更新: 除了上述知识之外,您可能还需要查看 Build Settings 选项卡中的“Build Active Architecture Only”部分。这意味着如果设置为 YES 它将基于连接的硬件构建,否则它将为您支持的架构构建,例如 Valid Architectures。

检查“构建设置”选项卡中的“链接”部分,可能未设置以下项目:

Runpath Search Paths = @executable_path/Frameworks
  • 这为我修复了一个错误:

    dyld: library not loaded: @rpath/CorePlot.framework/CorePlot
    reason: image not found
    

我在使用 xcode 10 和 Mojave 时遇到了同样的问题,我正在使用 Cocoa pods,这是我的解决方案:

  1. 确保您的目标->构建设置->iOS部署目标设置为最新的IOS。
  2. 在 Pod 文件中,删除测试 UI 目标的 "inherit! :search_paths"。对于例如。
Existing pod file :

    target 'MyApp' do
        pod 'oAuthorize'
        target 'MyUITest1' do
            inherit! :search_paths
        end
        target 'MyFunctionalTest' do
            inherit! :search_paths
        end
    end
    Remove "inherit! :search_paths" for all sub-targets. 

    target 'MyApplication' do
        pod 'oAuthorize'
        target 'MyUITest1' do
        end
        target 'MyFunctionalTest' do
        end
    end