2016-12-23 7 views
19

まず、use_frameworkを有効にしました。 Podfileで複数のフレームワークサブプロジェクトでCocoaPodsを使用する方法

メインプロジェクトがMAIN_APPで、2つのサブプロジェクトがFRAMEWORK_AとFRAMEWORK_Bであるとします。

MAIN_APPにはFRAMEWORK_AとFRAMEWORK_Bが必要です.FRAMEWORK_BにはFRAMEWORK_Aも必要です。

すべてのプロジェクト/ターゲットは、サードパーティライブラリを管理するためにCocoaPodを使用しています。今の

は、私のPodfileは次のようになります。

target :MAIN_APP do 
    project 'MAIN_APP' 
    pod 'PodA' 
end 

target :FRAMEWORK_A do 
    project 'FRAMEWORK_A' 
    pod 'PodB' 
end 

target :FRAMEWORK_B do 
    project 'FRAMEWORK_B' 
    pod 'PodC' 
end 

私は手動でMAIN_APPの設定を構築するためにFRAMEWORK_B、およびFRAMEWORK_AとFRAMEWORK_Bの両方の設定を構築するためにFRAMEWORK_Aを追加しました。

すべてのコードがコンパイルされますが、MAIN_APPを実行するとPodBのFrameworkをロードできないため、MAIN_APPがクラッシュします。

私は手動でMAIN_APPとFRAMEWORK_BにPodBを追加することができますが、この種のターゲット依存関係をPodfileで定義することは可能ですか?

ところで、ときpod install、私は警告だ:[!]

をPodfileはPodfileは、ホスト・ターゲット(フレームワークを埋め込むターゲット)を含まないためのフレームワークの目標を、含まれています。

このプロジェクトがフレームワーク開発用である場合、このメッセージは無視できます。それ以外の場合は、これらのフレームワークを埋め込んだターゲットをPodfileに追加して、このメッセージを遠ざける(例:テストターゲット)。

私が知っているように、私は次のようにホスト・ターゲットのためのネストされたターゲットを使用することができます。CocoaPodsセットアップMAIN_APP FRAMEWORK_Aを使用してFRAMEWORK_Aからポッドの依存関係を継承しますので

target :FRAMEWORK_A 
    target :MAIN_APP 
    end 
end 

。しかし、私は複数の依存関係のようにそれをすることはできないようです:

target :FRAMEWORK_A 
    target :MAIN_APP 
    end 
end 
target :FRAMEWORK_B 
    target :MAIN_APP 
    end 
end 

ターゲット:MAIN_APPは2回宣言することができません。

ポッド依存関係をPodfileの関数として定義するのではなく、すべてのターゲットにインクルードするより優れたソリューションがありますか?

+0

進捗状況?あなたはこれを解決しましたか? – zaxy78

+0

@ zaxy78別のターゲットに追加されているにもかかわらず、あるプロジェクトにあると気がついたので、ターゲットではなく別のサブプロジェクトに分割しました。ヘッダーは "Header.h"でインポートできますが、フレームワークからヘッダをインポートするために ''を使用して強制したい。 –

+0

私はXcodeとCocoaPodの最新バージョンに移行したので、それと似た構造をしています。現在、このスタイルのpodfileを最適に管理する方法をデバッグしようとしています。 –

答えて

0

これは大きな質問ですが、私は同様の状況で苦労しています。これは私のPodFileです:

platform :ios, '8.0' 

workspace 'mygreatapp.xcworkspace' 

project 'app/MyGreatApp/MyGreatApp.xcodeproj' 
project 'platform/MyGreatFramework/MyGreatFramework.xcodeproj' 

abstract_target 'This can say whatever you want' do 

    target 'MyGreatApp' do 
     project 'app/MyGreatApp/MyGreatApp.xcodeproj' 
     pod 'AFNetworking', '~> 2.6.0' 
     pod 'PromiseKit', '~> 1.5' 
     pod 'PromiseKit/Join' 
     pod 'KVOController', '~> 1.0' 
     pod 'FLAnimatedImage', '~> 1.0' 
     pod 'Crashlytics', '~> 3.3' 
     pod 'SSZipArchive' 
    end 

    target 'MyGreatAppTests' do 
     project 'app/MyGreatApp/MyGreatApp.xcodeproj' 
     pod 'OCMock', '~> 3.1' 
    end 

    target 'MyGreatFramework' do 
     project 'platform/MyGreatFramework/MyGreatFramework.xcodeproj' 
     pod 'SSZipArchive' 
    end 

    target 'MyGreatFrameworkTests' do 
     project 'platform/MyGreatFramework/MyGreatFramework.xcodeproj' 
     pod 'OCMock', '~> 3.1' 
    end 

    post_install do |installer| 
     installer.pods_project.targets.each do |target| 
     target.build_configurations.each do |config| 
      config.build_settings['ENABLE_BITCODE'] = 'NO' 
     end 
     end 
    end 
end 

あなたは、私はフレームワークを使用していないと私は一緒にグループにすべてをabstract_targetを使用見ることができるように。私はこれらの種類の依存関係をCocoaPodでやりやすくしたいと思っています。私はこれが本当にあなたの質問に答えることはできませんが、それでも役に立つかもしれないことを知っています。

関連する問題