【问题标题】:Adding Carthage Support to an Existing Project向现有项目添加 Carthage 支持
【发布时间】:2015-12-27 02:22:05
【问题描述】:

我已经分叉了AEXML 项目,我正在尝试添加Carthage 支持。我添加了一个框架目标并创建了一个标记为共享的新方案(请参见下面的屏幕截图)。我可以运行 carthage build 并在我的 Carthage/Build/iOS 中看到:

将生成的 AEXML.framework 文件拖到我的示例应用程序中时,项目将构建,但是在启动时我收到:

我觉得我在某个地方搞砸了,但我不确定如何解决这个问题。

【问题讨论】:

    标签: ios xcode swift carthage


    【解决方案1】:

    您应该在示例项目的“构建阶段”添加运行脚本,例如:

    在应用程序目标的“构建阶段”设置选项卡上,单击“+”图标并 > 选择“新建运行脚本阶段”。创建一个包含以下内容的运行脚本:

     /usr/local/bin/carthage copy-frameworks
    

    然后在“输入文件”下添加您想使用的框架的路径,例如:

     $(SRCROOT)/Carthage/Build/iOS/Box.framework
     $(SRCROOT)/Carthage/Build/iOS/Result.framework
     $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
    

    【讨论】:

    • 您应该在引用中添加链接引用。
    【解决方案2】:

    我曾尝试通过添加脚本来检查是否在 BUILD_PRODUCTS_DIR 中找到每个框架,然后递归地复制它们,如果没有,我自己尝试这样做。当这不起作用时,我最终遇到了这个链接问题:

    dyld:库未加载:@rpath/XCTest.framework/XCTest 引用自:.../build/Products/Debug-iphonesimulator/Specta.framework/Specta 原因:找不到图片

    我最终尝试创建复制文件阶段并包含我的框架和 dSYM,创建组,然后将所有这些移至 Xcode 7.2 中的 Frameworks 组。我的链接问题完全消失了。

    【讨论】:

      【解决方案3】:

      您遇到的错误指出在运行时未找到框架二进制文件。 Abner Zhong 的回答在大多数情况下都有效,但有时你必须更加努力(对我来说这是单元测试的目标)。为了使它工作Carthage README 建议:

      在极少数情况下,您可能还希望将每个依赖项复制到构建产品中(例如,将依赖项嵌入到外部框架中,或确保依赖项存在于测试包中)。为此,请使用“Frameworks”目标创建一个新的“Copy Files”构建阶段,然后在其中添加框架引用。

      您可以在此处执行此操作:

      【讨论】:

        猜你喜欢
        • 2016-04-30
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 2011-07-07
        • 2017-03-04
        • 2016-08-29
        相关资源
        最近更新 更多