Xcode 14.2.0でビルドする際の注意点

Monacaチームの小田川です。

毎年4月は、App Storeにアプリを提出するための要件が更新される月になります。今年は、4月25日から適用開始となります。詳しくは、以下を参照してください。

2023年4月25日以降からは、App Storeに提出するiOSおよびiPadOS用アプリは、Xcode 14.1およびiOS 16.1 SDKでビルドする必要があります。

Monacaでは、Cordova 11用のMonacaプロジェクトから、Xcode 14.2.0に対応しています。Xcode 14.2.0の設定方法については、下記を参照してください。

これまでMonacaで提供していたiOS用ビルドサーバでは、Intelプロセッサ搭載のMacが使用されていました。Xcode 14.2.0からは、Appleシリコン搭載のMacが使用されています。AppleシリコンのMacの場合、これまでのIntelプロセッサのMacとは仕様が異なる部分があるため、ビルドの結果に違いが発生する場合があります。今回は、Xcode 14.2.0でビルドする際の注意点について見ていきたいと思います。

ライブラリーを使用する際の注意点

サードパーティー製Cordovaプラグインを使用している場合、Cordovaプラグイン側の仕様により、Intelアーキテクチャー用のライブラリーが使用されていると、AppleシリコンのMacでビルドした際にビルドエラーが発生する場合があります。また、Cordovaプラグイン以外でも、Monacaプロジェクト内に静的ライブラリのようなコンパイルされたファイルが含まれていると、下記のようなビルドエラーが発生する場合があります。

error: exportArchive: Reached end of file while looking for: Mach-O slice.

また、サードパーティー製CordovaプラグインでCocoaPodsのライブラリーを使用している場合、設定されているライブラリーのバージョンが低いと、下記のようなビルドエラーが発生する場合があります。

/tmp/download/platforms/ios/Pods/Pods.xcodeproj: error: Signing for "gRPC-C++-gRPCCertificates-Cpp" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'gRPC-C++-gRPCCertificates-Cpp' from project 'Pods')

/tmp/download/platforms/ios/Pods/Pods.xcodeproj: error: Signing for "FirebaseInAppMessaging-InAppMessagingDisplayResources" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'FirebaseInAppMessaging-InAppMessagingDisplayResources' from project 'Pods')

/tmp/download/platforms/ios/Pods/Pods.xcodeproj: error: Signing for "GoogleSignIn-GoogleSignIn" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'GoogleSignIn-GoogleSignIn' from project 'Pods')

Xcode 14.2.0未満でビルドが成功していた場合は、一度、AppleシリコンやXcode 14.2.0に対応した更新版が提供されていないか確認してみてください。

シミュレータービルドの注意点

IntelプロセッサのMacでシミュレータービルドを行った場合は、Intel用のアプリが作成されます。AppleシリコンのMacで動作するシミュレーターでIntel用のアプリを実行する場合は、Appleから提供されているRosettaを使用することで回避できる場合がありました。

AppleシリコンのMacでシミュレータービルドを行った場合は、Appleシリコン用のアプリが作成されます。IntelプロセッサのMacの場合は、Rosettaのようなツールが提供されていないため、Appleシリコン用のアプリは、IntelプロセッサのMacで動作するシミュレーターでは、実行させることができません。IntelプロセッサのMacで動作するシミュレーターにAppleシリコン用のアプリをインストールした場合は、スクリーンショットのようなエラーが出力されます。

現状、AppleシリコンのMacで実行されるシミュレータビルドでは、Intel用のアプリを作成することはできないため、Intel用のアプリが必要な場合は、Xcode 14.2.0未満のシミュレータービルドで対応する必要があります。

おわりに

今後、Monacaで提供されるiOSビルドサーバーは、AppleシリコンのMacへ移行していく予定になっています。

Monacaプロジェクトに設定されているXcodeのバージョンをXcode 14.2未満からXcode 14.2.0以降へ設定変更した場合、サードパーティー製Cordovaプラグイン等で使用されているライブラリーの影響により、ビルドエラーが発生する可能性があります。そのため、現在開発中のMonacaプロジェクトが、Xcode 14.2.0でビルドができるか、事前にテストすることをおすすめします。