BitriseのXcode12マシンでCarthageを使う

1 min read読了の目安(約1500字

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を使用してビルドする

https://qiita.com/krymsan/items/6cc5c9769cacd45f83a4

Xcode betaでCartahgeがxcrun lipoでうまくいかない時の対処方法

https://techandmake.hatenablog.com/entry/2020/07/30/181108