티스토리 뷰
첫글을 이런글로 작성할 줄은 몰랐네요.
어제(9/17, 목) 저녁 먹고 오니 자동업데이트로 Xcode 12로 업데이트 되었습니다.
UI도 뭔가 이뻐지고 탭! 탭이 생겼어요!
기존에 사용하던 cmd + T로 열던 탭 방식이 아니라 InteliJ에서 보던 파일 단위로 열리는 탭이에요
그런데..
빌드가 안되요
Swift버전이 5.2.4에서 5.3으로 업데이트되면서 Carthage를 사용하는 framework의 binary를 다시 빌드해야 합니다.
뭐 다시 빌드 해야죠..
$ carthage build --platform iOS
$ carthage build --platform iOS
응?
Alamofire github로 달려갑니다.
이미 어느분이 이슈를 남기셨네요. Carthage의 문제인가 봅니다.
어쨌든 저분이 링크에 있는 방법으로 해결했다고 하니 Carthage를 방문해 봅니다.
이미 많은 분들이 다녀가셨어요.
github.com/Carthage/Carthage/issues/3019#issuecomment-693381253
상황은 이렇습니다.
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
빌드가 제대로 됐네요.
혹시라도 그래도 안되시는 분들은 아래 링크의 방법으로 해보세요.
https://gist.github.com/skymobilebuilds/61f4a95bd62a3db36b52719aeab7e0d5
그래도 안되면 프로젝트 안의 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는 이상이 없는 걸까요?
(그건 다음시간에..)
'iOS' 카테고리의 다른 글
Jenkins - iOS를 위한 CI/CD 사용해보기 (with CocoaPods, Carthage) (0) | 2020.09.29 |
---|---|
Travis CI - iOS를 위한 CI/CD 사용해보기 (with CocoaPods, Carthage cache) (0) | 2020.09.28 |
Bitrise - iOS를 위한 CI/CD 사용해보기 (with CocoaPods, Carthage cache) (0) | 2020.09.24 |