LoginSignup
2

More than 3 years have passed since last update.

Xcode11から新しいXCFrameworksフォーマットの配布をサポート

Posted at

はじめに

Xcode11から新しいXCFrameworksフォーマットで配布できるとのことだったので、WWDC2019の以下のセッションを見て、その内容をまとめてみました。
参考:
Session 416 Binary Frameworks in Swift

XCFrameworksフォーマットの登場

Xcode 11は新しいXCFrameworksフォーマットを使ったバイナリライブラリの配布をサポートするとのことです。(拡張子「.xcframework」)
発表のあった、Project Catalyst(iPadアプリがMacOSでも動く)と関係していそうです。

これまでのフレームワーク

以前は、SDK(.framework形式)を配布する場合、シミュレーター用のframeworkと、端末用のframeworkをそれぞれビルドしてから、各frameworkのバンドル内に含まれるバイナリをスクリプトで結合して1つのframeworkにしていました。

シミュレーター用というのは、Xcodeでデバッグできるように配布するのですが、App Store申請時にアプリに含まれるframeworkのバイナリにシミュレーター用が含まれていると、アプリのバリデーション時にエラーとなり、AppStoreにアップロードできないという問題があり、AppStoreにビルドをアップロードする際にはシミュレーター用を除去する必要がありました。

XCFrameworkではどうなるのか

XCFrameworkでは、以前のframeworkのように結合スクリプトを実行する必要なく、iOSシミュレーター用とiOSデバイス用の両方を含めることができます。

framework1.png

.xcframework形式では、複数の.frameworkを1つのディレクトリにまとめられる構造となっているため、iOSシミュレーター用とiOSデバイス用の両方を含めることができます。

XCFrameworkの使い方いろいろ

イメージ 使い方
※左の図参照 framework2_1.png Staticライブラリ配布。(これまでStaticライブラリの静的ライブラリとそれに対応するヘッダーファイルである.aファイルと.hファイルの複数ファイルの配布でしたが、XCFrameworkとしてまとめられそうです。)
framework2_2.png SwiftとCベースのバイナリも一緒に配布できる。
framework2_3.png 複数のプラットフォーム(iPhone、macOS、watch、tvOSなど)をまとめたものを配布できる。

XCFrameworkの作り方

XCFrameworkの作り方の概要は次のとおりです。

Build Libraries for Distribution をYESに

Build Libraries for Distribution という新しいBuild設定がが追加されています。
XCFrameworkにバンドルされているフレームワークはこれをYESに設定する必要があります。

framework3.png

アーカイブする

XCFrameworksの作成は、xcodebuild -create-xcframeworkを使用してコマンドラインでの作成がサポートされているようです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2