埋め込まれたビットコード用語に問題があります。
埋め込みビットコードとは? 新しい Xcode で
いつ有効にしますか? Xcode 7 で
有効にすると、バイナリはどうなりますか?ENABLE_BITCODE
ENABLE_BITCODE
6 に答える
埋め込みビットコードとは?
ドキュメントによると:
ビットコードは、コンパイルされたプログラムの中間表現です。ビットコードを含む iTunes Connect にアップロードしたアプリはコンパイルされ、App Store でリンクされます。ビットコードを含めると、アプリの新しいバージョンをストアに提出しなくても、将来 Apple がアプリのバイナリを再最適化できるようになります。
更新: 「Xcode 7 の新機能」のこのフレーズは、アプリのサイズを縮小するためにSlicingにBitcodeが必要であると長い間考えさせられました。
App Store に送信するためにアーカイブすると、Xcode はアプリを中間表現にコンパイルします。その後、App Store は必要に応じてビットコードを 64 ビットまたは 32 ビットの実行可能ファイルにコンパイルします。
ただし、そうではありません。BitcodeとSlicingは独立して機能します。Slicingはアプリのサイズを縮小してアプリ バンドルのバリアントを生成することであり、Bitcodeは特定のバイナリ最適化に関するものです。非ビットコード アプリの実行可能ファイルに含まれているアーキテクチャをチェックし、必要なものだけが含まれていることを確認して、これを検証しました。
Bitcodeを使用すると、 Slicingと呼ばれる他のApp Thinningコンポーネントを使用して、特定のアーキテクチャ向けの特定の実行可能ファイルを含むアプリ バンドルのバリアントを生成できます。たとえば、iPhone 5S バリアントには、arm64 実行可能ファイル、iPad Mini armv7 などのみが含まれます。
新しい Xcode で ENABLE_BITCODE を有効にするのはいつですか?
iOS アプリの場合、ビットコードがデフォルトですが、オプションです。ビットコードを提供する場合、アプリ バンドル内のすべてのアプリとフレームワークにビットコードを含める必要があります。watchOS および tvOS アプリの場合、ビットコードが必要です。
新しい Xcode で ENABLE_BITCODE が有効になっている場合、バイナリはどうなりますか?
Xcode 7 リファレンスから:
この設定を有効にすると、ターゲットまたはプロジェクトは、それをサポートするプラットフォームおよびアーキテクチャのコンパイル中にビットコードを生成する必要があることを示します。アーカイブ ビルドの場合、リンクされたバイナリにビットコードが生成され、アプリ ストアに送信されます。他のビルドの場合、コンパイラとリンカーは、コードがビットコード生成の要件に準拠しているかどうかを確認しますが、実際のビットコードは生成しません。
Bitcodeをより深く理解するのに役立ついくつかのリンクを次に示します。
アップデート
Apple は、ビットコードの有効化とは無関係にスライスが行われることを明らかにしました。これは、ビットコード非対応アプリがターゲット デバイスに適したアーキテクチャとしてのみダウンロードされる場合と同様に、実際に観察しました。
オリジナル
ビットコード。アプリを中間表現で App Store に提出するためにアーカイブします。中間表現は、配信時にターゲット デバイス用の 64 ビットまたは 32 ビットの実行可能ファイルにコンパイルされます。
スライス。アセット カタログに組み込まれ、プラットフォーム用にタグ付けされたアートワークにより、App Store はインストールに必要なものだけを配信できます。
私がこれを読んだ方法では、ビットコードをサポートしている場合、アプリのダウンローダーは、自分のデバイスに必要なコンパイル済みアーキテクチャのみを取得します。