-
[iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #2👻 iOS 2021. 3. 21. 00:18
- 2020.12.28 - [👻 iOS] - [iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #1 에서 이어집니다.
- 2021.03.19 - [👻 iOS] - [iOS] Carthage 가 Xcode 12에서 빌드오류가 난다고!도 참고하세요!
3개월 만에 Carthage 셋팅을 마무리 해보려 합니다.
셋팅하기 #1은 실패사례로 보고 다시 프로젝트 만들어서 할텐데
그래서 오늘 해야할 일은 2가지예요
1. 새 프로젝트 생성해서 RIBs 빌드
2. 빌드된 RIBs를 이용해서 Xcode 설정에 추가
1. 새 프로젝트 생성해서 RIBs 빌드
xcode 프로젝트를 완전히 새로 만듭니다. 이름은 그냥 ribs-carthage 로 할게요.
만들어진 새 프로젝트 경로로 이동합니다.
carthage 설정 파일엔 RIBs만 우선 넣어줄게요.
> cat Cartfile # github "ReactiveX/RxSwift" ~> 5.2 # github "SnapKit/SnapKit" ~> 5.0 github "uber/RIBs" "master"
그리고 xcode 12에서의 arm 빌드를 우회하기 위한 스크립트인 carthage 를 이용해서 carthage 를 실행해 줄 겁니다. 이전 포스팅에서 공유했지만 잊지말자는 목적으로 다시 가져왔어요.
> cat carthage.sh #!/usr/bin/env bash # carthage.sh # Usage example: ./carthage.sh build --platform iOS set -euo pipefail xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX) trap 'rm -f "$xcconfig"' INT TERM HUP EXIT # For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise # the build will fail on lipo due to duplicate architectures. CURRENT_XCODE_VERSION=$(xcodebuild -version | grep "Build version" | cut -d' ' -f3) echo "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_$CURRENT_XCODE_VERSION = arm64 arm64e armv7 armv7s armv6 armv8" >> $xcconfig echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_$(XCODE_PRODUCT_BUILD_VERSION))' >> $xcconfig echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig echo 'IPHONEOS_DEPLOYMENT_TARGET=13.0' >> $xcconfig # echo 'SWIFT_TREAT_WARNINGS_AS_ERRORS=NO' >> $xcconfig # echo 'GCC_TREAT_WARNINGS_AS_ERRORS=NO' >> $xcconfig export XCODE_XCCONFIG_FILE="$xcconfig" carthage "$@"
그리고 이제 실행
> ./carthage.sh update --platform iOS *** Fetching RIBs *** Fetching RxSwift *** Checking out RIBs at "4da653ffcec95ecd396a10bd0f8d32850b75ff14" *** Checking out RxSwift at "5.1.2" *** xcodebuild output can be found in /var/folders/vb/t1bbs5_91d5_b_2pylj9bm4h0000gn/T/carthage-xcodebuild.7LM0RR.log *** Building scheme "RxBlocking" in Rx.xcworkspace *** Building scheme "RxRelay" in Rx.xcworkspace *** Building scheme "RxCocoa" in Rx.xcworkspace *** Building scheme "RxSwift" in Rx.xcworkspace *** Building scheme "RxTest" in Rx.xcworkspace *** Building scheme "RIBs" in RIBs.xcodeproj
후후... 이게 뭐라고 한번에 성공하니까 뿌듯하네요.
2. 빌드된 RIBs를 이용해서 Xcode 설정에 추가
현재까지는 carthage가 빌드만 진행된 상태에요. framework 파일로 만들어져서 외로이 남겨져 있을텐데 이걸 xcode에 최첨단 수동으로 연결을 해주어야 해요.
먼저 생성된 파일 목록을 봅니다.
> ls -al Carthage/Build/iOS .... drwxr-xr-x 6 albin.p staff 192 3 21 00:00 RIBs.framework drwxr-xr-x 3 albin.p staff 96 3 21 00:00 RIBs.framework.dSYM drwxr-xr-x 6 albin.p staff 192 3 20 23:55 RxBlocking.framework drwxr-xr-x 3 albin.p staff 96 3 20 23:55 RxBlocking.framework.dSYM drwxr-xr-x 6 albin.p staff 192 3 20 23:57 RxCocoa.framework drwxr-xr-x 3 albin.p staff 96 3 20 23:57 RxCocoa.framework.dSYM drwxr-xr-x 6 albin.p staff 192 3 20 23:56 RxRelay.framework drwxr-xr-x 3 albin.p staff 96 3 20 23:56 RxRelay.framework.dSYM drwxr-xr-x 6 albin.p staff 192 3 20 23:58 RxSwift.framework drwxr-xr-x 3 albin.p staff 96 3 20 23:58 RxSwift.framework.dSYM drwxr-xr-x 6 albin.p staff 192 3 20 23:59 RxTest.framework drwxr-xr-x 3 albin.p staff 96 3 20 23:59 RxTest.framework.dSYM
이 경로에 파일들을 아래 Link Binary With Libraries 에 넣어주어야 해요
.framework 파일들만 골라서 drag & drop 해주어 봅니다 (RIBs, RxSwift, RxCocoa, RxRelay)
추가 전 필요한 것만 쏙 뽑아서! 최종 상태 ribs-carthage Target에서 Build Phases로 이동하고, "New Run Script Phase" 를 선택해 스크립트 추가 작업을 해줍니다.
이제 필요한 것은,
1. "/usr/local/bin/carthage copy-framworks" 를 실행 쉘 명령으로 넣어주고
2. Input Files 목록에 아까 추가했던 파일들을 실제 경로로 추가해 주면 됩니다.
빌드 해보면 Success 볼 수 있어요.
그럼 이제 import 가 잘 되는지 볼까요우~
나온다 나와!! 살살 녹네!! 그럼 이제 RIBs + Carthage 사용이 모두 준비 되었습니다~
짝짝짝~~!
(별거 없는데 3개월 걸렸네요;;; 현타..)