戯言

自社サービスを開発、運営している会社でスクラムマスターをやっている人の戯言です。

AFNetworking+GHUnitでハマった話し


Podfile

platform :ios, '6.1'

target :GHUnitTests, :exclusive => true do
    pod 'GHUnitIOS', '~> 0.5.5'
end

pod 'AFNetworking', '~> 1.3.2'

GHUnitTestsからAFNetworkingが見えない。
まぁ、それはそうか。

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_AFJSONRequestOperation", referenced from:
objc-class-ref in XXX.o

Podfileを変更

platform :ios, '6.1'

target :GHUnitTests, :exclusive => true do
    pod 'GHUnitIOS', '~> 0.5.5'
    pod 'AFNetworking', '~> 1.3.2'
end

pod 'AFNetworking', '~> 1.3.2'

大量のエラーが

"_SCNetworkReachabilityCreateWithName", referenced from:
-[AFHTTPClient startMonitoringNetworkReachability] in libPods-GHUnitTests.a(AFHTTPClient.o)
"_SCNetworkReachabilityGetFlags", referenced from:
-[AFHTTPClient startMonitoringNetworkReachability] in libPods-GHUnitTests.a(AFHTTPClient.o)
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
-[AFHTTPClient startMonitoringNetworkReachability] in libPods-GHUnitTests.a(AFHTTPClient.o)
"_SCNetworkReachabilitySetCallback", referenced from:
-[AFHTTPClient startMonitoringNetworkReachability] in libPods-GHUnitTests.a(AFHTTPClient.o)
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
-[AFHTTPClient stopMonitoringNetworkReachability] in libPods-GHUnitTests.a(AFHTTPClient.o)
"_SecCertificateCopyData", referenced from:
-[AFURLConnectionOperation connection:willSendRequestForAuthenticationChallenge:] in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_SecCertificateCreateWithData", referenced from:
___44+[AFURLConnectionOperation pinnedPublicKeys]_block_invoke in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_SecPolicyCreateBasicX509", referenced from:
___44+[AFURLConnectionOperation pinnedPublicKeys]_block_invoke in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
-[AFURLConnectionOperation connection:willSendRequestForAuthenticationChallenge:] in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_SecTrustCopyPublicKey", referenced from:
___44+[AFURLConnectionOperation pinnedPublicKeys]_block_invoke in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
-[AFURLConnectionOperation connection:willSendRequestForAuthenticationChallenge:] in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_SecTrustCreateWithCertificates", referenced from:
___44+[AFURLConnectionOperation pinnedPublicKeys]_block_invoke in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
-[AFURLConnectionOperation connection:willSendRequestForAuthenticationChallenge:] in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_SecTrustEvaluate", referenced from:
___44+[AFURLConnectionOperation pinnedPublicKeys]_block_invoke in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
-[AFURLConnectionOperation connection:willSendRequestForAuthenticationChallenge:] in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_SecTrustGetCertificateAtIndex", referenced from:
-[AFURLConnectionOperation connection:willSendRequestForAuthenticationChallenge:] in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_SecTrustGetCertificateCount", referenced from:
-[AFURLConnectionOperation connection:willSendRequestForAuthenticationChallenge:] in libPods-GHUnitTests.a(AFURLConnectionOperation.o)
"_UTTypeCopyPreferredTagWithClass", referenced from:
_AFContentTypeForPathExtension in libPods-GHUnitTests.a(AFHTTPClient.o)
"_UTTypeCreatePreferredIdentifierForTag", referenced from:
_AFContentTypeForPathExtension in libPods-GHUnitTests.a(AFHTTPClient.o)
"_kUTTagClassFilenameExtension", referenced from:
_AFContentTypeForPathExtension in libPods-GHUnitTests.a(AFHTTPClient.o)
"_kUTTagClassMIMEType", referenced from:
_AFContentTypeForPathExtension in libPods-GHUnitTests.a(AFHTTPClient.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

色々彷徨った結果、以下の3ファイルを Link Binary With Libraries から追加することで回避できた

Security.framework
MobileCoreServices.framework
SystemConfigration.framework

しかし、この回避方法が正解なのかは判らない・・・。

reference: