3

最新の Xcode 6 および iOS 8 環境を使用してユニバーサル フレームワークを作成する方法について見つけた情報について、少し混乱しています。たとえば、この回答には次のものが含まれます。

If you need to create universal static library that runs on both simulator and devices, then general steps are:

 1. Build library for simulator  
 2. Build library for device  
 3. Combine them using lipo

lipo -create -output "framework-test-01-universal" "Debug-iphonesimulator/framework-test-01.framework/framework-test-01" "Debug-iphoneos/framework-test-01.framework/framework-test-01"  Note that framework-test-01 is my framework project name.

私の同僚の 1 人がその指示に従い、実行可能ファイルをビルドしました。まあ、それは私が探しているものではないと思います。次のような構造が含まれています。

ここに画像の説明を入力

後で、ビルド フェーズ実行スクリプトを使用して集計ターゲットを作成することについて、別の回答がここで説明されています。これは、以前のバージョンの Xcode でよく知っていることです。そのプロセスを使用すると、期待どおりのものを受け取ります。フォルダ構造は次のとおりです。

ここに画像の説明を入力

誰かが私たちが抱えているこの混乱を解消するのを手伝ってくれませんか?

2つの違いは何ですか?

つまり、最初の手順はシミュレータとデバイスの両方で実行できるアプリケーションを作成するための手順であり、2 番目の手順はファットな静的ライブラリを作成するためのものですか?

4

2 に答える 2

3

重要な違いは、ライブラリフレームワークの間です。フレームワークは、ライブラリとヘッダーを含む特定のフォルダー構造です。

lipo はライブラリを結合します。したがって、手順には、既に構築したフレームワーク内のライブラリを参照するサンプル実行があります (iphoneos 用に 1 回、シミュレーター用に 1 回)。フレームワーク間の唯一の違いはライブラリであるため、lipo を使用してライブラリを結合することにより、サポートされているすべてのフレームワークを備えたファット (またはファット) ライブラリが得られます。

その最初のリンクされた回答は、フレームワークとアプリの両方を作成する方法を示しています。フレームワークの部分だけを気にしてください。フレームワークを異なるターゲット (iOS デバイスとシミュレーター) で 2 回ビルドします。「Build Active Architecture Only」が「いいえ」に設定されていることを確認してください。おそらく、デバッグではなくリリース用にビルドすることをお勧めしますが、それは特定のニーズによって異なります。

于 2014-11-25T21:29:10.063 に答える