私のアプリでは、実際のアプリケーションのxcodeプロジェクトターゲットとコード用の単体テストを簡単に設定できるように、現在、すべてのコードを静的ライブラリに分けています。これの問題は、私も静的ライブラリに私のxibファイルのほとんどを入れたいですが、私は私のアプリを実行し、xibを参照しようとすると、それが実際のアプリのターゲットをスタティックライブラリターゲットの代わりに使用します。同じライブラリ内のコードで参照できる静的ライブラリにxibファイルやその他のリソースを含めることは可能ですか?iPhoneの静的ライブラリからXibファイルを参照できますか?
答えて
スタティックライブラリが "バンドル"と同じではないため、不可能です。
バンドルは、リソースファイル(xib)、実行可能ファイル、および静的ライブラリを含むすべての形式のファイルを含むことができるディレクトリです。個々のファイルのグループとしてファイルシステム上に存在します。
スタティックライブラリは、ライブラリ作成者によってリンクされたクラス、コード、および変数を含む単一のファイルです。それは他のファイルを「含む」わけではなく、本質的にコンパイルされたコードのデータベースです。
XIBのデータをそこに入れることは可能ですが、Xcodeはファイルシステム上の個々のファイルとしてXcodeを検索するので、そこにあることを知る方法がありません。
Mac OSでは、基本的にコード、リソース、設定などの束であり、複数のプロジェクトで再利用できる「フレームワーク」を作成することができます。しかし、AppleはiPhone OSのカスタムフレームワークの作成をサポートしていないようです。
コメントに返信(コメント欄に収まらない)
心配はありません、私はかなり同じことをやろうとしてきました先週のように、xibの "フレームワーク"、ファイルと.a libsをすべてのソースコードを渡すことなくクライアントに送ってみたいと思います。私もバンドルでこれを行う良い方法を見つけることができませんでした。
アップルは特にこれについて不明です。静的ライブラリ(十分に公正な動的ライブラリ)の場合、Appleがそうである理由はわかりません。
今の私のソリューションは、手動で次のサブフォルダを含むパッケージフォルダ "foo" を作成することです:
- "が含まれる" - >
- ここ.hファイルを置く "のRES" - >入れを。ここでXIBファイル
- "LIB" -
libfoo.aをと>含む "iphoneos" & "iphonesimulator" サブフォルダ各次にこれを圧縮し、クライアントに送信します。クライアントは次のようになります。
- パッケージはいつでも好きな場所で解凍できます。
- リソースグループの下に「res」フォルダを追加します。
- 次のターゲット設定を変更します:
他のリンカフラグ= -ObjC -lfoo
ヘッダ検索パスは=/
ライブラリ検索パス=/libに/ $(PLATFORM_NAME)が含ま
私がすることができますおそらく私の最後にいくつかのビルドステップでパッケージ作成を自動化していますが、クライアントは4つのやり方でセットアップを進めています。
-lfooリンカフラグは何を説明できますか?私はどのようにコンパイラがこれを処理するのか分かりません。ありがとう! – jpswain
'-lfoo 'は" link to library foo "のリンカフラグです。http://gcc.gnu.org/onlinedocs/gcc/Link-Options.htmlを参照してください。この回答が役に立つ場合は、アップしてください。 – Justicle
Okたとえば、私のlibが "Thingy"というパッケージに入っていて、出力ファイルが "libThingy.a"の場合、リンカーのフラグは "-lthingy"でしょうか? Objc " - それは" - ObjC "になっていませんか?ありがとう!+1 – jpswain
配布するときにSDKを作成することもできます。 JSON.frameworkはSVNでこれを行い、これを正常に複製しました。これは、hltypes-ios.xcodeprojとプロジェクトのiOSフォルダのhttp://hltypes.svn.sf.net/でどのように実行されたかを見ることができます。
主に、ビルドフォルダに「インストール」して、特別にフォーマットされたSDKSettings.plistをコピーする必要があります。次に、SDKへのパスをアプリケーションプロジェクトの「Additional SDKs」リストに追加します。コンポジットSDKの欠点は、このミニSDKがアップデートされるたびにXcode 3.xを再起動する必要があることと、アップルのベースSDKとミニSDKから作成されたコンポジットSDKを構築することに対するXcodeの主張(かなり待つ必要があることを意味します) 。
アプリケーションプロジェクトには.xibやその他のリソースを手動で追加する必要があります。
私はそれはXCodeの4のためにと
すべて自動的に上記の、より https://github.com/kstenerud/iOS-Universal-Framework その処理を行い、このための完璧な解決策を見つけました
はいできます。任意の通常のプロジェクトの場合と同様にxibファイルをライブラリに追加します。次に、ライブラリプロジェクトターゲットで、コピーファイルセクションにxibファイルを.aファイルとともに追加します。 ライブラリを使用しているメインプロジェクトで、ライブラリ用の.aファイルがあるxibファイルをドラッグアンドドロップします。
あなたはそれをサポートしている唯一の男それはできます。私はすべての解決策を試しましたが、それは全く私のために働いていません。 –
私は@ Rudeboyの要求に応えています。実際に試してみましたか、それともうまくいくと思っていますか? – Drux
- 1. Java非静的メソッドplay静的コンテキストからcompleteCompletelyを参照できません
- 2. 静的ファイル参照をバージョン
- 3. 非静的メソッドは**静的コンテキスト**から参照できません。静的コンテンツとは何ですか?
- 4. 非静的メソッドencode(byte [])は静的コンテキストから参照できません
- 5. エラー: "非静的メソッドtoString()は、静的コンテキストから参照できません"
- 6. 静的メソッドgetChildFragmentManager()は静的コンテキストから参照できません
- 7. 静的ライブラリを介してカスタムバンドルからXIBをロード
- 8. iPhone静的ライブラリ
- 9. java:非静的変数を静的コンテキストから参照できないError
- 10. なぜ「静的でない変数から静的なコンテキストから参照できないのですか?」
- 11. iPhoneからPDFファイルを参照
- 12. Iphone - 別のパッケージからroot.plistを参照できますか?
- 13. 非静的メソッドannotは静的コンテキストから参照されます
- 14. Java 8ストリームの静的コンテキストから非静的メソッドを参照することはできません
- 15. 2つの外部ライブラリから参照される静的クラス - それぞれが独自のバージョンを参照できますか?
- 16. 非静的メソッドisGooglePlayServicesAvailableとgetErrorDialogを静的コンテキストから参照することはできません
- 17. 静的関数から非静的フィールドを参照することはできません。
- 18. setDisplayHomeAsUpEnabled()エラー:静的コンテキストから非静的メソッドを参照することはできません
- 19. 静的コンテキストから非静的変数を参照することはできません[JAVA]
- 20. 静的コンテキストから非静的メソッドを参照することはできません
- 21. 静的コンテキストから非静的メソッドを参照することはできません
- 22. 静的コンテキストから非静的なedit()を参照することはできません
- 23. 静的コンテキストから非静的フィールドを参照することはできません
- 24. 静的メソッドからの参照をスレッドセーフで戻していますか?
- 25. EmployeeDAOタイプから非静的メソッドリスト()への静的参照を作成できません
- 26. Android LoginActivityタイプから非静的メソッドshowToast(String)への静的参照を作成できません
- 27. は非匿名メソッドから非静的メソッドを参照できません
- 28. 静的メソッドにはJavaの参照変数からアクセスできません
- 29. iPhoneで静的ライブラリを実装する
- 30. 静的OpenCVライブラリで未定義の参照
リンクありがとうございます。私のxibsを自分のバンドルにまとめてライブラリコードをそれに依存させることは可能でしょうか? (申し訳ありませんが、あなたが提供したリンゴの医師の回答があれば、私は現時点でそれを精読する時間はあまりありません。) – Kevlar
これを見つけただけです。http://landonf.bikemonkey.org/code/ iphone/iPhone_Framework_Support.20081202.html – Justicle
Xcode Wizards(またはOSXで呼び出されたもの)が間違っていない限り、iOS上には「バンドル」がなく、わずかに自殺状態になります。 –