cocoapods не могут найти симуляторы, pod repo push failed

Я пытаюсь подтолкнуть частный контейнер. Когда я это сделаю, я получаю эту ошибку:

- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a - ERROR | [iOS] unknown: Encountered an unknown error (Could not find a simulator (valid values:). Ensure that Xcode → Window → Devices has at least one ios simulator (valid values:). Ensure that Xcode → Window → Devices has at least one :) simulator (valid values:). Ensure that Xcode → Window → Devices has at least one simulator listed or otherwise add one.) during validation. ios, simulator listed or otherwise add one.) during validation.

Я запускаю Xcode 10, и недавно у меня была бета-версия Xcode 10.1 на моей машине. Кроме того, у меня были обычные cocoapods (1.5.3) и последняя бета этого (1.6.0.1).

Чтобы уменьшить сложность, я удалил оба бета с моей машины. Итак, только выпущенные версии. Я все еще вижу эту ошибку.

Я не могу представить, что могло бы произойти здесь. Но что-то не в порядке. Я бы предпочел не полностью удалить Xcode или сделать что-то еще более резкое. Но я полностью застрял.

Другие люди в моей команде могут вытащить код и сделать pod repo push, но я не могу с моей собственной машины.

Спасибо за любую помощь/совет.

Ответ 1

Если у вас установлен Xcode 10.1, _even, если Xcode 10.0 установлен как версия Xcode по умолчанию, вывод из simctl имеет другой формат, в частности, для доступности. Остальные поля кажутся одинаковыми, только не это. Вы можете увидеть этот JSON, вызывающий xcrun simctl list -j. И Cocoapods не обновляют свою обертку до этого формата.

Я подготовил временный пошаговый Исправление этой проблемы. Это работает для меня.

В журнале найдите эту строку - ERROR | [iOS] unknown: Encountered an unknown error (Could not find a - ERROR | [iOS] unknown: Encountered an unknown error (Could not find a simulator (valid values:). Ensure that Xcode → Window → Devices has at least one ios simulator (valid values:). Ensure that Xcode → Window → Devices has at least one :) simulator (valid values:). Ensure that Xcode → Window → Devices has at least one simulator listed or otherwise add one. ios, simulator listed or otherwise add one.

Под ним вы увидите такую строку: /usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb.

  1. Скопируйте имя этого файла и вызовите: sudo vi/usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. Нажмите I
  3. В конце строки поиска файла начинается с Simulator.new(device, os_name, os_version)....
  4. Замените эту строку на Simulator.new(device, os_name, os_version) if device['availability'] == '(available)' || device['isAvailable'] == 'YES' Simulator.new(device, os_name, os_version) if device['availability'] == '(available)' || device['isAvailable'] == 'YES'
  5. Нажмите :wq
  6. pod trunk push YourLibrary.podspec должен работать.

Если что-то не работает, ответьте.

Ответ 2

выполните шаги ниже, это решило мою проблему для XCode 10.X и 11.X

  1. Обновление самоцвета sudo cocoapods

Если вышеприведенное не сработает для вашей системы, выполните следующие 3 шага, оно обязательно сработает

  1. sudo gem удалить fourflusher
  2. sudo gem установить fourflusher
  3. Обновление самоцвета sudo cocoapods

Ответ 3

Я получил эту ошибку после запуска бета-версии Xcode 10.2. К сожалению, предыдущие ответы не помогли устранить ошибку. Я не знаю точно, что изменилось, но я нашел обходной путь, чтобы заставить его работать:

  1. Найдите find.rb из fourflusher, который вы можете определить по месту нахождения ошибки после запуска команды pod trunk push. Примерно так: /usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. Перейти к концу файла, if device['availability'] == '(available)'
  3. Прямо под этим убедитесь, что os_name и os_version установлены. Если вы посмотрите в комментарии выше, он ожидает разбить # Sample string: iOS 9.3 на iOS и 9.3. В моем случае они были пустыми или что-то еще, поэтому я установил их сам.
  4. Также проверьте наличие по истине: || device['isAvailable'] == true || device['isAvailable'] == true

В конце эта часть выглядит так:

if device['availability'] == '(available)' || device['isAvailable'] == true
  os_name = "iOS"
  os_version = "12.1"
  Simulator.new(device, os_name, os_version)
end

ЭТО НЕ ПОСТОЯННОЕ РЕШЕНИЕ !!! Просто пока я работал, пока то, что изменилось в бета-версии Xcode 10.2, не будет официально поддержано cocoapods.

Тогда я заметил, что когда вы запускаете xcrun simctl list -j на Mac, который никогда не устанавливал бета-версию, у вас есть такие имена os, как com.apple.CoreSimulator.SimRuntime.iOS-12-1 и iOS 12.1.

После установки Xcode 10.2 я все еще вижу com.apple.CoreSimulator.SimRuntime.iOS-12-1 но iOS 12.1 пропала. Я предполагаю, что find.rb использовал последний, чтобы найти значения os_name и os_version. Вот почему я установил их сам.

Надеюсь, что это помогает другим людям, удачи!

Ответ 4

После установки Xcode11-beta возникла та же проблема:

- ERROR | [iOS] unknown: Encountered an unknown error (Could not find aiossimulator (valid values:). Ensure that Xcode → Window → Devices has at least oneiossimulator listed or otherwise add one.) during validation.

Решил это, выполнив следующие действия:

  1. В меню Finder выберите Go/Go to Folder...
  2. Вставьте в /usr/local/lib/ruby/gems
  3. Перейдите к {your gem version}/gems/fourflusher-{version}/lib/fourflusher/
  4. Открытый терминал
  5. Введите cd (CD и пробел)
  6. Перетащите папку fourflusher (в которой находится файл find.rb).
  7. Введите sudo vi find.rb
  8. Введите ваш пароль
  9. Введите i чтобы иметь возможность редактировать файл
  10. Прокрутите файл до конца, пока не увидите device['availability'] == '(available)' || device['isAvailable'] == 'YES' device['availability'] == '(available)' || device['isAvailable'] == 'YES'
  11. Добавьте к этой строке следующее: || device['isAvailable'] == true || device['isAvailable'] == true
  12. Теперь это должно выглядеть так:
devices.map do |device|
          if device['availability'] == '(available)' || device['isAvailable'] == 'YES' || device['isAvailable'] == true
            Simulator.new(device, os_name, os_version)
          end
        end
  1. Введите :wq чтобы сохранить файл
  2. Перейдите в папку с файлом .podspec.
  3. Запустите pod lib lint чтобы очистить его, или pod trunk push

Если вы что-то набрали неправильно или просто хотите полностью начать все сначала, вы должны удалить и установить fourflusher как это было, прежде чем начать все заново с шага 1:

Удалите: sudo gem uninstall fourflusher

Установить: sudo gem install fourflusher

Ответ 5

У меня была такая же проблема, обновление всех гемов работало на меня: sudo gem update

Ответ 6

Я использовал CocoaPods с 1.7.1, затем я сделал обновление до 1.7.2 и проблема ушла

sudo gem install cocoapods 

Ответ 7

даже я пытаюсь использовать $ gem insall cocoapods, но версия cocoapods по-прежнему является младшей версией, наконец-то я нашел способ обновить ваши cocoapods

$ sudo gem install -n /usr/local/bin cocoapods --pre 

и тогда мой cocoapod --version показывает 1.7.1 замечательно, поэтому я cocoapod --version вопрос!

Ответ 8

Я смог воспроизвести эту проблему, когда я установил Xcode 10.1, Xcode 10.2 и CocoaPods 1.7.0.beta.3 на мой Mac. Я запускаю pod lib lint MyLibrary.podspec и pod lib lint MyLibrary.podspec то же сообщение об ошибке, которое вы упоминали в своем вопросе.

sudo xcode-select -s/Path/To/Xcode10_1.app это, запустив sudo xcode-select -s/Path/To/Xcode10_1.app, где /Path/To/Xcode10_1.app - это путь к Xcode 10.1.

Чтобы убедиться, что вы используете последнюю версию CocoaPods, попробуйте использовать bundler. Создайте Gemfile со следующим содержимым:

source 'https://rubygems.org'
gem 'cocoapods', '1.7.0.beta.3'

После этого запустите bundle install && bundle exec pod repo push (или любое другое действие pod).