Cordova + XCTest 导致“架构 i386 的未定义符号”
Posted
技术标签:
【中文标题】Cordova + XCTest 导致“架构 i386 的未定义符号”【英文标题】:Cordova + XCTest results in 'Undefined symbols for architecture i386' 【发布时间】:2013-12-03 22:28:46 【问题描述】:我在尝试将 XCTest 与 Cordova 项目集成时遇到错误。它发生在一个新的科尔多瓦应用程序中,没有自定义。只需添加 XCTest 并测试失败并出现以下错误:
Undefined symbols for architecture i386:
"_CGRectZero", referenced from:
+[CDVUserAgentUtil originalUserAgent] in libCordova.a(CDVUserAgentUtil.o)
"_OBJC_CLASS_$_ALAssetsLibrary", referenced from:
objc-class-ref in libCordova.a(CDVURLProtocol.o)
"_OBJC_CLASS_$_CLLocation", referenced from:
l_OBJC_$CATEGORY_CLLocation$_JSONMethods in libCordova.a(CDVShared.o)
"_UTTypeCopyPreferredTagWithClass", referenced from:
___30-[CDVURLProtocol startLoading]_block_invoke in libCordova.a(CDVURLProtocol.o)
"_kUTTagClassMIMEType", referenced from:
___30-[CDVURLProtocol startLoading]_block_invoke in libCordova.a(CDVURLProtocol.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我尝试删除 i386 架构,但无济于事,还做了很多其他事情,但这个让我望而却步。
有什么想法吗?提前致谢!
编辑: 我忘了注意项目构建得非常好,但运行测试 [通过产品 -> 测试] 会导致这些错误。
【问题讨论】:
【参考方案1】:找到了。
您必须将每个框架添加到所需的测试目标中。就我而言,我需要添加:
CoreLocation.framework
AssetsLibrary.framework
CoreGraphics.framework
MobileCoreServices.framework
之后,单元测试按预期失败。
【讨论】:
以上是关于Cordova + XCTest 导致“架构 i386 的未定义符号”的主要内容,如果未能解决你的问题,请参考以下文章