본문 바로가기
iOS/Xcode

SPM으로 RxSwift 추가 시 에러

by startSW 2023. 11. 9.

 

SPM으로 RxSwift를 추가하고 빌드를 하면 아래와 같은 에러가 날때가 있습니다.

Undefined symbol: _$s6XCTest14XCTAssertEqual___4file4lineyxyKXK_xyKXKSSyXKs12StaticStringVSutSQRzlF

Undefined symbol: _$s6XCTest7XCTFail_4file4lineySS_s12StaticStringVSutF

Undefined symbol: __swift_FORCE_LOAD_$_XCTestSwiftSupport

 

 

 

이 때 아래와 같이 “Enable Testing Search Paths”를 “Yes”로 수정하면 빌드가 성공합니다.

 

 

하지만 실제로 프로젝트를 실행하면 아래의 에러가 발생합니다.

dyld[7777]: Library not loaded: @rpath/libXCTestSwiftSupport.dylib
  Referenced from: <AD11F668-D4B7-390C-B322-7F29219F0098> /private/var/containers/Bundle/Application/FA8DA4E2-F6C4-4DE6-BD1D-FBBA679A031D/CleanFlashlight.app/CleanFlashlight
  Reason: tried: '/usr/lib/system/introspection/libXCTestSwiftSupport.dylib' (no such file, not in dyld cache), '/private/var/containers/Bundle/Application/FA8DA4E2-F6C4-4DE6-BD1D-FBBA679A031D/CleanFlashlight.app/Frameworks/libXCTestSwiftSupport.dylib' (no such file), '/private/var/containers/Bundle/Application/FA8DA4E2-F6C4-4DE6-BD1D-FBBA679A031D/CleanFlashlight.app/Frameworks/libXCTestSwiftSupport.dylib' (no such file), '/usr/local/lib/libXCTestSwiftSupport.dylib' (no such file), '/usr/lib/libXCTestSwiftSupport.dylib' (no such file, not in dyld cache)
Library not loaded: @rpath/libXCTestSwiftSupport.dylib
  Referenced from: <AD11F668-D4B7-390C-B322-7F29219F0098> /private/var/containers/Bundle/Application/FA8DA4E2-F6C4-4DE6-BD1D-FBBA679A031D/CleanFlashlight.app/CleanFlashlight
  Reason: tried: '/usr/lib/system/introspection/libXCTestSwiftSupport.dylib' (no such file, not in dyld cache), '/private/var/containers/Bundle/Application/FA8DA4E2-F6C4-4DE6-BD1D-FBBA679A031D/CleanFlashlight.app/Frameworks/libXCTestSwiftSupport.dylib' (no such file), '/private/var/containers/Bundle/Application/FA8DA4E2-F6C4-4DE6-BD1D-FBBA679A031D/CleanFlashlight.app/Frameworks/libXCTestSwiftSupport.dylib' (no such file), '/usr/local/lib/libXCTestSwiftSupport.dylib' (no such file), '/usr/lib/libXCTestSwiftSupport.dylib' (no such file, not in dyld cache)
dyld config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/usr/lib/libBacktraceRecording.dylib:/usr/lib/libMainThreadChecker.dylib:/usr/lib/libRPAC.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib

 

 

일단 원인은 RxSwift를 추가할 때 Test 관련 라이브러리가 추가되면서 기존의 Test 관련 라이브러리와 충돌이 일어나는 것 같습니다.

결국 해결방법은 아래와 같이 RxSwift 추가 시 RxTest 항목을 빼고 추가하는 것입니다.

 

기존에 SPM으로 추가했던 RxSwift를 삭제하고 다시 추가할 때 RxTest 관련 항목은 체크하지 않고 추가하면 아무런 에러가 나지 않습니다.

기존에 “Enable Testing Search Paths”를 “Yes”로 설정했떤 부분도 “No”로 원복해도 에러가 나지 않습니다.