2016-03-23 2 views
13

私はiOS用のエンベデッドフレームワークを開発しています。ユニバーサル・ファット(シミュレータとデバイス・スライスを使用)を作成するために、多くの人のように、xcodebuildコマンドとlipoコマンドを使用するスクリプトを使用して集計ターゲットを作成しました。xcodebuild 7.3はビットコードを有効にできません

XCode 7.xでは、有効にするためにBITCODE_GENERATION_MODE = bitcodeでユーザー定義の設定を追加する必要がありましたが、これは最後のXCode 7.3リリース以降は機能しなくなりました。私はOTHER_CFLAGS="-fembed-bitcode"を追加私のようなインターネットで見つかったすべてのものを試してみたが、何も前と同じように動作します

...

私は、ビルドログでこれを見てきました:

enable_bitcode = NO

ENABLE_BITCODEがありますいつでもいい、私がしても関係ない。

Xcode7.3以降、xcodebuildコマンドを使用してビットコードを有効にしたユニバーサル脂肪族フレームワークを作成しようとした人はいますか?

+0

Appleはこの問題をバグ#25389361で追跡しています。これは、重複したバグを報告するか、そうでなければ問題について伝えたい場合に参照できます。問題を提起してくれてありがとう! –

+1

これは6月13日にリリースされたXcode 8.0 betaで解決されました。 –

答えて

17

私は昨日同様の問題に遭遇しました。何らかの調査の後、xcodebuildを "Run Script"ビルドフェーズから任意のXcodeターゲットで実行したときに表示される問題は、ENV変数TOOLCHAINSを使用して、使用するツールチェーンの明示的な仕様に関連しているようです。

そのため、AppleはXcodeの7.3の修正バージョンをリリースするまで、あなたのスクリプトの先頭に次のコマンドを追加しようとすることができます。

# workaround for bitcode generation problem with Xcode 7.3 unset TOOLCHAINS

このENV変数があるように、これは、無害でなければなりませんコマンドラインからxcodebuildを実行するときにデフォルトでは設定されていません。この回避策は私の場合はうまくいきます。

+0

ありがとう!これは魅力のように機能します。 –

+6

アップルのエンジニアとして、これが適切な回避策であることを確認できます。 –

+0

この確認のために@RickBallardに感謝します! – jlj

0

私は同じ問題に直面しています。ちょうどあなたのように、BITCODE_GENERATION_MODEOTHER_CFLAGS="-fembed-bitcode"は単純に無視され、私のビルドは破損しました

私は時々動作することがありました。あなたがxcodebuildコマンドに何を持っていても、シミュレータのフレームワークを構築する(またはターゲットを作成する)と、ビットコードが消えてしまうようです。

私はXcode 7.3を使用しています.Factフレームワークを作成するために、Static LibraryとAggregate targetの2つのターゲットがあります。

それは何ビットコードレスの枠組みを構築する際に私の作品にある:

  • (ない集計1)静的ライブラリのターゲットを選択し、「一般的なiOSデバイスを」ピッククリーンそれ
  • 静的ライブラリのターゲットを選択しますが、「汎用IOSデビックを選ぶ静的ライブラリのターゲットを選択しますが、(それが清掃されていないので、それは瞬間だ場合でも、作品)それをビルドし、シミュレータ
  • を選ぶ
  • e "を再度入力します。
  • それは
  • これが失敗した場合、それ
  • を構築し、最後に「ジェネリックiOSデバイス」
  • の集計対象を選択して、最初からやり直しビルド。私はそれが動作する前に、2〜3回それを行う必要があることがあります。

これを行うと、私の太ったライブラリはビットコードを持つことになります。

はあなたのフレームワークは、単純に、もう一度それを破るシミュレータの集計対象を構築するために

otool -arch armv7 -l <framework_path> | grep LLVMを実行することにより、簡単にビットコードをサポートしていることを確認することができます。ライブラリは依然として太ったものですが、ビットコードはなくなりました。

誰かが確かに毎回動作する解決策を見つけることができますが、少なくとも私の問題を解決します。

私は確かにXcode 7.2でそれをする必要はありませんでしたが、私はそれが純粋なCLIビルドでどのように動作するのかわかりません。

+0

あなたの答えをありがとう。 私が自分のプロジェクトに適用した「解決策」は、あなたのようでした。私は、デバイスとシミュレータのフレームワークを "手動で"(XCodeで、スクリプトなしで)コンパイルしていましたが、最後に私のスクリプトを使ってlipoとマージしました。 @jljの回避策を見ても、スクリプトを1行だけ追加して使用することはできます。 –

関連する問題