web-dev-qa-db-ja.com

Cocoapodsを組み込みフレームワークで使用するにはどうすればよいですか?

Xcode 6の新しい@IBDesignableを活用するために、新しいプロジェクトのカスタムビューに組み込みフレームワークを使用しています。このビューをFacebookのPopでアニメーション化したいと思います。 Cocoapodsを使用してプロジェクトにPopを追加しましたが、埋め込みフレームワークはそれらのファイルにアクセスできません('POP/pop.h' file not found)。

Cocoapods関連のビルドフェーズをアプリターゲットからカスタムフレームワークターゲットにコピーしようとしましたが、そのままでは機能しません。 doesの作業は、Popフォルダーを埋め込みフレームワークに直接コピーすることですが、Xcodeは、すべての山かっこ<POP/pop.h>引用符に"POP/pop.h"。もっと良い方法があり、それを消していると思います。

36
richrad

Podfileでlink_with 'MyCustomFramework'(「MyCustomFramework」は埋め込みフレームワーク名)を使用しており、pod installを実行していると仮定します。プロジェクトファイル(右上の青)を選択し、「Build Settings」に進みます。次に、「Framework Modulesに非モジュラーインクルードを許可する」を見つけて、[〜#〜] yesに設定します。 [〜#〜]、プロジェクトファイル(青)とカスタムフレームワークターゲット(例:MyCustomFramework-オレンジ色の「ランチボックスケース」アイコン)の両方。

Setting build settings for non-modular includes

次に、メインのMyCustomFramework.hファイルにココアポッドのものを含めることができます。 Including CocoaPods in CustomFramework

次に、「@ import MyCustomFramework;」をインポートします。アプリケーションターゲットで、残りのCocoaPodsを自由に使用できます。 (例:ObjectiveSugarから「各」へのアクセスを表示)。 Importing CustomFramework into AppDelegate

これを行うかどうかは別の問題ですが、これにより、カスタムフレームワークにCocoaPodsライブラリを含めることができます。これにより、アプリケーションターゲットにカスタムフレームワークを含めるだけで、すべてのCocoaPodsも取得できます。

複数の画像で申し訳ありませんが、視覚的になりたいです。

51
Anthony Persaud

Popを使用するようにフレームワークを変更していると思います。この場合、Popヘッダーのパスをフレームワークビルド設定の検索ヘッダーパスに追加する必要もあります。

しかし、フレームワークを変更する場合は、 podspec を作成して、CocoaPodsですべてを処理できるようにします(そして、作成者にプルリクエストを送信しますか?)。


報奨金の質問については。

フレームワークに他のライブラリを埋め込むことはできません。たとえば、ライブラリでAFNetworkingを使用する場合:

  • 独自のフレームワークのインストール手順でAFNetworkingが必要であることを明記してください。
  • バイナリを配布する場合、AFNetworkingヘッダーに対してローカルでビルドするだけです。ユーザーは、アプリをリンクするときに独自のAFNetworkingを提供する必要があります。
  • フレームワークでソースコードを配布する場合(ユーザーが自分でビルドする必要がある場合)、インストール手順でフレームワークのAFNetworkingヘッダーパスを設定するように設定し、ビルド設定ヘッダー検索パスを設定して、POD_ROOTなどの共通パスにプリセットしますなど.

それは機能しますが、複雑なインストール手順があり、ユーザーはリソースを手動で追加する必要があり、ユーザーが追加するAFNetworkingバージョンを制御するのは難しく、ほとんどの場合、セットアップが壊れる可能性があるため、フレームワークをアップグレードしません。 podspecを作成してCocoaPodsをサポートするすべての理由(本当に必要な場合は、フレームワーク/静的ライブラリプロジェクトを維持し続けることができます)。

3
Rivera