2013-08-05 7 views
1

phonegap을 통해 생성 된 ios 프로젝트에서 테스트 대상을 추가하려고하면 링커 오류가 발생합니다. 내 프로젝트 내의 코드 로보 프로젝트가 발견되지 않아서 테스트를 실행할 때 오류가 발생하는 것 같습니다.코드 나 전화 갭 프로젝트에 SenTestCase를 어떻게 추가 할 수 있습니까?

검색하는 동안 시간이 많이 걸렸습니다. 아무도이 오류가 없으며 코드 로바 프로젝트의 기본 단위 테스트를 만들 수 있습니까? - 쿠키를위한 네이티브 코드를 사용하고 그것을 테스트하고 싶습니다.

오류 :

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는 런타임에 링크되는 Apple 프레임 워크를 사용합니다. 이러한 프레임 워크는 phonegap 내부의 Cordova 프로젝트에 포함되어 있지 않습니다.

당신이해야 할 일은 관련 Apple 프레임 워크를 프로젝트에 추가하는 것입니다. 예를 들어, 정의되지 않은 심볼 중 하나는 "_OBJC_CLASS _ $ _ ALAssetsLibrary"입니다. 이것은 AssetsLibrary.framework 내부의 객체입니다. 따라서이 프레임 워크를 프로젝트에 추가하십시오 (그리고 앱 타겟에 링크되어 있는지 확인하십시오).

각 정의되지 않은 기호에 대해 관련성이있는 기호 부분 (일반적으로 초기 _ 밑줄 뒤 또는 _OBJC_CLASS _ $ _ 뒤의 부분)을 Google/Bing하고 기호가 어떤 프레임 워크인지 확인한 다음 추가 해당 프레임 워크를 프로젝트에 추가하십시오. IOBluetooth.framework 및 Cocoa.framework이 MyTestApp와 연결하는 방법을 아래의 예

참고 :

enter image description here