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
バイナリが衝突していることが原因と考えられているそうです。
Carthage でも下記の Issue で対応が進んでいるようです👀
arm64?
解決
解決策は、Carthage の Issue に出ていた Solution を使用しました。まだ、Carthage 公式自体での対応は完了していないため、Shell Script 経由で、シュミレータに必要(Intel Mac で)のないアーキテクチャを Exclude してから、carthage
コマンドを呼び出せるようにしてある感じです。
参考
- https://github.com/Carthage/Carthage/issues/3019
- https://developer.apple.com/forums/thread/655599?answerId=623926022#623926022
- https://medium.com/@johny.urgiles/wrestling-with-xcode-12-and-arm64-6c7977922abb