2

Cocoapods と Xcode 7 beta 6 で問題が発生しました: 3 つの異なるテスト ターゲット (テスト、UITests、IntegrationTests) を持つプロジェクトがあります。私のポッドは最初のターゲット (「テスト」) で問題なく動作しているように見えますが、他のターゲットには問題があります。

  • 後者の 2 つのターゲットで Cocoapod のいずれも参照しなければ、すべてが正常にビルドされます。
  • ただし、ポッドの 1 つ (この場合は XCGLogger) を使用しようとすると、リンカー エラーが発生します。
  • ビルド フェーズを確認したところ、Embed Pods Frameworks両方のターゲットに欠落していることが判明したため、手動で追加しました。
  • これを実行してクリーンアップし、派生データを削除しても、問題はまだ存在します。

リンカ エラーを示すスクリーンショットが添付されています。これも、後者の 2 つのターゲットで XCGLogger を使用しようとした場合にのみ発生します。最初のターゲットでは問題なく動作します。

一部のターゲットでのリンカー エラー

徹底的にするために...これが私が使用しているPodfileです:

platform :ios, "8.0"
use_frameworks!

target 'Glimpulse' do
  pod "SwiftSpinner", :git => 'https://github.com/zbeckman/SwiftSpinner.git'
  pod 'XCGLogger', :git => 'https://github.com/DaveWoodCom/XCGLogger.git', :branch => 'swift_2.0'
  pod 'GRValidation', '~> 0.2'
end

target 'GlimpulseTests' do
  pod "SwiftSpinner", :git => 'https://github.com/zbeckman/SwiftSpinner.git'
  pod 'XCGLogger', :git => 'https://github.com/DaveWoodCom/XCGLogger.git', :branch => 'swift_2.0'
  pod "Nimble", :git => 'https://github.com/Quick/Nimble.git', :branch => 'swift-2.0'
  pod "Quick", :git => 'https://github.com/zbeckman/Quick.git', :branch => 'swift-2.0'
  pod 'GRValidation', '~> 0.2'
#  pod "SwiftCheck", :git => 'https://github.com/zbeckman/SwiftCheck.git', :branch => 'swift-develop'
end

target 'GlimpulseUITests' do
  pod "SwiftSpinner", :git => 'https://github.com/zbeckman/SwiftSpinner.git'
  pod 'XCGLogger', :git => 'https://github.com/DaveWoodCom/XCGLogger.git', :branch => 'swift_2.0'
  pod "Nimble", :git => 'https://github.com/Quick/Nimble.git', :branch => 'swift-2.0'
  pod "Quick", :git => 'https://github.com/zbeckman/Quick.git', :branch => 'swift-2.0'
  pod 'GRValidation', '~> 0.2'
#  pod "SwiftCheck", :git => 'https://github.com/zbeckman/SwiftCheck.git', :branch => 'swift-develop'
end

target 'GlimpulseIntegrationTests' do
  pod "SwiftSpinner", :git => 'https://github.com/zbeckman/SwiftSpinner.git'
  pod 'XCGLogger', :git => 'https://github.com/DaveWoodCom/XCGLogger.git', :branch => 'swift_2.0'
  pod "Nimble", :git => 'https://github.com/Quick/Nimble.git', :branch => 'swift-2.0'
  pod "Quick", :git => 'https://github.com/zbeckman/Quick.git', :branch => 'swift-2.0'
  pod 'GRValidation', '~> 0.2'
#  pod "SwiftCheck", :git => 'https://github.com/zbeckman/SwiftCheck.git', :branch => 'swift-develop'
end

link_with 'GlimpulseUITests'
link_with 'GlimpulseIntegrationTests'
4

3 に答える 3

2

あはは。わかりました、私はそれを理解したと思います.削除、再作成、pod installing、および繰り返し...そしてXcodeターゲットをいじるという多くの苦痛と苦しみの後。私の調査結果:

Cocoapods 0.38.2 は、Xcode 7 ベータ 6 の新しい「iOS UI Testing Bundle」ターゲット タイプを好みません。

主な問題は、新しいターゲットをセットアップして実行するときに明らかになりますpod install。インストールは正常に実行されているように見えますが、ビルド フェーズを見ると、Embed pods frameworksフェーズが欠落しています。ただし、このフェーズを手動で作成すると (ターゲットに合わせてパスを調整します)、ビルドされます。

しかし...何か奇妙なことがまだ起こります。上記のエラー (現在のアーキテクチャのリンクに関して)は引き続き発生します。そして、最も奇妙な部分は次のとおりです。ターゲットを変更して「アクティブなアーキテクチャのみを構築する: NO」を使用すると、すべてが正常に機能します。ポッドは現在のアーキテクチャ用にのみ構築する必要があるため、この最後のビットはわかりません。ただし...統合がうまくいかない場合は...OK、誰が知っているか、次のCocoapodsリリースで修正されるかもしれません。

もう 1 つの残念な発見: 新しい UI テスト ターゲット タイプは、この機能をサポートしていない@testableようです。残念。彼らがそれをXcode 7の最終リリースに追加してくれることを願っています...

于 2015-09-07T02:45:48.077 に答える
0

上記のように、Cocoapods 0.38.2 には xcode 7 に問題があります。私はこの問題に直面し、ココアポッドのバージョンを 0.35.0 にダウングレードして修正しました。ターミナルで gem uninstall cocoapods を使用してアンインストールします。

于 2016-04-09T07:53:50.700 に答える
0

次の形式を使用してくださいPodfile

source 'https://github.com/CocoaPods/Specs.git'

target 'firstTarget', :exclusive => false do
platform :ios, '7.0'
pod 'SwiftSpinner', '~> 0.7'
pod 'XCGLogger', '~> 2.3'
pod 'Nimble', '2.0.0-rc.3'
pod 'Quick', '~> 0.6'
pod 'GRValidation', '~> 0.2'
end

... repeat for every target

podで構文を見つけますcocoapods.org

于 2015-09-03T07:02:19.410 に答える