🌟
BitriseのXcode12マシンでCarthageを使う
Xcode12でビルドする時に, ライブラリ管理にCarthage使っているとビルドに失敗してしまい苦しんでいる方が多いようで, 僕自身も苦しみました.
対応バージョンをiOS13以上にしてSwiftPMに寄せてしまってCarthageを切るなども考えられるようですが, 諸事情でiOS12以下を切り捨てられない人もたくさんいると思います(わたしがそれです).
ベストプラクティスかはわかりませんが, 今のところの私の対応方法を備忘録がてら共有しておきます.
Xcode12用のxcconfigファイルを作る
適当な名前をつけたxcconfigファイルを作成します.
今回はCarthageWorkaroundForXcode12.xcconfig
にします.
EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64=arm64 arm64e armv7 armv7s armv6 armv8
EXCLUDED_ARCHS=$(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT))
BitriseのStackをXcode12に変更する
StackからXcodeを変更しましょう.
BitriseのWorkflowにScriptを追加する
Carthageの手前に先ほどのxcconfigを読み込むScriptを差し込みます.
(本記事の内容に関係のない部分は隠してあります.)
Scriptの内容は↓です
set -euo pipefail // 正常終了以外しなかった場合に終了ステータスを返す.
envman add --key XCODE_XCCONFIG_FILE --value "$PWD/Configurations/CarthageWorkaroundForXcode12.xcconfig" // 環境変数がステップを跨いで共有されないのでenvmanを使用
$PWD/Configurations/CarthageWorkaroundForXcode12.xcconfig
のファイルパスは各々変更してください.
気をつけないといけないのが環境変数はステップを跨いで共有されない
ことです.
なのでenvman
を使用しています.
おわり
今回は急なiOS14リリースやXcode12ガチャだったり大変ですが, みなさん頑張っていきましょう笑
もっと良い方法やご指摘よろしくお願いしますmm
参考文献
BitriseでCarthage + Xcode 12 betaを使用してビルドする
Xcode betaでCartahgeがxcrun lipoでうまくいかない時の対処方法
Discussion