티스토리 뷰

첫글을 이런글로 작성할 줄은 몰랐네요.

 

어제(9/17, 목) 저녁 먹고 오니 자동업데이트로 Xcode 12로 업데이트 되었습니다.
UI도 뭔가 이뻐지고 탭! 탭이 생겼어요!
기존에 사용하던 cmd + T로 열던 탭 방식이 아니라 InteliJ에서 보던 파일 단위로 열리는 탭이에요

Xcode에도 탭이!

 

그런데..
빌드가 안되요

Swift버전이 5.2.4에서 5.3으로 업데이트되면서 Carthage를 사용하는 framework의 binary를 다시 빌드해야 합니다.

 

뭐 다시 빌드 해야죠..

$ carthage build --platform iOS

$ carthage build --platform iOS

Alamofire 왜이래!

 

응?
Alamofire github로 달려갑니다.

이미 어느분이 이슈를 남기셨네요. Carthage의 문제인가 봅니다.

 

어쨌든 저분이 링크에 있는 방법으로 해결했다고 하니 Carthage를 방문해 봅니다.
이미 많은 분들이 다녀가셨어요.

github.com/Carthage/Carthage/issues/3019#issuecomment-693381253

 

Carthage builds fail at xcrun lipo on Xcode 12 beta (3,4,5...) · Issue #3019 · Carthage/Carthage

carthage install method: [ ] .pkg, [x] homebrew, [x] source which carthage: /usr/local/bin/carthage carthage version: 0.35.0 xcodebuild -version: 12A8169g Are you using --no-build? No Are you using...

github.com

 

상황은 이렇습니다.

 

Xcode 12로 업데이트되면서 Carthage에서 빌드한 Framework가 arm64로 빌드가 되는 현상이 발생하였습니다. (arm64면 그.. Apple Silicon?!!)|
저희는 아직 인텔 맥을 사용하고 있으니 x86_64로 빌드를 해야되거든요.
일단 해결방안으로는 스크립트를 작성해서 빌드를 하면 된다고 합니다.

 

아래와 같이 carthage-build.sh를 프로젝트 폴더에 만들어주세요

$ vi carthage-build.sh
# carthage-build.sh
# Usage example: ./carthage-build.sh --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.
# Xcode 12 Beta 3:
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_12A8169g = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig
# Xcode 12 beta 4
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_12A8179i = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig
# Xcode 12 beta 5
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_12A8189h = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig
# Xcode 12 beta 6
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_12A8189n = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig
# Xcode 12 GM
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_12A7208 = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig
# Xcode 12 GM 2
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_12A7209 = 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 'ONLY_ACTIVE_ARCH=NO' >> $xcconfig
echo 'VALID_ARCHS = $(inherited) x86_64' >> $xcconfig
export XCODE_XCCONFIG_FILE="$xcconfig"
echo $XCODE_XCCONFIG_FILE
carthage "$@

 

다 만들었으면 실행을 해봅니다.

$ ./carthage-build.sh --platform iOS

Success!

 

빌드가 제대로 됐네요.

 

혹시라도 그래도 안되시는 분들은 아래 링크의 방법으로 해보세요.

https://gist.github.com/skymobilebuilds/61f4a95bd62a3db36b52719aeab7e0d5

 

Xcode 12 Carthage Build Workaround

Xcode 12 Carthage Build Workaround. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

그래도 안되면 프로젝트 안의 Carthage 폴더를 지우고 캐시도 날리고 다시 해보세요.

$ rm -rf Carthage
$ rm -rf ~/Library/Caches/org.carthage.CarthageKit

$ rm -rf Carthage
$ rm -rf ~/Library/Caches/org.carthage.CarthageKit

 

그런데 왜 CocoaPods과 Swift Package Manager는 이상이 없는 걸까요?

(그건 다음시간에..)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함