10

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

4

3 回答 3

1

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

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

 /usr/local/bin/carthage copy-frameworks

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

 $(SRCROOT)/Carthage/Build/iOS/Box.framework
 $(SRCROOT)/Carthage/Build/iOS/Result.framework
 $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
于 2015-10-06T09:26:54.670 回答
1

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

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

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

于 2016-01-30T18:08:56.220 回答
0

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

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

您可以在这里执行此操作: Xcode 目标设置

于 2015-10-08T11:52:58.620 回答