これは?
↑Generalタブの下の方にあるこいつらの違いについての備忘録
FirebaseSDKをCarthageで入れようとしたら詰まったので...
その前に
まずは StaticLibrary
と DynamicLibrary
と Framework
の違いについておさらい
StaticLibrary(xxxx.a)
- コンパイル時に静的に組み込まれるライブラリ
- コンパイル時にリンクされるため、その分アプリケーションのサイズは大きくなる
DynamicLibrary(xxxx.dylib)
- ランタイム時に実行されるライブラリ
- 呼び出されて初めてコードが読み込まれるためアプリケーションのサイズは小さくて済む
Framework(xxxx.framework)
- Bundleの一種(と考えた方がわかりやすい)
- Libraryは画像やXibを含むことができないが
Framework
は可能 -
StaticFramework
はStaticLibrary
を、DynamicFramework
はDynamicLibrary
を内包する
本題
それでは、Embedded Binaries
と Linked Frameworks and Libraries
の違いについて見ていきます
Embedded Binaries
- アプリケーションのBundleに組み込まれるバイナリ
- 主にサードパーティ製の
Framework
をここに突っ込む
Linked Frameworks and Libraries
- ビルド時にアプリケーションにリンクされる
Framework
およびLibrary
- アプリケーション内で
Framework
およびLibrary
のAPIを参照する場合はこっちに設定していく
例えば、サードパーティ製の Framework
を導入する時の流れとしては
-
Embedded Binaries
に突っ込む -
Linked Frameworks and Libraries
に設定する
となりますね。
(* Embedded Binaries
に突っ込むだけでXcodeが Linked Frameworks and Libraries
にも追加してくれますが)
詰まりどころ
Framework
が StaticFramework の場合、Embedded Binaries
に突っ込む必要はなく、Linked Frameworks and Libraries
の設定のみでOKです
なぜなら、
コンパイル時に静的に組み込まれるライブラリ
とあるように、Embedする必要がないからですね
(自分はFirebaseSDKが StaticFramework
であることを失念しており結構時間を持ってかれました)