-
Carthage 설치방법 (Xcode13)iOS 2021. 11. 4. 12:46
안녕하세요 썸머입니다🏝
주로 cocoapods을 사용해서 프레임워크를 사용해왔는데요
빌드 속도가 빠르다는 카르타고를 사용해보았습니다🙌
xcode버전 관련해서 설치하는데 이슈가 생겨 설치방법을 포스팅했습니다.
Carthage 설치방법 (Xcode13)
1. carthage 설치
// 카르타고를 설치한 적이 없을 때 $ brew install carthage // 설치가 된 경우 $ brew upgrade carthage
2. Cartfile 생성
프로젝트( .xcodeproj)가 있는 폴더에 Cartfile을 생성합니다.
제 프로젝트 이름은 PhoneBookApp입니다.
$ ls PhoneBookApp PhoneBookApp.xcodeproj $ vi Cartfile // 아래 내용을 입력해주세요. $ cat Cartfile github "realm/realm-cocoa" github "ReactiveX/RxSwift"
github "(account)/(repo_name)" 형식으로 Cartfile을 작성하시면 됩니다.
더 자세한 내용은 링크를 참고해주세요:)
3. Cartfile 실행
$ carthage update // iOS 폴더만 생성하고 싶을 때 $ carthage update --platform iOS $ ls Cartfile Cartfile.resolved Carthage PhoneBookApp PhoneBookApp.xcodeproj
이 과정에서 Carthage 폴더를 생성하면서 시간이 걸립니다.
혹시 아래와 같은 오류가 발생한다면 다음과정을 따라와주세요.
(RealmSwift 프레임워크에서는 발생하지 않았지만 RxSwift 프레임워크를 설치하면 오류가 발생하네요..!)
프바프(프레임워크 바이 프레임워크)로 오류가 발생하는 듯 합니당😢
Building universal frameworks with common architectures is not possible. The device and simulator slices for "RxBlocking" both build for: arm64
Rebuild with --use-xcframeworks to create an xcframework bundle instead.3.1. carthage update 오류가 발생할 때
1. carthage.sh 파일 생성
Carthage에서 빌드한 Framework가 x86_64(인텔 맥) 용으로 빌드가 안되고 arm64로 빌드되는 것을 방지하는 스크립트입니다.
$ vi carthage.sh // 아래 내용을 입력해주세요 $ cat carthage.sh 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 "Xcode" | cut -d' ' -f2 | cut -d'.' -f1)00" CURRENT_XCODE_BUILD=$(xcodebuild -version | grep "Build version" | cut -d' ' -f3) echo "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_${CURRENT_XCODE_VERSION}__BUILD_${CURRENT_XCODE_BUILD} = arm64 arm64e armv7 armv7s armv6 armv8" >> $xcconfig echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_'${CURRENT_XCODE_VERSION}' = $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_$(XCODE_VERSION_MAJOR)__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 export XCODE_XCCONFIG_FILE="$xcconfig" carthage "$@"
2. carthage.sh 파일 실행
아래와 같이 스크립트를 실행해주세요.
$ ./carthage.sh build // iOS 폴더만 생성하고 싶을 때 $ ./carthage.sh build --platform iOS
4. 프로젝트에 프레임워크 추가하기
자 이제 빨간 동그라미 두개만 처리하면 프레임워크를 사용할 수 있습니다!
먼저 Link Binary With Libraries에서 왼쪽 아래 +버튼을 눌러주면 아래와 같은 화면이 뜹니다.
이때 Add Other 버튼을 눌려주시고 Add Files를 클릭해주세요.
그리고 Carthage/Build/iOS에 .framework 폴더들을 선택해서 Open 버튼을 눌러주세요.
다음으로 Run Script를 추가해봅시다~!
/usr/local/bin/carthage copy-frameworks
스크립트에 위의 내용을 추가하고
Input Files에 + 버튼을 클릭해 위에서 연결한 .frameworks들을 모두 추가해주세요.
$(SRCROOT)/Carthage/Build/iOS/(프레임워크 이름).framework 형식으로 추가하면 됩니다.
자 이제 끝입니다!! 수고하셨습니다👍
import RxSwift와 같이 평소처럼 프레임워크를 사용하시면 됩니다.
Reference
https://medium.com/@jang.wangsu/ios-swift-카르타고-carthage-란-사용법은-예제-따라하기까지-127e71fdd253
'iOS' 카테고리의 다른 글
Autolayout (2) - CHCR Priority (0) 2021.10.27 Autolayout (1) - Constraints (0) 2021.10.23 Delegate Pattern (0) 2021.10.11