我已经分配了AEXML项目,并且我尝试添加Carthage支持。我添加了一个框架目标,并创建了一个标记为共享的新Scheme(参见下面的屏幕截图)。我可以运行carthage build
并在我的Carthage/Build/iOS
中看到:
将生成的AEXML.framework
文件拖到我的示例应用程序中时,项目将会在启动时生成,但是我会收到:
我觉得我在某个地方一路搞砸了,但我不确定如何解决这个问题。
答案 0 :(得分:1)
您应该在示例项目的“构建阶段”中添加运行脚本,例如:
在应用程序目标的“构建阶段”设置选项卡上,单击“+”图标和>选择“新运行脚本阶段”。使用以下内容创建运行脚本:
/usr/local/bin/carthage copy-frameworks
and add the paths to the frameworks you want to use under “Input Files”, e.g.:
$(SRCROOT)/Carthage/Build/iOS/Box.framework
$(SRCROOT)/Carthage/Build/iOS/Result.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
答案 1 :(得分:1)
我曾尝试通过添加脚本来检查是否在BUILD_PRODUCTS_DIR中找到每个框架,然后递归复制它们,如果没有,我自己尝试这样做。当这不起作用时,我最终得到了这个链接问题:
dyld:未加载库:@ rpath / XCTest.framework / XCTest 参考自:... / build / Products / Debug-iphonesimulator / Specta.framework / Specta 原因:未找到图像
我终于尝试创建复制文件阶段并包含我的框架和dSYM,创建组,然后将所有这些移动到Xcode 7.2中的Frameworks组。我的链接问题完全消失了。
答案 2 :(得分:0)
您有错误指出在运行时未找到框架二进制文件。 Abner Zhong的答案在大多数情况下都有效,但有时你必须更加努力(对我而言,它是单位测试的目标)。为了使其有效Carthage README建议:
在极少数情况下,您可能还希望将每个依赖项复制到构建产品中(例如,在外部框架中嵌入依赖项,或确保测试包中存在依赖项)。为此,使用“Frameworks”目标创建一个新的“Copy Files”构建阶段,然后在那里添加框架引用。