ios - xcodeproj - カカオポッドに応じて Swift なフレームワーク




see https guides cocoapods org syntax podfile html platform (2)

最新バージョンのココアポッド(0.36)を使用して、迅速なプロジェクト(例えばAlamofire)で書かれたココアポッドを私の素早いプロジェクトに埋め込むことができます。 今私は独自のカスタムフレームワークをプロジェクトに導入しました。これはAlamofireにも依存したいと考えています。

これを達成するためにしたのは、フレームワークに依存関係としてポッドフレームワークを追加することです。

私自身の埋め込みSwiftフレームワーク(Swiftモジュール)のTargetを選択し、 "Linked frameworks and libraries"の "General"タブで "Pods.framework"を "Required"として追加しました。

しかし、それは私自身の迅速なフレームワークのクラスが "利用可能なフレームワーク"として認識されないので "Alamofireをインポートできない"ので、コンパイルするには十分ではありません。

Pods.debug.xcconfigファイルとPods.release.xcconfigファイルを自分自身のスワップフレームワークのターゲットの設定に追加します。つまり、ビルド設定を変更してすべての変更を行い、そのココアポッドは私のビルド設定に行います。 iOS Appターゲットは、問題を解決します。

今は問題なく構築されます。 また、Simulatorで問題なく実行され、独自の組み込みの迅速なフレームワークは、ココアポッドによって追加されたフレームワークをうまく使用します。

ただし、デバイスで同じものを実行すると、コンパイルして問題なくインストールできますが、起動時に致命的なエラーが発生してクラッシュします。

dyld: Library not loaded: @rpath/Pods.framework/Pods
Referenced from: /private/var/mobile/Containers/Bundle/Application/32D2F1F8-679F-4A5F-8159-28F1C800D0C6/TestingFrameworks.app/Frameworks/mySwiftFramework.framework/mySwiftFramework
Reason: image not found

どうやら、ココアポッドのxcconfigファイルの設定が、私のカスタムスウィフトフレームワークのビルド設定に追加されるのに適しているとは限りません。

しかし、なぜそれがシミュレータでうまくいくのですか? さらに重要なのはビルドの設定ですが、これを修正する必要がありますか?

私にはこのビルドの設定を変更する必要があるようです:

PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods

何かに

https://code.i-harness.com


@Pastaと@Matt Quirosを共有してくれてありがとう、私の問題を解決しました。 そうですね、私はちょっと私の事件についてもっと分かち合いたいと思っています。うまくいけば助けになるでしょう。

開発環境

Xcodeバージョン9.1(9B55)

iOSバージョンのデプロイ:10.0

問題:

だから私はCocoaPodを使って 'Charts'ライブラリをインポートした 'MyProject'という名前のプロジェクトに取り組んでいます。 同時に、「MyProject」にインポートされた私的フレームワーク「MyFramework」もあります。 ここで問題となるのは、「Myframework」に「Charts」を使用し、Xcodeは「Chart」ライブラリが不明であることを伝え続けていることです。

溶液:

私は 'MyProject'を閉じ、 'MyFrameWork'と 'File' - > 'New' - > 'File ...'を開いた。 2つの設定ファイルを作成し、それらを '* .xcodeproj'ファイルの同じフォルダレベルに配置します。 1つの設定ファイルは「Pods-MyFramework.debug.xcconfig」と呼ばれ、もう1つは「Pods-MyFramework.release.xcconfig」と呼ばれます。 (ファイル名は何でもかまいませんが、ファイルの場所が重要かどうかはわかりません)。 以下は、ディスク上と私のXcode内のファイル構造です。

今度は、MyFrameworkプロジェクトを閉じ、MyProjectプロジェクトを開きます。私のXcodeにファイル構造を示します。 'MyProject'レベルの下の 'Pods'フォルダを展開します。 いくつかの設定ファイルが表示され、その内容を 'MyFramework'プロジェクトのdebug.config - > debug.config、release.config - > release.configで作成した設定ファイルにコピーします。

MyFramewworkの 'MyViewController'の中に、 'Import Charts'を追加して、シミュレータで試してみたいと思って...通過しました。 うん!! 次に、同じVCにいくつかのコードを追加して棒グラフを作成し、実際のデバイスで正常に実行され、棒グラフが画面に表示されました。 最後に、@Pastaが 'Copy Phases' of 'MyProject'に 'Copy Files'オプションを追加したと言いましたが、実際のデバイスでも正常に実行されました。 私は再び削除し、それはまだ動作します。


私のような初心者にとって、この部分はあなたを混乱させるかもしれません:

Pods.debug.xcconfigファイルとPods.release.xcconfigファイルを自分自身のスワップフレームワークのターゲットの設定に追加します。つまり、ビルド設定を変更してすべての変更を行い、そのココアポッドは私のビルド設定に行います。 iOS Appターゲットは、問題を解決します。

これをする:

  1. カスタム組み込みフレームワークのXcodeプロジェクトで、 File > New > File... > iOS > Other > Configuration Settings File FileクリックしConfiguration Settings File

  2. 上記を2回行います。 ファイルにはそれぞれPods.release.xcconfigPods.debug.xcconfigという名前を付けることができます。

  3. プロジェクトナビゲータで、[ Pods Xcode]プロジェクト> [ Target Support Files > [ Podsます。 同様の名前の.xcconfigファイルがそこにあることが.xcconfigます。 独自の組み込みSwiftフレームワーク内の同じ名前のファイルに内容をコピーするだけです。

  4. SwiftフレームワークのXcodeプロジェクトファイルをクリックし、 プロジェクトターゲット (黄色のツールボックスではなく青色のもの)> Info > Configurationsます。

  5. DebugRelease設定を展開します。 メインフレームワークターゲットとテストターゲットの2つのターゲットがXcodeプロジェクトの下に表示されます。 「設定ファイルに基づいて」列で、メインターゲットの設定ファイルを、以前に作成したPods.releaseファイルとPods.releaseファイルに設定します。

そして、 @パスタのanswerます。

更新

カスタムの組み込みSwiftフレームワークを他のプロジェクトで使用している場合、この設定は、他のプロジェクトの.xcconfig設定が異なるため簡単に.xcconfigます( .framework名前も異なる可能性があります)。

私はフレームワーク内でgitサブモジュールとしてAlamofireを追加するだけでした。 注: git submodule方法に進むには、メインフレームのEmbedded Frameworksワークにカスタムフレームワークを追加するだけでなく、カスタムフレームワークからAlamofire.frameworkを追加する必要があります。





cocoapods