Ошибка компоновщика Cocoapods

Всякий раз, когда я создаю свою целевую аудиторию (стандартную цель, которую генерирует Xcode), сборка выходит из строя с загадочной ошибкой:

framework not found Pods_AppName_AppNameTests

который я использую для обозначения цели, сгенерированной под ядро ​​для моих тестов, не может быть найден. Мой podfile довольно прост:

use_frameworks!

target 'AppName' do

  pod 'ReactiveCocoa'
  pod 'RealmSwift'
  pod 'ObjectMapper'
  pod 'Moya'
  pod 'Moya/ReactiveCocoa'
  pod 'pop'
  pod 'Heimdallr'
  pod 'Heimdallr/ReactiveCocoa'
  pod 'Alamofire'
  pod 'AlamofireImage'
  pod 'SwiftDate'
  pod 'DropdownAlert'
  pod 'NibDesignable'


  target 'AppNameTests' do
    pod 'Quick'
    pod 'Nimble'
  end
end

Я использую Cocoapods 1.0.1.

EDIT:

Это НЕ формат моего подкаста. Это настройка по умолчанию, предоставленная мне, запустив pod init. Там может быть ошибка в cocoapods, но формат правильный.

ИЗМЕНИТЬ 2:

Если я включаю:

inherit! search_paths

в моей тестовой цели, тесты терпят неудачу, говоря:

The bundle "MyApp_Tests" couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.

Без этой строки тесты также не могут быть построены, но на этот раз с ошибкой компоновщика:

Ld/Users/travis/Library/Developer/Xcode/DerivedData/Reactify-fqgxzcgedmqljrangqdkxpwdfxne/Build/Intermediates/Reactify.build/Debug-iphonesimulator/Reactify_Tests.build/Objects-normal/i386/Reactify_Tests normal i386

Эта конкретная ошибка от Travis, но я получаю то же самое в Xcode локально.

Ответ 1

Я также сражался с этим на прошлой неделе - "решение", которое я в конечном итоге нашел надежным, заключалось в том, чтобы добавить inherit! search_paths, установить pod, а затем удалить его и снова установить с целевого объекта тестирования, вот так:

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

project 'CityWeather/CityWeather.xcodeproj'
install! 'cocoapods',
         :deterministic_uuids => false

use_frameworks!

platform :ios, '9.3'

abstract_target 'CityWeather_Base' do

  <... pod list here, contents don't seem to matter ...>

  target 'CityWeather' do
  end

  target 'CityWeatherTests' do
  # NB. If it starts refusing to link the test frameworks,
  # adding and then removing inherit! :search_paths here appears to help.
  #inherit! :search_paths
  end

end

Это меньше хлопот по крайней мере, чем создание новой цели каждый раз, когда это происходит с вами, что, судя по моей прошлой неделе, я предсказываю, что скоро с вами случится. Очень надоедливый. Проделал столько времени, сколько мог, чтобы попытаться вывести из журналов фиксации, где возникает проблема, но это не очевидно. Я обновлю здесь, если мне удастся найти время, чтобы выяснить проблему достаточно, чтобы открыть полезную проблему. Но тем временем, надеюсь, мое "решение" несколько улучшит вашу производительность.

Ответ 2

Это самая странная вещь, и я абсолютно пробовал это раньше, но я просто удалил тестовую цель, создал новую, и вот и она работает. Единственное отличие, насколько я могу судить, между двумя целями - это один из них называется MyApp_Tests, а другой MyApp_ExampleTests. Я был бы удивлен, если бы это было причиной, но сейчас трудно сказать.

Я скажу, что в качестве побочной заметки проект, о котором я говорил, не единственный проект, с которым я видел это. Последние четыре из моих проектов столкнулись с этой ошибкой, созданной с момента создания Cocoapods 1.0.0. Это заставляет меня поверить, что там есть скрытая ошибка в тестовой установке Cocoapods, которую мне придется исследовать больше.

Кроме того, исключение цели тестирования и создание нового, похоже, работало именно в этом конкретном случае. В других проектах ошибка сохраняется. И я могу сказать, что это больше, чем просто моя локальная настройка, потому что мои сборки в трейвисе также будут неустойчивыми.