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
.
- Скопируйте имя этого файла и вызовите:
sudo vi/usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
- Нажмите
I
- В конце строки поиска файла начинается с
Simulator.new(device, os_name, os_version)
.... - Замените эту строку на
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'
- Нажмите
:wq
-
pod trunk push YourLibrary.podspec
должен работать.
Если что-то не работает, ответьте.
Ответ 2
выполните шаги ниже, это решило мою проблему для XCode 10.X и 11.X
- Обновление самоцвета sudo cocoapods
Если вышеприведенное не сработает для вашей системы, выполните следующие 3 шага, оно обязательно сработает
- sudo gem удалить fourflusher
- sudo gem установить fourflusher
- Обновление самоцвета sudo cocoapods
Ответ 3
Я получил эту ошибку после запуска бета-версии Xcode 10.2. К сожалению, предыдущие ответы не помогли устранить ошибку. Я не знаю точно, что изменилось, но я нашел обходной путь, чтобы заставить его работать:
- Найдите
find.rb
из fourflusher
, который вы можете определить по месту нахождения ошибки после запуска команды pod trunk push
. Примерно так: /usr/local/lib/ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
- Перейти к концу файла,
if device['availability'] == '(available)'
- Прямо под этим убедитесь, что
os_name
и os_version
установлены. Если вы посмотрите в комментарии выше, он ожидает разбить # Sample string: iOS 9.3
на iOS
и 9.3
. В моем случае они были пустыми или что-то еще, поэтому я установил их сам. - Также проверьте наличие по истине:
|| 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.
Решил это, выполнив следующие действия:
- В меню Finder выберите
Go/Go to Folder...
- Вставьте в
/usr/local/lib/ruby/gems
- Перейдите к
{your gem version}/gems/fourflusher-{version}/lib/fourflusher/
- Открытый терминал
- Введите
cd
(CD и пробел) - Перетащите папку
fourflusher
(в которой находится файл find.rb
). - Введите
sudo vi find.rb
- Введите ваш пароль
- Введите
i
чтобы иметь возможность редактировать файл - Прокрутите файл до конца, пока не увидите
device['availability'] == '(available)' || device['isAvailable'] == 'YES'
device['availability'] == '(available)' || device['isAvailable'] == 'YES'
- Добавьте к этой строке следующее:
|| device['isAvailable'] == true
|| device['isAvailable'] == true
- Теперь это должно выглядеть так:
devices.map do |device|
if device['availability'] == '(available)' || device['isAvailable'] == 'YES' || device['isAvailable'] == true
Simulator.new(device, os_name, os_version)
end
end
- Введите
:wq
чтобы сохранить файл - Перейдите в папку с файлом .podspec.
- Запустите
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).