LoginSignup
6
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を使用してコマンドラインでの作成がサポートされているようです。

6
2
0

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
  3. You can use dark theme
What you can do with signing up
6
2