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

时间:2015-03-30 15:18:44

标签: ios frameworks dyld rpath

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

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

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

以下内容已经确定:

  • @ executable_path / Frameworks
  • 嵌入式内容包含Swift代码 - 是
  • 嵌入式二进制文件中的框架
  • 嵌入式框架
  • 将二进制文件链接到库

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

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

3 个答案:

答案 0 :(得分:5)

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

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

我一遍又一遍地尝试了同样的过程。针对iPhone 6构建,然后在两者上安装iPod。结果刚刚确认我需要在iPhone 6上构建它,以便应用程序可以在该设备上运行并降低。

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

<强>更新 除了上述知识,您可能还需要查看&#34; 仅构建活动架构&#34; 构建设置标签中的部分。这意味着如果设置为YES,它将基于连接的硬件构建,否则它将为您支持的体系结构构建,如Valid Architectures。

答案 1 :(得分:0)

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

dyld: library not loaded: @rpath/CorePlot.framework/CorePlot
reason: image not found
  • 这解决了我的错误:

    <?php
        $matrix = array(
            array($a, $b),
            array($c, $d)
        );
    ?>
    

答案 2 :(得分:0)

我在Mojave上使用xcode 10遇到了同样的问题,我正在使用可可豆荚,这是我的解决方案:

  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