【问题标题】:Swift framework is loads in Objective C app on the simulator, but not on deviceSwift 框架在模拟器上的 Objective C 应用程序中加载,但不在设备上
【发布时间】:2016-07-11 17:52:17
【问题描述】:

这是我得到的错误:

dyld: Library not loaded: @rpath/AAA.framework/AAA
  Referenced from: /var/containers/Bundle/Application/7250F8A6-E0D8-4BF2-BBD9-F1315D1439F7/BBB.app/BBB
  Reason: image not found
  • 这是使用 Xcode 7.3.1 构建的。
  • 我遵循了其他答案中的其他建议。
    • 该框架位于“链接框架和库”中。
    • 该框架位于“Link Binary with Libraries”中。
    • LD_RUNPATH_SEARCH_PATHS 设置为 $(inherited) @executable_path/Frameworks
    • EMBEDDED_CONTENT_CONTAINS_SWIFTYES
    • 我已完成“清理构建文件夹...”、项目 > 派生数据 >“删除...”,并重新启动了 Mac 和 iPad。
    • 既不使用 Cocoapods 也不使用 Carthage。

我还有什么遗漏的吗?我一直无法在 Stackoverflow 上找到答案。

【问题讨论】:

    标签: swift ipad swift2 xcode7 ios-frameworks


    【解决方案1】:

    您的应用无法加载框架二进制文件,因为它尚未与应用一起复制到您的设备。您需要将*.framework 文件添加到应用目标的Embed Frameworks Build 阶段。通过这样做,框架将被复制到应用程序包内的Frameworks 文件夹,以便您的应用程序可以加载它。

    嵌入框架

    有两种方法可以将框架嵌入到您的应用中:

    1. 在目标的构建设置中使用General 选项卡。

    2. 使用目标构建设置上的Build Phases 选项卡。

    请注意:如果您的框架已被添加到 Link Binary with Libraries 构建阶段,那么它将再次添加,从而为您留下对同一框架的两个引用。

    【讨论】:

    • 我相信“将二进制文件与库链接”中的框架可以做到这一点。如果没有,我该怎么做?
    • 不幸的是它没有。它只能反过来工作。如果您将框架添加到Embed Frameworks 构建阶段,那么它将被添加到Link Binary with Libraries 构建阶段。您需要将其添加到上述构建阶段,或者通过目标构建设置中的General 选项卡添加它。我将在我的答案中添加更多详细信息和屏幕截图以进行澄清。
    猜你喜欢
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多