[解決済み】Xcodeのビルドオプション「Enable bitcode」Yes/Noの影響について
質問
昨日、parse.com ライブラリに関する警告を大量に認識しました。
URGENT: '[path]/Parse.framework/Parse(PFAnalytics.o)' がビットコードなしでビルドされたため、すべてのビットコードが削除されます。ビットコードを有効にして再構築するか(Xcodeの設定ENABLE_BITCODE)、ベンダーから最新のライブラリを入手するか、このターゲットに対してビットコードを無効にする必要があります。注:これは将来的にはエラーになります。
でその警告を消すことができることは承知しています。 この回答 しかし、AppStoreへの登録や、私のアプリの実際のパフォーマンスに関して、何か悪い影響があるのかどうか、今考えています。
Xcodeはビットコードに関する情報を提供します
<ブロッククオートこの設定を有効にすると、ターゲットまたはプロジェクトは、それをサポートするプラットフォームおよびアーキテクチャのために、コンパイル中にビットコードを生成する必要があることを示します。 アーカイブビルドの場合、アプリストアに提出するためのリンクされたバイナリにビットコードが生成されます。 その他のビルドでは、コンパイラとリンカはコードがビットコード生成の要件に準拠しているかどうかをチェックしますが、実際のビットコードは生成されません。[enable_bitcode]を使用します。
しかし、この文章から本当に役に立つ情報を得ることはできません。
- リンク先の回答を使って、悪影響を与えず、将来のAppStoreへの投稿を損なうことなく、この問題を回避することは可能ですか?
-
は何を意味しているのでしょうか?
ENABLE_BITCODE
将来的には、オプションではない要件になるのでしょうか? - 有効化/無効化した場合、パフォーマンスに影響はありますか?
解決方法は?
<ブロッククオート- ENABLE_BITCODEは実際に何をするのですか、将来的には非オプションの要件になるのでしょうか。
どのレベルの回答を求めているのかわからないので、少し旅をしてみましょう。すでにご存知の方もいらっしゃるかもしれませんが。
プロジェクトをビルドするとき、Xcode は
clang
はObjective-Cのターゲットで
swift
/
swiftc
はSwiftのターゲット用です。これらのコンパイラはどちらも、アプリをコンパイルして
中間表現
(IR)の一つで、そのIRはビットコードである。このIRから、LLVMというプログラムが引き継ぎ、x86の32ビットと64ビットモード(シミュレータ用)とarm6/arm7/arm7s/arm64(デバイス用)に必要なバイナリを作成します。通常、これらの異なるバイナリをひとまとめにして
ファットバイナリ
.
ENABLE_BITCODEオプションは、この最後のステップをカットします。これは、IRビットコードバイナリを持つアプリのバージョンを作成します。これには多くの素晴らしい機能がありますが、1つの大きな欠点があります。ビットコードバイナリを持つアプリを実行するためには、ビットコードを再コンパイルする必要があります ( アセンブルされたとか、トランスコードされたとか...正しい動詞は分かりませんが...。 をx86またはARMのバイナリに変換します。
ビットコードアプリがApp Storeに提出されると、Appleはこの最終ステップを行い、完成したバイナリを作成します。
今はビットコードアプリはオプションですが、Appleはオプションのものを(64ビットサポートのように)要件に変えてきたという歴史があります。これは通常数年かかるので、サードパーティの開発者(Parseなど)にはアップデートする時間があります。
<ブロッククオート- 上記の方法は、悪影響を与えず、将来のAppStoreへの登録を損なうことなく使用できますか?
はい、ENABLE_BITCODE をオフにすれば、すべて以前と同じように動作します。AppleがビットコードアプリをApp Storeの要件にするまでは、問題ありません。
- 有効化/無効化した場合、パフォーマンスへの影響はありますか?
しかし、テスト用アプリの内部配布はより複雑になる可能性があります。
ポジティブな影響については......それは複雑ですね。
App Storeで配布する場合、Appleは、ファットバイナリで1つのアプリではなく、各マシンアーキテクチャ(arm6/arm7/arm7s/arm64)用に別々のバージョンのアプリを作成する予定です。これは、iOSデバイスにインストールされるアプリが小さくなることを意味します。
また、ビットコードの再コンパイル時( アセンブルされた、あるいはトランスコードされた......また、正しい動詞がわからないのですが......。 )、最適化されます。LLVMは常に新しい、より良い最適化を生み出すために努力している。理論的には、App Storeは、LLVMの新しいリリースごとに、App Storeのアプリの別バージョンを再作成することができるので、あなたのアプリは、最新のLLVM技術で再最適化される可能性があります。
関連
-
[解決済み】印刷します。エントリ, ":CFBundleIdentifier", Does Not Exist
-
[解決済み] Xcode は、[バンドル ID] に一致する iOS App Store プロビジョニングプロファイルを見つけられませんでした。
-
[解決済み] 警告: 'characters' は非推奨です。String または Substring を直接使用してください。
-
[解決済み] UITabBar アイコンが正しく表示されない
-
[解決済み] Xcode Simulatorのアニメーションをエディタで再生すると、極端に遅くなる。
-
[解決済み] 定義がSwift 2.0の旧値と矛盾する
-
[解決済み] viewDidLoad()は何のためにあるのですか?[重複]する
-
[解決済み] HTTPの読み込みに失敗しました(エラーコード:-1200 [3:-9802])。
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] iOS 9の新たな警告 "すべてのビットコードが削除されます"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Argument passed to call that takes no arguments "エラーを修正するには?
-
[解決済み] Xcode Simulatorのアニメーションをエディタで再生すると、極端に遅くなる。
-
[解決済み] このアクションは完了できませんでした。再試行 (-22421)
-
[解決済み] iOS HTTP GET リクエストを実行できません -Error Domain=NSURLErrorDomain Code=-1012
-
[解決済み] NSIntegerからNSStringデータ型に変換するにはどうすればよいですか?
-
[解決済み] 起動画面にカスタムクラス名が設定されない場合がある
-
[解決済み] CFBundleVersionとCFBundleShortVersionStringには、どのような値を使用すればよいですか?
-
[解決済み] HTTPの読み込みに失敗しました(エラーコード:-1200 [3:-9802])。
-
[解決済み] iOS 9の新たな警告 "すべてのビットコードが削除されます"
-
[解決済み】xcode 7でENABLE_BITCODEは何をするのですか?