iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

Xcode12.0(GM) で carthage build ができない

Xcode12(swift5.2.4 -> swift5.3) への以降に伴い、Carthage で build していたライブラリを swift5.3 で build 使用とすると失敗するようになってしまいました🤔

$ carthage build XCGLogger --no-use-binaries --platform iOS
*** xcodebuild output can be found in /var/folders/8p/vbtkpjdx0_77vz_j8hvk0c040000gn/T/carthage-xcodebuild.z26IJU.log
*** Building scheme "ObjcExceptionBridging (iOS)" in XCGLogger.xcodeproj
Build Failed
    Task failed with exit code 1:

原因

どうやら、Xcode12 からは Apple Silicon Mac でのシュミレータの動作を正常に行えるようにするために、新しく arm64 ベースのシュミレータがバンドルされたことによって、実機用にビルドされていた arm64 のバイナリとシュミレータ用の arm64 バイナリが衝突していることが原因と考えられているそうです。

developer.apple.com

Carthage でも下記の Issue で対応が進んでいるようです👀

github.com

arm64?

yamato8010.hatenablog.com

解決

解決策は、Carthage の Issue に出ていた Solution を使用しました。まだ、Carthage 公式自体での対応は完了していないため、Shell Script 経由で、シュミレータに必要(Intel Mac で)のないアーキテクチャを Exclude してから、carthage コマンドを呼び出せるようにしてある感じです。

github.com

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com