CatHand Blog

アプリ開発やMac弄り

Carthageで作成したxcframeworkを追加した後archiveのvalidationでエラーになる

CarthageでRealmとかFirebase等の大きめのライブラリがxcframework化できるようになったのでビルド時間短縮のために導入しています。

その際、ストアに提出しようとしたときに以下のようなエラーが出る場合があります。

error: exportArchive: IPA processing failed
Found an unexpected Mach-O header code: 0x72613c21

f:id:cathandnya:20210623091033p:plain

これらはターゲットの設定で、追加したxcframeworkの設定を Embed & Sign から Do Not Embed にすると直ります。

f:id:cathandnya:20210623091501p:plain

Carthageのドキュメントにも以下のように書かれています。

If you are using Carthage for an application, select "Embed & Sign", otherwise "Do Not Embed".

GitHub - Carthage/Carthage: A simple, decentralized dependency manager for Cocoa

が、私の試したプロジェクトでは全てを Do Not Embed にするとBitrise上で

export failed, error: %!!(MISSING)s(<nil>)

のような謎のエラーとなることがありました。raw-xcodebuild-output.log をみるとエラーを起こしているxcframeworkがわかるので、それを Embed & Sign に戻していくとエラーが解消されていきます。結局Firebase関連のxcframeworkだけ Do Not Embed にするとビルドが通るようになりました。