Cocoapods没有正确连接第三,第四个目标(Xcode 7 beta 6)

我遇到了Cocoapods和Xcode 7 beta 6的问题:我有一个包含三个不同testing目标(testing,UITests,IntegrationTests)的项目。 我的豆荚似乎在第一个目标(“testing”)上工作得很好,但是其他目标有问题:

  • 如果我没有引用后两个目标中的任何一个Cocoapods,那么一切都会好起来的。
  • 但是,当我尝试使用其中一个容器(本例中为XCGLogger)时,出现链接器错误。
  • 我检查了构build阶段,发现两个目标都缺lessEmbed Pods Frameworks ,所以我手动添加了它。
  • 这样做和清理后,删除派生的数据,问题依然存在。

附上屏幕截图,显示链接器错误。 如果我尝试在后两个目标中使用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' 

只需使用这种格式的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 

cocoapods.orgfindpod语法。

啊哈。 好的,我觉得我经历了很多痛苦,经历了删除,重新创build, pod install和重复…以及Xcode目标的摆弄。 我的发现:

Cocoapods 0.38.2不喜欢Xcode 7 beta 6的新的“iOS UI Testing Bundle”目标types。

在设置新目标和运行pod install时,主要问题是显而易见的。 安装似乎运行正常,但如果您查看构build阶段,则Embed pods frameworks阶段将丢失。 但是,如果我手动创build此阶段(根据目标适当调整path),它会生成。

但是…一些奇怪的事情仍然发生。 上面显示的错误(关于当前体系结构的链接) 仍然存在。 这里是最奇怪的部分:如果我将目标更改为“仅用于活动架构的构build: ”,则一切正常。 我没有得到这个最后一点,因为豆荚只能build立在当前的架构上。 但是,如果整合是受到攻击的,那么……好的,谁知道呢,也许它会在下一个Cocoapods版本中得到修复。

另一个令人失望的发现是:新的UItesting目标types似乎支持@testablefunction。 游民。 希望他们joinXcode 7的最终版本…

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