ワークスペースを Cocoapods で正しくコンパイルするのに問題があります。ワークスペースには 3 つのプロジェクトがあり、それぞれに独自のターゲットがあります。
- libPods - すべての外部依存関係を持つ Cocoapods 静的ライブラリ
- libCommon - すべての共有コード (ベース コントローラー、ネットワーク コード、共通 UI など) を保持する静的ライブラリ
- myApp - 私の iOS アプリケーション
libCommon と myApp の両方に、libPods からの外部依存関係が必要です。当初は、次のように機能すると考えていました。
- libPods ビルド
- libPod およびビルドに対する libCommon リンク
- myApp は libCommon およびビルドとリンクします
このシナリオでは、libCommon がポッドを「所有」し、次に myApp は、以前の Cocoapod で常に行ってきたように、libCommon に対してリンクするだけです...動的ライブラリ エラー)。代わりに libPods と libCommon をビルドし、次に myApp を両方のライブラリにリンクする必要があるという github の問題をどこかで読みました。現在、私のポッドファイルは次のようになっています。
workspace 'MyApp.xcworkspace'
platform :ios, '5.0'
link_with ['Common', 'MyApp']
target 'MyApp' do
xcodeproj 'MyApp.xcodeproj'
pod 'AFNetworking', '1.1.0'
pod 'TTTAttributedLabel', '1.6.0'
pod 'JSONKit', '1.5pre'
pod 'Reachability', '3.1.0'
end
このセットアップでは、myApp がすべてのポッドを所有し、libCommon ビルド設定でポッド ヘッダーへのパスを指定します。これは、libCommon のクラスの 1 つを使用しようとするまでは正常にビルドされます。これを行うと、これらの_OBJC_CLASS_$_Blah
エラーの 1 つが表示されます (ヘッダーは利用可能ですが、まだ適切にリンクされていないことがわかります)。「ビルド フェーズ」で libCommon を手動でリンクしようとすると、重複シンボル エラーが大量に発生します (既にリンクされていると思い込んでしまいます)。一体何?
これを適切に行う方法と、ポッドファイルはどのように見えるべきですか?