Cocoapods无法正确链接第3,第4个目标(Xcode 7 beta 6)

时间:2015-09-03 06:43:29

标签: ios xcode cocoapods xcode7 xcode-ui-testing

我遇到了Cocoapods和Xcode 7 beta 6的问题:我有一个包含三个不同测试目标(测试,UITests,IntegrationTests)的项目。我的pod似乎与第一个目标一起正常工作("测试")但其他目标有问题:

  • 如果我没有引用后两个目标中的任何Cocoapods,那么一切都会很好。
  • 但是,当我尝试使用其中一个pod(在本例中为XCGLogger)时,我会收到链接器错误。
  • 我检查了构建阶段,发现两个目标都缺少Embed Pods Frameworks,所以我手动添加了它。
  • 执行此操作并清除,删除派生数据后,问题仍然存在。

附加了屏幕截图,显示了链接器错误。同样,只有当我尝试在后两个目标中使用XCGLogger时才会发生这种情况。它在第一个目标中工作正常。

Linker error on some targets

只是为了彻底......这是我使用的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'

3 个答案:

答案 0 :(得分:2)

啊哈。好吧,我想我已经弄明白了,经历了很多痛苦和折磨,重新创建,pod install,重复......并摆弄Xcode目标。我的发现:

Cocoapods 0.38.2不喜欢Xcode 7 beta 6" iOS UI测试套装"目标类型。

设置新目标并运行pod install时,主要问题是显而易见的。安装似乎运行正常但如果查看构建阶段,则Embed pods frameworks阶段缺失。但是,如果我手动创建此阶段(根据目标调整路径),它就会构建。

但是...... 还有一些奇怪的事情发生了。上面显示的错误(关于当前架构的链接)仍然会发生。这里最奇怪的部分:如果我改变目标使用&#39;仅针对活动架构构建:<强> NO &#39;一切都很好。我没有得到最后一点,因为只应为当前架构构建pod。但是......如果集成被打破了那么......好吧,谁知道,也许它会在下一个Cocoapods版本中修复。

另一个令人失望的发现:新的UI测试目标类型似乎支持@testable功能。游民。希望他们将其添加到Xcode 7的最终版本中......

答案 1 :(得分: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语法。

答案 2 :(得分:0)

如上所述,Cocoapods 0.38.2对xcode 7有问题。我已经遇到了这个问题并通过将cocoapods版本降级到0.35.0来修复它。在终端中使用gem uninstall cocoapods进行卸载。