84

cocoapods ライブラリを使用する Xcode 6 Beta-6 で写真アプリ拡張機能を構築しようとしています。Xcode が写真拡張機能用に作成するブリッジ ヘッダーは、cocoapod からは何も見ることができません。

例:#import <GPUImage/GPUImage.h>エラーが発生します"GPUImage/GPUImage.h" file not found

考えられるすべてのインポート パス (括弧と引用符を使用) を試しましたが、ほとんど成功しませんでした。例外は、 のような単純なポッドのSVProgressHUD場合、次の醜い恐ろしいハックが機能することです: #import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h".

しかし、GPUImage の場合、ヘッダーに足を踏み入れ、アプリ拡張機能の一部ではない通常の Swift コードのブリッジ ヘッダーを使用してインポートすると問題がないにもかかわらずGPUImage.h、突然表示されないと判断します。GPUImageContext.h

ブリッジ ヘッダーの正常な動作を妨げているアプリ拡張機能のコンパイルの違いは何ですか?

注: 私はこのチュートリアルのすべての可能な順列を読みましたが、誰かがそこで答えを見つけたと思う場合に備えて、すぐには適用できません。

また、このSOの質問に記載されている問題が関連している可能性がありますが、私の問題がアプリ拡張機能に固有のものである場合に備えて、とにかくこの質問をしました.

4

4 に答える 4

85

編集 (2015/03/10)

新しく受け入れられた回答を参照してください。新しいプロジェクトで試してみたところ、うまくいきましたが、私のテストポッドは両方とも、拡張機能では許可されていない sharedApplication を使用していました。それらのエラーが表示されたという事実は、正しくリンクされたことを意味します。さすが@LeChatNoir!


成功。

解決策は次のとおりです。アプリ拡張機能があり、cocoapods を使用するプロジェクトでヘッダーをブリッジし、それらの cocoapods ライブラリの 1 つを使用したい場合、ポッドを含めようとすると、 のよう#import <GPUImage/GPUImage.h>に失敗しfile not foundます。

最初に、アプリのターゲットと同様に、アプリの拡張機能 (プロジェクト ファイルをクリックしてから拡張機能のターゲットをクリック) に対してリンクするlibPods.aように指定してください。

次に、実際のプロジェクト (プロジェクト ファイルをクリックし、内側のサイドバーの [プロジェクト] セクションで再度プロジェクト ファイルをクリック) の [情報] タブで、使用するデバッグ、リリース、およびインハウスの拡張機能の構成を設定します。ドロップダウンから「ポッド」構成。Pod Install はこれを行いませんので、自分で行う必要があります。

最後に、Pods プロジェクトのターゲットとプロジェクトのターゲットの両方に、ビルドに必要なすべてのアーキテクチャが Valid Architectures 変数に含まれていることを確認してください。そうしないと、楽しい未定義シンボル エラーが発生します。

これ機能し、選択したポッドを通常どおりインポートできるようになります。


編集 (2014/10/14): 余談ですが、Swift 拡張機能の独自のプロジェクト コード内から Objective-C ファイルを含めることもできるため.m、ブリッジ ヘッダーに配置したファイルもコンパイルされていることを確認する必要があります。拡張ターゲットによって。これは、ターゲットの [ソースのコンパイル] メニューから行うか.m、Xcode の右側のサイドバーの [ターゲット メンバーシップ] セクションを使用してファイル自体で行うことができます。

于 2014-08-28T18:20:33.017 に答える
74

上記の回答は機能しますが、拡張機能にポッドがいくつか必要なだけだったので、ポッドファイルに次のことを行いました。

target '[Main App Target Name]' do
        pod ...
        pod ...
        pod ...
end

target '[Extension Target Name]' do
        pod ...
end

そして、それpod installをやる!

于 2015-08-13T13:08:37.813 に答える