Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Firebaseの依存関係を静的または動的にリンクする

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

CocoaPods 1.9.0 および Firebase 7 以降では、Firebase の依存関係を静的または動的フレームワークとして構築するかどうかを選択できます。特定の動的ライブラリの動作が必要でない限り、静的フレームワークを使用することをお勧めします。

GitHub 以外で開発されたライブラリは、CocoaPods 1.9.0 以降でも静的にしかリンクできないことに注意してください。現在、このライブラリ リストには AdMob、Analytics、Firebase ML、Performance Monitoring が含まれています。 zip ファイル、Swift Package Manager、および Carthage を含む他のすべての配布チャネルは、静的にリンクされたライブラリのみを提供します。

このドキュメントは、Apple プラットフォームでの動的および静的リンクに関する実用的な知識があることを前提としています。これらの概念に慣れていない場合は、次のドキュメントを参照してください。

このドキュメントはライブラリ リンケージのタイプに関係しており、実行不可能なリソース バンドルのロードには関係していないため、ライブラリフレームワークという用語は同じ意味で使用されます。

静的リンク

静的にリンクされたライブラリは、ビルド時にアプリケーションの実行可能ファイルにバンドルされます。その結果、静的ライブラリ内のオブジェクト ファイルはアプリの起動時にアプリに存在し、アプリの起動時にダイナミック リンカーによって解決される必要はありません。その結果、静的リンクを使用するアプリはより速く起動します。これにより、バイナリ/アプリの実行可能ファイルがわずかに大きくなりますが、実行可能ファイルのサイズが大きくなることは、バンドルされた動的ライブラリがないことで相殺されることに注意してください。

Podfile でリンクを明示的に指定することで、Firebase 依存関係の静的リンクを強制できます。

# cocoapods >= 1.9.0
use_frameworks! :linkage => :static

動的リンク

動的にリンクされたライブラリは、アプリのメインの実行可能ファイルとは別にアプリ バンドルに格納され、動的リンカーによってアプリの起動時に読み込まれる必要があります。 Apple のフレームワークはすべて動的にリンクされており、プロセス間でコードを共有できます。同様に、動的フレームワークを使用して、アプリと拡張ターゲットの間でコードを共有できます。両方が同じ開発者によって署名されている場合でも、別々のアプリケーション間で動的フレームワークを共有することはできません。

Firebase を動的フレームワーク ターゲットの依存関係として使用する場合は、Firebase を動的にリンクする必要もあります。そうしないと、アプリの実行時に重複したクラス定義が発生します。動的リンクは、 use_frameworks!ですが、Podfile で動的リンケージを明示的に指定することもできます。

# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic

特にアプリに多くの依存関係がある場合は、動的リンクによってアプリの起動時間が長くなる可能性があることに注意してください。