2010-12-01 18 views
7

iOS向け静的ライブラリを作成する場合は、ヘッダファイルを配布する必要がありますか、それを動作させる別の方法はありますか?iOS用スタティックライブラリと配布用シミュレータを1つ作成する

現在、私はデバイスとシミュレータの両方に対して1つのmy_lib.aファイルを持っていますが、別のテストアプリケーションにドラッグして使用すると、ヘッダを見つけることができず、使用しているすべての場所コードには宣言されていません。だから私は間違ったことをしているか、適切なヘッダーファイルを送る必要があります。私のプロセスへ

背景:

私はデバイスとシミュレータの両方のための静的ライブラリを作成するための2つのガイドを見てきました。このサイト上の一つは:Build fat static library (device + simulator) using Xcode and SDK 4+

、ここ1:

http://mark.aufflick.com/blog/2010/11/19/making-a-fat-static-library-for-ios-device-and-simulatorは、私はちょうどそれを試してみるために第2のサイトを使用していました。もし私が正しくそれをしたら、私は少し不思議です。私はRelease-iphone(os |シミュレータ)フォルダに入って、iosの.aとシミュレータの.oを見つけました。

答えて

3

答えは「はい」です。ヘッダーファイルを静的ライブラリにパッケージする必要があります。ヘッダーファイルは、実際にはダイナミックまたは静的なライブラリでパッケージ化する必要があります。ライブラリ自体にはコンパイルされたコードが含まれていますが、ライブラリ内の識別子についてコンパイラに伝える必要があります。したがって、コードをコンパイルするときにそれらが存在することがわかります。

静かなライブラリを静的なフレームワークに少しでも気を付けてパッケージ化できます。 .dylib(または.so)ファイルの代わりに.aファイルを使用して、動的フレームワークと同じディレクトリ構造を作成するだけです。フレームワークにはヘッダー用のディレクトリが含まれているため、バイナリとヘッダーを単一のパッケージとして配布することができます。追加ヘッダー検索パスのビルド設定をせずにフレームワークから簡単にヘッダーをインポートできます。

+0

アダムに感謝します。私が理解しているように(そして私が探検したところから)、開発者はiOS用のフレームワークを作成することはできません。これはもはやそうではありませんか?そうであれば、このフレームワークの作成方法についてのリソースはありますか?最後に、ユニバーサルライブラリを正しく作成していますか?私が使用したガイド(2番目のリンク)は.oファイルについて言及していないので、私は尋ねるだけです。 – Aaron

+0

私は、私がプロジェクトの.buildフォルダ(project_name.build/Objects-normal/ARCHITECTURE/project_target.[a|o)に入っていたことを知りました。上位レベルに行くべきだったときリリース-iphone [os | simulator ] /project_target.a。後で行うには、armv6とarmv7が1つの.aファイルにあり、i386がシミュレータフォルダの.aファイルに含まれています。また、iphone osライブラリを追加するときは、armv6とarmv7を含む太いファイルであるため、アーキテクチャを指定しないでください。 – Aaron

+0

静的フレームワーク上の本当に良いリソースはわかりません。なぜなら、Xcodeには組み込み方法がないからです。私は静的ライブラリを含むいくつかのプロジェクトを見つけ、それらを別々に選ぶことによってそれらを理解しました。 PLBlocksは静的なフレームワークとして提供されていました.GHUnitは静的なフレームワークとして提供されていると思いますが、Cedar(http://github.com/pivotal/Cedar)にはbashスクリプトを使用して静的フレームワークを構築するという目標があります。それらをチェックしてください。単にディレクトリ構造とシンボリックリンクを複製するだけです。 –

0

有用な場合 - 私はhereのRay Wenderlichの指示に従い、一度にいくつかのアーキテクチャをサポートしているiOSのフレームワークを作成できました(シミュレータを含む)。指示はちょっと長すぎてコピーしてここに貼り付けることはできません。

関連する問題