2017-02-07 3 views
3

私は現在、傘のフレームワークを構築しています(誰かがそう言う前に、これはAppleによって落胆していることを知っていますが、私が作成してもよい、このUMLフレームワークの一部ではない場合、それらは配布されません)、Xcode 8内の非公開ソース構成です。Xcode 8:ビットコードと傘のフレームワークを無効にする

フレームワークを作成するためにこの投稿に従っています:https://stackoverflow.com/a/41815368/2572568

すべてが、私は次のエラー得たことを除いて正常に動作している:

dyld: Library not loaded: @rpath/B.framework/B Referenced from: /private/var/containers/Bundle/Application/E0113060-CA91-47F8-BEE3-BDF1F847DB3A/app.app/Frameworks/A.framework/A Reason: no suitable image found. Did find: /private/var/containers/Bundle/Application/E0113060-CA91-47F8-BEE3-BDF1F847DB3A/app.app/Frameworks/A.framework/Frameworks/B.framework/B: required code signature missing for '/private/var/containers/Bundle/Application/E0113060-CA91-47F8-BEE3-BDF1F847DB3A/app.app/Frameworks/A.framework/Frameworks/B.framework/B'

アプリは、このスレッドから、私はすべてのプロジェクトからのビットコードを無効にすると、この問題を解決する(そしてそれは私が今やっているものだ)されることがわかったサブフレームワークB

を持っている傘のフレームワークを使用したアプリケーションです。https://github.com/CocoaPods/CocoaPods/issues/3661だからここ

は私の質問は以下のとおりです。

  1. 無効ん何ビットコードは正確にしているのですか?私はあなたのコードを提出した後、Appleが最適化を実行できることを発見しました。これらの速度最適化やディスクスペースの最適化、またはその他の最適化はありますか?
  2. 私は傘のフレームワークの構築に何か間違っていますか?ビットコードを無効にしないことは可能ですか?

答えて

1

[OK]を完全に無関係な質問には、いくつかのより多くの研究の後、私はこのスレッドを見つけたので:https://github.com/Carthage/Carthage/issues/535

実際には、これは質問2ともう1つを解決します:はい、あなたはUmbrellaフレームワークのビットコードを有効にすることができます。

これを行うには、BITCODE_GENERATION_MODEという名前のユーザー定義の設定をビルド設定内でビットマップに手動で設定する必要があります。これにより、Xcodeはビットコードサブセットだけでなく、実際のビットコードでプロジェクトを構築します。 User_Defined_Field bitcode このフラグは、アンブレラフレームワークの下にあるすべてのフレームワークに対して設定する必要があります。

1

まず最初に、 私は今日まったく同じ問題に遭遇しましたが、修正できませんでした。しかしBitcodeを削除するとそれは私のために解決されます。ご質問への

してくれてありがとう:

  1. ビットコードは、Javaのバイトコードに種類の似たものです。あなたのアプリケーションは完全にコンパイルされますが、アセンブラのようなマシンコードではコンパイルされません。あなたのアプリはBitcodeにコンパイルされています。これは、Appleが自分のサーバー上に異なるバージョンのアプリケーションを構築するのに役立ちます。 1つは64ビット用、もう1つは32ビットデバイス用です。その後、両方のアプリを分離するため、実際のデバイスにディスク容量が節約されます。 そして、彼らはおそらくアプリケーションを高速化するいくつかのさらに最適化があります。一般的に今日は必要ありません。

  2. 私は想像していたほとんどすべてを試しましたが、現時点で私は言うでしょう:いいえ、あなたは大きな傘のフレームワークを持っている場合、ビットコードを無効にすることはできません。ビットマップをサポートしていない傘下のフレームワークにサブフレームワークがあるかどうか確認できますか? AWS SDK、Facebook SDK ... すべてのサブフレームワークがBitcodeをサポートしている場合、Bitcodeをサポートすることは可能かもしれません。この答えは、私を有望と思われるが、それは少し古いです:https://stackoverflow.com/a/27638841/1203713

よろしく、 アレックス

+0

この回答はAlexにありがとうございます。私は現在、フレームワークのみをラッピングしています。私はこのアンブレラフレームワークの所有者です。だから、私は彼らがビットコードをサポートしていると思います。 とにかく、あなたの答え1に基づいて、おそらくビットコードはUmbrellaフレームワークの構造のために有効にすることができず、ビットコードでコンパイルすることが不可能になります。 – Supermomo

+1

Bitcodeの仕組みが完全にはっきりしていないので、おそらくそれは意味をなさないかもしれませんし、AppleがUmbrella Frameworksを好まないもう一つの理由かもしれません – Sn0wfreeze

関連する問題