アプリのアーカイブでこのエラーが発生します。使用したフレームワークは私自身のものです。だから私はクロスチェックしました。フレームワークのビットコードは有効です。なぜこの問題が発生するのかわかりません。これらは私のフレームワークのビルド設定です:
私は this link をたどりましたが、うまくいきませんでした。フレームワークのプロジェクト(リンクでは推奨されているため、ターゲットではなくプロジェクト)設定で-fembed-bitcodeを設定しようとしました。
OPで説明されているように、すべてが有効になっている次の魂のために、それを使用してアプリをアーカイブできなかった場合は、次のように動作しました。
プロジェクト(ターゲットなし)に追加し、プロジェクト(プロジェクト:ポッドなど)ごとに、ビルド設定で「ユーザー定義」を1つ追加します。
BITCODE_GENERATION_MODEデバッグ=マーカーリリース=ビットコード
ビットコードは、一連の指示が与えられた場合、さまざまな方法で再コンパイルするために使用できるアプリの抽象的なエンコーディングです。次のコマンドを実行すると、バイナリがビットコード互換かどうかを確認できます。
otool -l (my .o or .a file) | grep __LLVM
。
正常にビルドすると、Xcodeはビルドフラグ-fembed-bitcode-marker
をclangの呼び出しに追加します。
-fembed-bitcode
を追加するには、プロジェクトのビルド設定->その他のCフラグを選択し、デバッグを-fembed-bitcode-marker
に、リリースを-fembed-bitcode
に設定します。これにより、ビットコードでライブラリがビルドされます。
BITCODE_GENERATION_MODE
ユーザー定義の設定でBITCODE_GENERATION_MODE=bitcode
を設定すると、ビルドフェーズの間でも、ファイルはフラグ-fembed-bitcode
を使用してコンパイルされます。
また、BITCODE_GENERATION_MODE=marker
を設定すると、アクションフェーズとは関係なく、ファイルはフラグ-fembed-bitcode-marker
を使用してコンパイルされます。
したがって、すべてのアクション(ビルドとアーカイブ)でビットコードを有効にする場合は、BITCODE_GENERATION_MODE
設定を使用して手動またはスクリプトで実行することをお勧めします。
手動
ビルド設定で、上部にある+記号をクリックして、BITCODE_GENERATION_MODE
という名前のユーザー定義ビルド設定を追加し、デバッグをmarker
に、リリースをbitcode
に設定します。
リリースとしてスキーマを編集し、library.aファイルをリンクしてビルドパスを取得し、ライブラリフォームのリリースフォルダーを取得します。
スクリプト
xcodebuild BITCODE_GENERATION_MODE = bitcode OTHER_CFLAGS = "-fembed-bitcode" -target "$ {PROJECT_NAME}" ONLY_ACTIVE_Arch = NO -configuration $ {CONFIGURATION} -sdk iphoneos BUILD_DIR = "$ {BUILD_DIR}" BUILD_ROOT = "$ {BUILD_ROOT}