2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Organization

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

はじめに

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?