2016-08-11 5 views
1

私はフレームワークを作成しています。私は任意のプロジェクトにインポートできる実行可能なフレームワークを持ち、そのクラスとフレームワークのメソッドを使用できます。スタティック・フレームワーク用のiOS集約シェル・スクリプトは、デバイスとすべてのシミュレータ・アーキテクチャの両方をサポートするように設計されています。

しかし、「スキーマデバイス」で実行可能なフレームワークを作成すると、すべてのデバイスで実行できるようになりますが、特定のiOS5/iOS6シミュレータを使用してビルドを行うと、選択したiOS5/iOS6シミュレータのみがクライアントで実行されますプロジェクト。

iOS5シミュレータを使用してフレームワークビルドを作成していて、クライアントプロジェクトでそのフレームワークを実行していて、iOS6シミュレータを使用するとアーキテクチャx86_64の未定義シンボルが表示されます。

アーキテクチャi386とx86_64の両方をサポートするシェルスクリプトが必要なのは、私のフレームワークがクラ​​イアントプロジェクトのすべてのデバイスとすべてのシミュレータに対して実行可能であることを意味します。

これについての洞察は本当に役に立ちます。

+0

ご協力いただきありがとうございます –

答えて

0

集計ターゲットを作成し、そのビルドフェーズの内部 - > [スクリプトの実行書き込みスクリプトへ:

ビルド2つの別々のフレームワーク:モバイルデバイス(のARMv7、arm64など) 2.フレームワークのためのアーキテクチャと 1.フレームワークシミュレータ用のアーキテクチャ(i386とx86_64)。例えば

xcodebuild -workspace MyApp.xcworkspace -scheme MyFrameworkScheme -arch i386 -arch x86_64 ONLY_ACTIVE_ARCH=NO -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator BUILD_DIR=${BUILD_DIR} 

xcodebuild -workspace MyApp.xcworkspace -scheme MyFrameworkScheme -arch armv7 -arch armv7s -arch arm64 ONLY_ACTIVE_ARCH=NO -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos BUILD_DIR=${BUILD_DIR} 

はその後、脂肪のライブラリに両方のフレームワーク内のライブラリをマージするlipoを使用し、フレームワークの内部でそれらのいずれかを置き換える=>あなたは脂肪のフレームワークを持っています。

関連する問題