2

我在使用 Cocoapods 和 Xcode 7 beta 6 时遇到问题:我有一个包含三个不同测试目标(测试、UITests、IntegrationTests)的项目。我的 pod 似乎在第一个目标(“测试”)上工作得很好,但其他目标有问题:

  • 如果我不引用后两个目标中的任何 Cocoapods,一切都构建得很好。
  • 但是,当我尝试使用其中一个 pod(在本例中为 XCGLogger)时,会出现链接器错误。
  • 我检查了构建阶段,发现Embed 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'
4

3 回答 3

2

啊哈。好的,我想我想通了,在经历了删除、重新创建、pod install复制和重复......以及摆弄 Xcode 目标的痛苦和折磨之后。我的发现:

Cocoapods 0.38.2 不喜欢 Xcode 7 beta 6 的新“iOS UI 测试包”目标类型。

设置新目标并运行时,主要问题很明显pod install。安装似乎运行良好,但如果您查看构建阶段,Embed pods frameworks则缺少该阶段。但是,如果我手动创建此阶段(根据目标调整路径),它确实会构建。

但是......奇怪的事情仍然发生。上面显示的错误(关于当前架构的链接)仍然存在。这是最奇怪的部分:如果我将目标更改为使用“仅为活动架构构建:”,那么一切正常。我没有得到最后一点,因为 pod 应该只为当前架构构建。但是……如果集成被破坏了……好吧,谁知道呢,也许它会在下一个 Cocoapods 版本中得到修复。

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

于 2015-09-07T02:45:48.077 回答
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 回答
0

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

于 2016-04-09T07:53:50.700 回答