XCFrameworkとは
- Xcode11から利用開始となった、バイナリフレームワーク配布のため新たにサポートされた形式です。
- XCFrameworkはエミュレータやデバイスなどの複数のプラットフォームを同じバンドルに入れられます。
- ひとつのXCFrameworkの中に複数の
.framework
がバンドルされます。 - XCFrameworkはXcodeがサポートするどのプラットフォームにも対応します。(ios, macOS, tvOS, watchOS)
- ひとつのXCFrameworkの中に複数の
XCFrameworkだと何が嬉しいのか
- これまでエミュレータと実機に対応したユニバーサルフレームワークを生成したい場合、lipoコマンドを使用して結合する必要がありましたが、XCFrameworkだとそれをする必要がありません。
- lipoコマンドで生成したユニバーサルフレームワークはストア提出時にエミュレータ用のバイナリ(x86_64)を取り除く必要がありましたが、XCFrameworkではその手間が発生しません。
- XCFrameworkだとストア申請時はデバイス用のバイナリのみ埋め込まれます。
XCFrameworkを生成するには
- ビルド設定の
Build Libraries for Distribution
をYESにします。 - 1を設定した上で、下記のコマンドでフレームワークを生成します。
xcodebuild -create-xcframework -framework [path] -framework [path] -output Hogehoge.xcframework
参考:
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_release_notes
https://developer.apple.com/videos/play/wwdc2019/416/