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

我有一个应用程序与几个自定义的dynamic框架,这意味着我使用iOS 8作为Xcode 6.2上的SDK。 我的Mac在优胜美地 框架有Swift的来源和资源。

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

该应用程序在iPhone 5(iOS 8.1.2),iPod Touch(iOS 8.2)和模拟器上安装并运行, 但不在 iPhone 6(iOS 8.1.2)上运行。 错误始终是dyld:Library未加载:@ rpath / Custom.framework /。 每当我删除并添加框架回来尝试修复它的另一个框架popup为未加载在iPhone 6(为什么!

以下是设置:

  • @ executable_path /框架
  • embedded式内容包含Swift代码 – 是的
  • embedded式二进制文件中的框架
  • embedded式框架
  • 链接二进制与库

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

我发现的大多数解决scheme都是试用和错误的build议。

直到我读到架构,我才停下来找出问题的原因。 所以它促使我在iPhone 6连接的情况下构build框架。 我创build了一个包含所有默认设置的项目。 增加了一些框架,包括Alamofire。 在iPhone 6连接的情况下构build它们。 生成一个存档并部署和安装OTA。 当安装应用程序时,它运行没有问题。

我试图通过build立我的iPod(MD717ZP / A)来确认它。 我不知道这是否是第五代。首先我清空派生的数据文件夹,清理所有项目,包括框架。 build立和部署的应用程序。 将其安装在正在运行的iPod上。 我安装在iPhone 6上,它瞬间坠毁。

我一遍又一遍地尝试同样的过程。 build立对iPhone 6然后iPod安装在两者。 结果刚刚证实,我需要build立在iPhone 6上,所以应用程序将在该设备上运行,并降低。

请记住,我只是将框架添加到“embedded式二进制文件”(目标>常规>embedded式二进制文件),然后构build在iPhone 6上,使其工作。 这可能意味着如果您想要在所有设备上运行最新的设备,则由于某些体系结构要求,您需要安装最新的设备。

更新:除了上面的知识之外,您可能还想检查“ 构build设置”选项卡中的“ 仅构build主动架构 ”部分。 这意味着如果将其设置为YES,则将基于所连接的硬件构build,否则将针对您所支持的体系结构(如有效体系结构)进行构build。

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

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

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