web-dev-qa-db-ja.com

Xcodeの埋め込みバイナリとは何ですか?

Swiftプロジェクトで Alamofire を使用しています。手動インストール手順の一部は、Embedded Binariesアプリケーションターゲットの[全般]タブ。

enter image description here

埋め込みバイナリとは何ですか?

53
Doug Richardson

埋め込みバイナリは、プロジェクトをビルドするときにアプリケーションバンドルにコピーされるバイナリファイルです。アプリケーションがサードパーティのフレームワークに依存している場合は、組み込みのバイナリを使用して、マシンにそれらのフレームワークをインストールしなくてもユーザーがアプリケーションを使用できるようにします。組み込みバイナリにより、ユーザーはサードパーティのフレームワークを手動でインストールする必要がなくなります。アプリケーションは、埋め込まれたフレームワークを使用します。

Alamofireの例では、アプリケーションはAlamofireに依存しています。 Alamofireフレームワークを埋め込まなかった場合、Alamofireを手動でインストールしない限り、誰もアプリケーションを使用できません。 Alamofireをアプリケーションに埋め込むことで、誰でもアプリケーションを実行できます。

41
Mark Szymczyk
  • 「バイナリ」とは、コンパイルされたコード-「ソースコード」ではなく、コードをテキストとして記述するときに使用するものです。

    彼らはcouldにソースコードを与え、yoをコンパイルさせたが、彼らはコンパイルしなかった。彼らはソースコードを秘密にしているので、彼らはそれをすべてあなたに与えましたafterコンパイルなので、あなたはそれを読むことができません。

  • 「埋め込み」とは、ビルド時にアプリバンドルにコピーすることで、アプリバンドルに含めることです。

    そのため、彼らはコンパイル済みのコード(フレームワーク)を渡して、それらをアプリバンドルに含める方法を教えています。これらのフレームワークは、Cocoaのフレームワークとは異なり、デバイス上にまだ存在しないため、アプリ内にそれらを含めない場合、それらは存在せず、アプリはそれらを呼び出すことができません。

    これをCocoaのフレームワークと比較してください。それらもコンパイルされたコードです。しかし、それらはdoデバイス上に既に存在します。したがって、それらはアプリ内に埋め込まれていません。それらは単にlinkedです(そして、もし現れたら、次のグループLinked Frameworks and Librariesに現れるでしょう)。

39
matt

バイナリを埋め込むと、フレームワーク全体がターゲットにコピーされます。

frameworkは、ダイナミックライブラリ、ヘッダーファイル、ストーリーボード、画像ファイル、ローカライズされた文字列などのリソースを単一のパッケージにカプセル化する階層ディレクトリです。フレームワークを使用するアプリは、アプリのバンドルにembed the frameworkする必要があります。

したがって、フレームワークをアプリに埋め込むと、アプリのバンドルにコピーされるため、アプリのサイズが大きくなります。ほとんどのシナリオでは、サードパーティのフレームワークを使用しているときにこのセクションを使用します。

frameworkEmbedded Binariesに追加すると、そのフレームワークもLinked Frameworks and Librariesに自動的に追加されます。

詳細については、Apple documentation: https://developer.Apple.com/library/archive/technotes/tn2435/_index.html を参照してください。

2
Shubham Mishra

Embeddingは、実際にはフレームワークのコピーをデフォルトでFrameworksディレクトリの下のアプリケーションバンドルに追加します。アプリケーションは、リンクされていない限り、そのフレームワークで何もできません。 Xcodeはこれをあなたに代わって自由にします。 [リンクと埋め込み]

ソースは here です

0
yoAlex5