他のiPhoneアプリケーションに含める再利用可能なコード用のフレームワークを作成したいと思います。それを行う最善の方法は何ですか?理想的には、私は組み込みのフレームワークのように動作し、アプリケーションがビルドファイルを手放すことなく使用するようにしたいと思います。iPhoneフレームワークを作成して他のiPhoneアプリケーションで使用する方法
答えて
私は同じことを考えていました。これまで私がやってきたのは、あるプロジェクトを私が望むのと同じようにして、別のフォルダにコピーして新しいプロジェクトを開始することです。次に、.xcodeprojファイルの名前を変更して開きます。次に、新しいアプリケーションをビルドする前に、基本(アイコン、default.png、ターゲット、実行可能ファイル)をカスタマイズします。
コードが再利用される方法ではありません。よりよい解決策があると確信しています。たぶんソースコード管理/バージョン管理の巧妙な使用ですか?多分XCodeに組み込まれた何か?他のアイデア?私はここにもっと多くの投稿を見ることを楽しみにしています。
AppleはiPhoneでカスタムフレームワークを使用できないようにしています。しかし、あなたは良い古い静的ライブラリを使うことができます。 3.0 GM SDKには、そのためのプロジェクトテンプレートもありますが、静的ライブラリターゲットを自分で設定することもできます。
@Nikolai Ruhe - AppleがiPhone上でカスタムフレームワークを使用することは、正確にどこで禁止されていますか?私はiOS Developer Program License AgreementとApp Store Review Guidelinesの両方を読んだので、そのような禁止について言及されていないようです。
アップルがカスタムスタティックライブラリの使用を許可し、カスタムフレームワークの使用を禁止する理由はわかりません。おそらく私はいくつかの法的文書を紛失していますか?
インターフェイスビルダーにiphone-pluginsを作成するのが難しい/不可能なような、技術的なものかもしれません – hfossli
実行時にiOSの実行可能ファイルにコードをリンクすることはできません。これは、dylib、フレームワーク、およびプラグインで起こることです。静的アーカイブはコンパイル時にリンクされています。これはおそらく、アプリが卑劣でSDKの規約に違反したり、意図せず悪用されたり、ユーザーのデータが危険にさらされたりしないようにするためです。 (アドレス帳などのように) –
"注:カスタムフレームワークの作成はiOSではサポートされていません。 http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1 –
Xcode 4用のテンプレートを作成しました。このテンプレートを使用すると、デバイスとシミュレータの両方で動作する汎用iOSフレームワークを構築できます。
テンプレートがインストールされたら、新しいプロジェクトを作成するときに「Static iOS Framework」を選択するだけで残りの作業が実行されます。ユニットテストでも動作します。
とてもいいです。それを共有していただきありがとうございます! –
あなたは絶対にフレームワークを作成し、それを使用することができ、このリンクを参照してください。あなたのプログラムを構造化すると、なぜappleがあなたのアプリケーションを拒否しますか? see this link
フレームワークは、コードの構造上の構造に過ぎません。それを行う直接的なアプローチはありません。あなたはバンドルとアグリゲートされたターゲットを使って達成することができます。 プロジェクトに新しいバンドルを追加し、次のBase SDKを実行します。最新のiOS(iOS X.X)(X.Xには、あなたのマシンにインストールされている最新のiOS SDKの番号が表示されます)。 アーキテクチャ:$(ARCHS_STANDARD_32_BIT)armv6(この値は "armv6"の前のスペースも含めてこの値にすることが非常に重要です)この設定はXcode 4.2で有効です。古いバージョンを使用している場合は、 "Standard(armv6 armv7)オプション。 (このプロパティの値は、項目の値によって異なりますので、最初に設定してください)。 アクティブなアーキテクチャのみを構築する:そうでない場合は、同時にarmv6とarmv7にコンパイルできません。 有効なアーキテクチャ:$(ARCHS_STANDARD_32_BIT)(これは正確にこの値にすることが非常に重要です)。あなたのXcodeがarmv6とarmv7で2行を表示している場合は、この値を削除して1行に挿入してください。 デッドコードストリップ:NO。 標準ライブラリとのリンク:いいえ。 Mach-Oタイプ:リロケータブルオブジェクトファイル。これが最も重要な変更です。ここでは、バンドルをリロケータブルファイルとして扱うようにコンパイラに指示します。これにより、バンドルをラッパー設定のフレームワークに変換できます。 その他のリンカーフラグ:この設定は必須ではありませんが、任意の種類のC++コード(.cppまたは.cpp)を使用する予定がある場合は必須です。mm)、このムービーでChris Moore(コメント上)は "-lstdC++"オプションの使用を推奨しています。この場合、古いコンパイラでの競合を避けるために、 "-ObjC"も使用することをお勧めします。 ラッパー拡張:フレームワーク。ここでバンドルをフレームワークに変更します。 Xcodeでは、フレームワークは.frameworkという拡張子を持つフォルダで、コンパイルされたバイナリソース、リソース、およびいくつかのフォルダの中にあり、通常Headersと呼ばれるフォルダにはすべてのパブリックヘッダが含まれます。 デバッグシンボルを生成:いいえ(これは非常に重要な設定です。そうしないと、フレームワークは他のコンピュータ/プロファイルでは機能しません)。 プレフィックスヘッダーをプリコンパイルします。
aggrigatedターゲットを作成し、実行スクリプトに
# Sets the target folders and the final framework product.
FMK_NAME=FI
FMK_VERSION=A
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
# Creates and renews the final product folder.
mkdir -p "${INSTALL_DIR}"
mkdir -p "${INSTALL_DIR}/Versions"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers"
# Creates the internal links.
# It MUST uses relative path, otherwise will not work when the folder is copied/moved.
ln -s "${FMK_VERSION}" "${INSTALL_DIR}/Versions/Current"
ln -s "Versions/Current/Headers" "${INSTALL_DIR}/Headers"
ln -s "Versions/Current/Resources" "${INSTALL_DIR}/Resources"
ln -s "Versions/Current/${FMK_NAME}" "${INSTALL_DIR}/${FMK_NAME}"
# Copies the headers and resources files to the final product folder.
cp -R "${DEVICE_DIR}/Headers/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers/"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/"
# Removes the binary and header from the resources folder.
rm -r "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/Headers" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/${FMK_NAME}"
# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
rm -r "${WRK_DIR}"
これをコピーして、以下のフレームワーク
あなたのウェブサイトへのスパムリンクを止めてください。 –
@AndrewBarberあなたはそれが私のウェブサイトだと思いますか?私がちょうど質問に答えたら?それが私のウェブサイトだったら私はずっともっと幸せになるでしょう:) –
このサイトの回答の有用な点をこのサイトに投稿してください、またはあなたの投稿のリスクは[回答ではありません] //meta.stackexchange.com/q/8259)。必要に応じてリンクを含めることができますが、「参照」としてのみリンクを含めることができます。答えは、リンクを必要とせずに単独で立つべきです。 –
- 1. iPhoneアプリケーションでPubSubフレームワークを使用する
- 2. iPhone用のライブラリやフレームワークを作成する方法は?
- 3. iPhoneライブラリ/フレームワークの作成
- 4. iphoneアプリケーションでWebkitを使用してJavaScriptをリンクする方法
- 5. iPhone、iPad、Androidで動作するExtjsアプリケーションの作成方法は?
- 6. iPhoneアプリケーションでカスタムジェスチャーを作成
- 7. xmppフレームワークを使用してiPhoneでFacebookのチャットを整数化する方法
- 8. iPhoneの他のアプリケーションから予定を作成するには?
- 9. iPhoneアプリケーションでCore Midiフレームワークを使用するには?
- 10. iphoneでグラフを作成する方法
- 11. iPhoneでCorePlotフレームワークを使用してlineGraphを描画する方法は?
- 12. MessageUIフレームワークを使用してiPhoneでiMessageメッセージを送信する方法
- 13. iPhoneアプリケーションで3D UIViewを作成する方法
- 14. iphoneアプリケーション内でフォームを作成する最も良い方法
- 15. iPhone/iPadアプリケーションを使用してQRコードを生成する方法は?
- 16. フラッシュを使って作成したiPhoneアプリの操作方法
- 17. iPadでIphoneアプリケーションを作成する
- 18. 私のユナイテッドiPhoneアプリケーションのexeを作成する方法
- 19. iPhoneタイムテーブルアプリケーションの作成方法
- 20. Drawメソッドを使用してiPhoneを作成し回転するiPhone?
- 21. iPhoneのドロップダウンルックルーボタンを作成する方法
- 22. iPhoneアプリケーションで新しいビューを作成
- 23. iphoneアプリケーションのテーブルヘッダーにラベルを作成する方法は?
- 24. iphoneアプリケーションのバイナリを作成する方法
- 25. iphone用のC#でアプリケーションを作成する方法はありますか?
- 26. iPhone用Twitterフレームワーク
- 27. テーマiPhoneアプリケーションを作る方法は?
- 28. ランダムに選択したNSString "package"をiPhoneアプリケーション用に作成する方法
- 29. iphoneアプリでセッションを作成して管理する方法は?
- 30. アプリケーションでNSThreadを使用する方法、場所、および使用方法... iPhone
参照マイケルの答えを得るためにaggrigateターゲットを実行します。フレームワークを作成することは可能ですが、少し手作業によるアプローチが必要です。 – DougW