-
[iOS] Carthage 가 Xcode 12에서 빌드오류가 난다고!👻 iOS 2021. 3. 19. 22:17
이전 포스팅과 관련이 있지만 안 보셔도 무방합니다. 실패사례니까... ㅠㅠ
2020.12.28 - [👻 iOS] - [iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #1
[iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #1
RIBs 를 이용해서 구조를 잡기로 했고, 모듈의 버전관리는 Carthage 로 해보기로(?) 했어요. 그래서 Quick Start 를 보며 무작정 뛰어들어 봅니다. github.com/Carthage/Carthage#quick-start Carthage/Carthage A..
maart.tistory.com
Carthage 로 RIBs 를 설치해 보려고 했다가 망한 포스팅을 이제야 살려봅니다.
후... 저는 저 시기 이후로 Carthage가 싫어졌어요.
물론, 빌드속도에 엄청난 이득을 주는 것에는 여전히 큰 신뢰를 갖고 있지만
이렇게 Xcode 버전이 올라가면서 빌드 자체를 실패해 버리면 나중에 업무 마비가 오는게 아닌가 걱정이 들어서요;;
어쨌든,
Carthage 를 잊고 지내다가 Xcode 12에서 arm64 설정으로 빌드를 하다보니 오류가 생긴것이다. 라며 shell script 를 이용해 강제로 x86_64 로 셋팅해서 빌드를 하라는 얘길 접하게 됩니다.
와..... 그거였어?
Carthage git에 이슈를 찾아보니 역사가 유구하네요. 많은 사람들이 속앓이 했을듯.
집단지성으로 만들어진 스크립트는 아래 링크와 같습니다.
github.com/Carthage/Carthage/issues/3019#issuecomment-734415287
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
#!/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. for simulator in iphonesimulator appletvsimulator; do echo "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_${simulator}__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = arm64 arm64e armv7 armv7s armv6 armv8" >> $xcconfig done echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(PLATFORM_NAME)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig export XCODE_XCCONFIG_FILE="$xcconfig" cat $XCODE_XCCONFIG_FILE carthage "$@"
carthage.sh 파일을 위 내용으로 만들어서 아래와 같이 실행!
> chmod +x carthage.sh > ./carthage.sh build or ./carthage.sh update --use-submodules
이제 ** BUILD SUCCEEDED ** 를 보실 수 있습니다.
하아......
그럼 이제 빌드 되었으니 프로젝트에 넣어 주어야 겠죠.
RIBs 셋팅은 다음 시간에 계속...