我在Xcode 5.0.2中运行项目时遇到问题
我收到以下错误:
dyld: Library not loaded: @rpath/XCTest.framework/Versions/A/XCTest
Referenced from: /Users/chris/Library/Developer/Xcode/DerivedData/relatio-cwlmozvklaldmictbbjthzuoxnxz/Build/Products/Debug/relatio.app/Contents/MacOS/relatio
原因:未找到图像(lldb)
我该如何解决这个问题?
看起来您的主要目标是链接到XCTest.framework以及您的测试目标。它应该只与主要目标相关联。
1)转到项目设置
2)转到您的应用程序主目标 - >其他链接器标志
3)删除'-framework XCTest'
4)确保测试目标的“其他链接器标志”字段仍包含“-framework XCTest”
对于我们的情况,我们希望将Mockingjay
用于app目标和测试目标
target 'MyProject' do
pod 'Mockingjay/Core'
# all pods that are not test go here
target 'MyProjectTest' do
inherit! :search_paths
pod 'Mockingjay/XCTest'
pod 'Quick', ' ~> 0.9.2'
# .. all test pods go here
end
end
一个对我有用的解决方案是将你的Podfile中的测试目标inherit
attribute从:search_paths
更改为:complete
。虽然this answer认为:search_paths
是专为测试环境设计的。
target 'myapp' do
use_frameworks!
target 'myappTests' do
#inherit! :search_paths
inherit! :complete
end
end
我通过重命名我的目标遇到了这个错误,其中一个是测试目标。在阅读了其他答案后,我意识到我的构建阶段>编译源包括测试类作为非测试目标的编译源,然后尝试导入XCTest框架。
从我的常规目标的Compile Sources中删除测试类解决了这个问题。
这里的问题是,根据您发布的dyld错误消息,您的应用程序将链接到XCTest.framework。那是不对的;只有您的测试包需要链接到XCTest.framework,因为只有您的测试包包含测试。
我与OCMock库有类似的问题,解决方案是:
target :"Application Tests", :exclusive => true do
pod 'OCMock'
end
这就是我解决问题的方法:
在我的主要Target的“Link Binary With Libraries”(在Build Phases下),我正在使用的测试框架(Nimble.framework)导致了这个问题。删除它,一切都很好!
在框架搜索路径上输入框架的引用并在“Build Settings”下运行路径搜索路径---...现在所有设置都使用import来调用你的项目
我有同样的问题是因为我在框架中添加了一个新文件。所以只要运行“pod install
”解决了我的问题。但要确保你的Tests
下的pod也是目标。