Cocoapods link_with XCTest가 중복 기호 오류를 생성합니다.
-
20-12-2019 - |
문제
정적 라이브러리를 생성할 메인 프로젝트가 있습니다. MySDK
).구성요소가 있습니다. Analytics
) 개인 코코아포드로.
그래서 나는 다음과 같은 파일 구조로 끝납니다.
+ MySDK
- src
+ Pods
+ Pods
- Analytics
각 프로젝트에는 자체 테스트가 있지만 이제 통합 테스트를 수행해야 하므로 Podfile에서 사용합니다. link_with
, 하지만 이 작업을 수행할 때마다 여러 가지 오류가 발생하기 때문에 원래 테스트를 실행할 수도 없습니다. duplicate symbol
오류:
duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
/.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(Pods-dummy.o)
/.../DerivedData/Build/Products/Release-iphonesimulator/libMySDK.a(Pods-dummy.o)
...
duplicate symbol _MYPREFIXFileTableIDColumnName in:
/.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(MYPREFIXDatabaseConstants.o)
/.../Build/Products/Release-iphonesimulator/libMySDK.a(MYPREFIXDatabaseConstants.o)
모든 오류는 내 것에서 비롯됩니다. Analytics
요소.문제를 일으키는 모든 파일에는 C 함수 (저는 sqlite를 직접 다루고 있습니다) 및/또는 (전역) 상수, 아니면 그들은 카테고리, 이지만 모두 접두사가 붙습니다.
나의 Podfile
다음과 같습니다:
platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'
내 Podscpec Analytics
다음과 같습니다:
Pod::Spec.new do |s|
s.name = 'Analytics'
s.version = '0.0.1'
s.platform = :ios
s.summary = "Analytics utility"
s.homepage = 'http://google.com'
s.author = { 'Me' => 'me@me.com' }
s.source = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' }
s.source_files = 'Analytics/**/*.{h,m}'
s.requires_arc = true
s.ios.deployment_target = '6.0'
end
이러한 오류가 발생하는 이유가 있나요?이러한 파일을 non-arc로 컴파일해야 합니까, 아니면 특수 플래그를 사용해야 합니까?
어떤 아이디어라도
해결책
드디어 작동하게 됐어요!
내 포드를 다음에 연결하지 말았어야 했어요 MySDKTests
, 최종 제품 이후 (MySDK
, 라이브러리는 이미 연결되어 있습니다. Analytics
).
그러나 나는 내 항목에 다음을 추가했습니다. podspec
파일:
s.public_header_files = 'Analytics/**/*.h'
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/Headers/Analytics"' }
두 번째 줄은 내 내용을 수정하지 않기 때문에 실제로 필요하지 않습니다. MySDKTests
표적.꼭 추가해야 했어요 HEADER_SEARCH_PATHS
나에게 MyDSKTests
해당 헤더를 테스트에 사용할 수 있도록 합니다.
나는 어떤 사람들이 성공적으로 사용한다는 것을 읽었습니다. LIBRARY_SEARCH_PATHS
대신에 이것은 나에게 효과가 없었습니다.누군가가 이유를 설명하고 싶다면 좋을 것입니다. 그러나 지금은 다른 사람들이 비슷한 문제를 겪을 경우를 대비하여 여기에 내 솔루션을 남겨 두겠습니다.
보다 이 다른 질문 관련 정보를 위해