2015-09-03 3 views
2

У меня проблема с Cocoapods и Xcode 7 beta 6: У меня есть проект с тремя различными тестовыми целями (тесты, UITests, IntegrationTests). Мои стручки, кажется, работают очень хорошо с первой целью («испытание»), но другие цели возникают проблемы:Cocoapods не правильно связывается с 3-й, 4-й мишенью (Xcode 7 beta 6)

  • Все строит просто отлично, если я не ссылаться на каком-либо из Cocoapods в двух последних целях ,
  • Однако, когда я пытаюсь использовать один из контейнеров (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' 

ответ

1

Aha. Хорошо, я подумал, что понял, после много боли и страдания с удалением, воссозданием, повторением и повторением ... и возиться с целями Xcode. Мои выводы:

Cocoapods 0.38.2 не нравится новый тип тестового набора iOS UI Xcode 7 бета-версии 6.

Основная проблема очевидна при настройке новой цели и запуске pod install. Похоже, что установка работает нормально, но если вы посмотрите фазы сборки, фаза Embed pods frameworks отсутствует. Однако, если я вручную создаю этот этап (корректируя пути, соответствующие цели), он будет строить.

BUT ... Что-то странное все еще случается. Ошибки, показанные выше (относительно привязки для текущей архитектуры) все еще происходят. И вот самая странная часть: если я изменю цель использовать «Только для активной архитектуры»: NO «тогда все работает просто отлично. Я не получаю этот последний бит, потому что стручки должны быть созданы только для текущей архитектуры. Однако ... если интеграция будет удалена, тогда ... ОК, кто знает, может быть, она исправлена ​​в следующем выпуске Cocoapods.

Еще одно разочароознающее открытие: Новый тип целевого объекта UI не, как представляется, поддерживает функцию @testable. Облом. Надеюсь, они добавят это в окончательный выпуск Xcode 7 ...

+0

. У нас возникает такая же проблема с текущей версией Xcode, если у вас есть идеи, пожалуйста дай нам знать. – Chris

1

Просто используйте этот формат для вашего 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.

+0

Оцените комментарий, но это не проблема. Корневая проблема - это что-то делать со сборкой, но только для двух моих целей: 'ld: symbol (s) не найден для архитектуры x86_64' – Zac

+0

Вы хотя бы пробовали формат, который я разместил? – SpaceDog

+0

Да, я сделал, за исключением того, что, конечно, использую целевую ветку git. Нет разницы ... думая, возможно, если я удалю цель, очистку, удаляю производные данные, перестраиваю все с новой целью ... надеюсь! – Zac

0

Cocoapods 0.38.2 имеет проблемы с xcode 7, как указано выше. я столкнулся с этой проблемой и исправил ее, понизив версию cocoapods до 0,35. использовать gem удалить cocoapods в терминале для удаления.

Смежные вопросы