2013-08-05 36 views
1

當我嘗試在通過phonegap生成的ios項目中添加測試目標時,出現鏈接器錯誤。似乎我的項目裏面的cordova項目無法找到(我認爲),所以當我運行測試時它會拋出一個錯誤。如何將SenTestCase添加到cordova或phonegap項目中?

我花了一段時間搜索,沒有人有這個錯誤,是否有可能爲科爾多瓦項目創建本機單元測試? - 只是爲了澄清我使用一些本機代碼的cookie,並希望單元測試它。

的錯誤是:

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) 

任何幫助將是真棒!!!!謝謝。

+0

你可以發佈你的項目的一個精簡版到GitHub上?很難說沒有看到項目/代碼。 –

回答

0

基本上,科爾多瓦是依靠蘋果框架(在運行時鏈接)。這些框架沒有包含在Cordova項目內的phonegap內。

它會工作,你需要做的是將相關的Apple框架添加到您的項目。例如,其中一個未定義的符號是「_OBJC_CLASS _ $ _ ALAssetsLibrary」,這是AssetsLibrary.framework中的一個對象。因此,將此框架添加到您的項目中(並確保它與您的應用程序目標鏈接)。

對於這些未定義的符號中的每一個,只是Google/Bing看起來相關的符號部分(通常是在_OBJC_CLASS _ _之後或_OBJC_CLASS __之後的部分),然後添加符號該框架到您的項目。

注意,在下面IOBluetooth.framework和Cocoa.framework如何與MyTestApp鏈接的例子:

enter image description here

相關問題