Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] Carthage로 RIBs 빌드 방법 (카르타고 RIBs 에러) 본문

iOS 응용 (swift)

[iOS - swift] Carthage로 RIBs 빌드 방법 (카르타고 RIBs 에러)

jake-kim 2023. 7. 8. 00:19

Apple Silicon 맥북에서 Carthage로 RIBs를 사용할 때 에러

  • Universal 아키텍쳐 프레임워크를 빌드하려고 할 때, simulator와 타겟 디바이스의 지원하는 아키텍쳐가 동일한 경우 에러가 발생
    • 인텔 멕북이 아닌 Applie Silicon Mac에서는 arm64을 사용하고 있기 때문에, 이를 따라가는 simulator도 arm64인 상태
    • 디바이스 지원하는 아키텍쳐가 arm64인 상태

ex) Carthage 에러 발생

  • RIBs 깃허브에 나와있는 버전으로 지정한 후 카르타고 파일 준비 (Cartfile)
github "uber/RIBs" ~> 0.9
  • 아래 명령어로 Carthage를 통해 RIBs 설치
carthage update

(에러 발생)

에러가 발생하는 이유

  • RxSwift에서는 simulator, 디바이스의 지원하는 아키텍쳐를 모두 arm64로 해놓은 상태이고, 디바이스와 시뮬레이터의 아키텍쳐가 동일한 경우 universal 프레임워크를 만들 수 없으므로 에러가 발생
  • 해결 방법?
    • xcframework로 프레임워크를 만들면 xcframework에서 알아서 다양한 아키텍쳐를 지원해주는 것을 자동으로 관리해주므로 에러가 발생하지 않고 빌드가 가능
    • xcframework로 프레임워크를 만들려면 RIBs 프로젝트에서 "FRAMEWORK_SEARCH_PATHS"를 변경해주고 xcframework로 프레임워크 생성해야함

RIBs 프로젝트에서 FRAMEWORK_SEARCH_PATHS 변경하기

  •  RIBs의 FRAMEWORK_SEARCH_PATHS를 변경하기 위해서 RIBs 깃 레포 포크 수행
    • 포크한 RIBs 프로젝트의 Build Settings에서 framework search path를 검색
    • 현재는 "$(PRODUCTS_DIR)../Carthage/Build/iOS/"으로 되어 있고, 이 값을 "$(SRCROOT)/../Carthage/Build/iOS/"으로수정

  • 여기서 framework search path 값을 변경하는 이유?
    • $(PRODUCTS_DIR): 프로덕트의 경로를 의미 
    • $(SRCROOT): 프로젝트 루트 경로를 의미
    • 변경하게되면 RIBs 프로젝트 통째로 참조하게 되어 xcframework로 감쌀 수 있는 형태가 됨

ex) ExMyProject로 프로젝트 처음 만든 경우, 경로 예시

  • $(PRODUCTS_DIR): ExMyProject/RIBs
  • $(SRCROOT): ExMyProject

---

  • 변경 후 fork한 레포에 push 후 해당 commit을 copy

  • Cartfile에 포크된 커밋 정보로 입력
github "JK0369/RIBs" "2442475967277e2b2b68cb8d5d5b2a28bb8b3791"
  • xcframework로 아카이브
carthage update --use-xcframeworks --platform iOS

(성공)

 

* 참고

https://www.kodeco.com/7649117-carthage-tutorial-getting-started

Comments