search
LoginSignup
54

More than 3 years have passed since last update.

posted at

updated at

Organization

【Xcode】Embedded Binaries と Linked Frameworks and Libraries の違いについて

これは?

スクリーンショット 2018-06-24 15.38.51.png

↑Generalタブの下の方にあるこいつらの違いについての備忘録

FirebaseSDKをCarthageで入れようとしたら詰まったので...

その前に

まずは StaticLibraryDynamicLibraryFramework の違いについておさらい

StaticLibrary(xxxx.a)

  • コンパイル時に静的に組み込まれるライブラリ
  • コンパイル時にリンクされるため、その分アプリケーションのサイズは大きくなる

DynamicLibrary(xxxx.dylib)

  • ランタイム時に実行されるライブラリ
  • 呼び出されて初めてコードが読み込まれるためアプリケーションのサイズは小さくて済む

Framework(xxxx.framework)

  • Bundleの一種(と考えた方がわかりやすい)
  • Libraryは画像やXibを含むことができないが Framework は可能
  • StaticFrameworkStaticLibrary を、 DynamicFrameworkDynamicLibrary を内包する

本題

それでは、Embedded BinariesLinked Frameworks and Libraries の違いについて見ていきます

Embedded Binaries

  • アプリケーションのBundleに組み込まれるバイナリ
  • 主にサードパーティ製の Framework をここに突っ込む

Linked Frameworks and Libraries

  • ビルド時にアプリケーションにリンクされる Framework および Library
  • アプリケーション内で Framework および Library のAPIを参照する場合はこっちに設定していく

例えば、サードパーティ製の Framework を導入する時の流れとしては
1. Embedded Binariesに突っ込む
2. Linked Frameworks and Librariesに設定する

となりますね。
(* Embedded Binaries に突っ込むだけでXcodeが Linked Frameworks and Libraries にも追加してくれますが)

詰まりどころ

FrameworkStaticFramework の場合、Embedded Binaries に突っ込む必要はなく、Linked Frameworks and Libraries の設定のみでOKです

なぜなら、

コンパイル時に静的に組み込まれるライブラリ

とあるように、Embedする必要がないからですね

(自分はFirebaseSDKが StaticFramework であることを失念しており結構時間を持ってかれました)

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
What you can do with signing up
54