問題タブ [bitcode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - ビットコード オプションを使用してファット フレームワークを作成するにはどうすればよいですか?
環境: XCode 7.0.1 モジュール: Objective-C バンドル タイプ: フレームワーク
こんにちは、armv7、armv7s、arm64、i386、および x86_64 をサポートするフレームワークを作成しようとしています。ファット ライブラリを作成するために集計を使用しています。集約スクリプト内で、2 つの xcodebuild コマンドを実行しています。また、ターゲット ビルド設定で Enable Bitcode=YES と Other C Flags=-fembed-bitcode を設定しました。予防措置として、私は ENABLE_BITCODE=YES および OTHER_CFLAGS="-fembed-bitcode" オプションを xcodebuild コマンドに追加しています
私のxcodeビルドコマンドは次のとおりです-
上記の 2 つのコマンドを実行した後、これら 2 つのビルドを組み合わせて、以下のコマンドを使用してファット フレームワーク バイナリを作成しています。
私が直面している問題は、リポが作成された後です。ビットコード対応アプリケーションで使用できません。を実行した後otool -l framework_binary | grep -LLVM
、ビットコードが有効なフラグまたは __LLVM が表示されません。
Lipo は、ファット バイナリからビットコードを削除します。lipo コマンドの実行中にビットコードを保持する方法はありますか?
訂正: Nestor からの返信に基づいて、otool コマンドを実行したところotool -l -arch armv7 framework_binary | grep LLVM
、驚いたことに、segname __LLVM clang が表示されました。ただし、同じファット フレームワーク バイナリを自分のプロジェクトに統合すると、シミュレーターでは正常にビルドされますが、デバイスでの実行中に次のエラーがスローされます - ld: 'MyBinary' にはビットコードが含まれていません。ビットコードを有効にして再ビルドするか (Xcode 設定 ENABLE_BITCODE)、ベンダーから更新されたライブラリを入手するか、このターゲットのビットコードを無効にする必要があります。アーキテクチャ用 armv7
ios - 1 つ以上のライブラリにビットコードが含まれている場合でも、iOS でビットコードを無効にすることはできますか?
ビットコードを含むライブラリが 1 つ以上ある場合でも、ビットコードが無効になっている iOS アプリケーションをビルドして公開することはできますか?
私が依存しているすべてのライブラリがビットコードをサポートしているわけではありません。しかし、一部のライブラリにビットコードがある場合、iOS ターゲットのビットコードを無効にすることはできないという特定のフォーラムを読みました。
iOS と watchOS の両方をターゲットにしている場合はどうなりますか? watchOS のビットコードを選択的に有効にし (実際には必須)、iOS ターゲットを無効にできることは理解していますが、ライブラリが混在している場合はどうでしょうか?
ありがとう
xcode - tvOS: 追跡方法: 無効な実行可能ファイル - 実行可能ファイル 'xy' にはビットコードが含まれていません
私のtvOS
アプリは、Apple によるサーバー側の検証で繰り返し失敗し、次のような電子メール通知が表示されました。
無効な実行可能ファイル - 実行可能ファイル「VPK_FULL_TV.app/VPK_FULL_TV」にビットコードが含まれていません
ここで説明されている方法を使用しました:フレームワークがXcode7でサポートされているビットコードであるかどうかを確認する方法
と、すべてのライブラリ/フレームワークが少なくとも1行をsegname __LLVM
.
このテストは でどのくらい十分なのだろう
otool
か? テストで行segname __LLVM
が出力されても、一部の機能がまだビットコードなしで除外されている可能性はありますか?ビットコードの完全性をテストする別の方法はありますか?
また、標準ライブラリでこのテストを試しましたが、行
/Applications/Xcode-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib/libresolv.9.tbd
が出力segname __LLVM
されないため、ビットコードが含まれていないことが示されます。私はそうあるべきですよね?とにかく、この .tbd lib は何ですか?
ところで、otool
便利な場合に実行するためのショートカットを次に示します。
test_bitcode.sh
ios - Xcode リンカの問題
私はあなたに手紙を書いています。
Xcode から iPhone にアプリをコンパイルしようとしていますが、実行を押すとこのエラーが発生するという問題が発生し続けます。
これで、フレームワークの検索パスとライブラリの検索パスの両方が空であることを確認しました。これが私がそのような問題を抱えている理由です。私は一生ここで問題を理解することはできません! Xcode がリンク先として指定されていないものをリンクしようとするのはなぜですか!
よろしくお願いします。