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



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

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

该应用程序在iPhone 5(iOS 8.1.2)、iPod Touch(iOS 8.2)和模拟器上安装和运行,但在iPhone 6(iOS 8.1.2.)上不安装和运行。错误总是dyld:Library NOT loaded:@rpath/Custom.framework/。每当我删除并添加框架以尝试修复时,另一个框架就会弹出,显示为iPhone 6上未加载。(为什么!!)

设置了以下内容:

  • @可执行路径/框架
  • 嵌入式内容包含Swift代码-是
  • 嵌入式二进制文件中的框架
  • 嵌入式框架
  • 将二进制文件与库链接

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

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

直到我读到有关体系结构的文章,我才停止找出问题的原因。因此,它促使我在连接iPhone 6的同时构建框架。我创建了一个具有所有默认值的项目。添加了包括Alamofire在内的几个框架。在iPhone 6连接时构建。生成存档并部署和安装OTA。安装应用程序后,它运行时没有出现问题。

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

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

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

更新:除了上述知识外,您可能还想查看构建设置选项卡中的"仅构建活动体系结构"部分。这意味着如果设置为"是",它将基于连接的硬件进行构建,否则它将为您支持的体系结构(如有效体系结构)进行构建。

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

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

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

我在使用Mojave&我使用的是可可荚,以下是我的解决方案:

  1. 确保您的目标->构建设置->iOS部署目标设置为最新的iOS
  2. 在Pod文件中,删除测试UI目标的"inherit!:search_path"。例如
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

最新更新