ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    https://github.com/Carthage/Carthage/issues/3201

    'iOS' 카테고리의 다른 글

    Autolayout (2) - CHCR Priority  (0) 2021.10.27
    Autolayout (1) - Constraints  (0) 2021.10.23
    Delegate Pattern  (0) 2021.10.11
Designed by Tistory.