Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

lanches
ブランドとファンを繋ぐクラウドプラットフォーム「EAP」の開発をしています。
https://www.lanches.co.jp/
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