web-dev-qa-db-fra.com

les cocoapodes ne trouvent pas de simulateurs, le repo pod échoue

J'essaie de pousser un pod privé. Quand je le fais, j'obtiens cette erreur:

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

J'utilise Xcode 1, et j'ai eu récemment (Xcode 10.1 beta sur ma machine. De plus, j'avais des cocoapodes réguliers (1.5.3) et la dernière version bêta de celle-ci (1.6.0.beta.1).

Pour réduire la complexité, je a supprimé les deux versions de ma machine. Donc, juste les versions publiées. Je vois encore cette erreur.

Je ne peux pas imaginer ce qui aurait pu se passer ici. Mais quelque chose est imparable. Je préférerais vraiment ne pas supprimer complètement Xcode, ou faire quelque chose de plus radical. Mais je suis totalement coincé.

Les autres membres de mon équipe peuvent extraire le code et faire un pod repo Push, Mais je ne peux pas le faire à partir de ma propre machine.

Merci pour toute aide/conseil.

36
Dan Morrow

Si vous avez installé Xcode 10.1, _ même si Xcode 10.0 est défini comme version par défaut de Xcode, le format de sortie de simctl a un format différent, en particulier pour la disponibilité. Le reste des champs semble être identique, mais pas celui-ci. Vous pouvez voir cet appel JSON xcrun simctl list -j. Et les Cocoapods ne mettent pas encore à jour leur wrapper dans ce format.

J'ai préparé temporaire étape-à-spet Hotfix de ce problème. Cela fonctionne pour moi.

Dans le journal, trouvez cette ligne - ERROR | [iOS] unknown: Encountered an unknown error (Could not find a Iossimulator (valid values: ). Ensure that Xcode -> Window -> Devices has at least one ios simulator listed or otherwise add one.

En dessous, vous verrez cette ligne: /usr/local/lib/Ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb.

  1. Copiez le nom de ce fichier et appelez: Sudo vi /usr/local/lib/Ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. Appuyez sur I
  3. En fin de fichier, la ligne de recherche commençant par Simulator.new(device, os_name, os_version)....
  4. Remplace cette ligne par Simulator.new(device, os_name, os_version) if device['availability'] == '(available)' || device['isAvailable'] == 'YES'
  5. Appuyez sur :wq
  6. pod trunk Push YourLibrary.podspec Devrait fonctionner.

Si quelque chose ne fonctionne pas, répondez s'il vous plaît.

25
Pavlo Boiko

les étapes ci-dessous ont résolu mon problème pour XCode 10.X et 11Beta

  1. Sudo gem update cocoapods

Si ci-dessus ne fonctionnera pas pour votre système, suivez les 3 étapes ci-dessous, cela fonctionnera sûrement

  1. Sudo gem désinstaller fourflusher
  2. Sudo gem installer fourflusher
  3. Sudo gem update cocoapods
48
Hitendra Solanki

J'ai eu cette erreur après avoir exécuté la version bêta de Xcode 10.2. Malheureusement, les réponses précédentes ne faisaient pas disparaître l'erreur. Je ne sais pas exactement ce qui a changé, mais j'ai trouvé une solution pour que cela fonctionne:

  1. Recherchez le find.rb De fourflusher, que vous pouvez identifier à l'emplacement de l'erreur après avoir exécuté la commande pod trunk Push. Quelque chose comme: /usr/local/lib/Ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. Aller à la fin du fichier autour de if device['availability'] == '(available)'
  3. Juste au-dessous, assurez-vous que os_name Et os_version Sont définis. Si vous regardez dans le commentaire ci-dessus, il est prévu de scinder # Sample string: iOS 9.3 En iOS et 9.3. Dans mon cas, ils étaient vides ou autre chose alors je les ai définis moi-même.
  4. Vérifiez également la disponibilité par rapport à true: || device['isAvailable'] == true

En fin de compte, cette partie ressemble à ceci:

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

CECI IS N'EST PAS UNE SOLUTION PERMANENTE !!! C'est tout simplement comme cela que je l'ai obtenu pour l'instant jusqu'à ce que ce qui a changé dans la version bêta de Xcode 10.2 soit officiellement supporté par les cocoapods.

J'ai remarqué que lorsque vous exécutez xcrun simctl list -j Sur un mac qui n'a jamais installé la version bêta, vous avez des noms tels que com.Apple.CoreSimulator.SimRuntime.iOS-12-1 Et iOS 12.1.

Après avoir installé le Xcode 10.2, je vois toujours le com.Apple.CoreSimulator.SimRuntime.iOS-12-1, Mais le iOS 12.1 Est parti. Je suppose que find.rb A utilisé ce dernier pour trouver les valeurs os_name Et os_version. C'est pourquoi je les ai configurés moi-même.

J'espère que cela aide d'autres personnes, bonne chance!

14
Richard Chirino

Après l'installation de Xcode11-beta avait le même problème:

- 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.

Résolu en suivant ces étapes:

  1. Dans le menu Finder, sélectionnez Go/Go to Folder...
  2. Coller dans /usr/local/lib/Ruby/gems
  3. Accédez à {your gem version}/gems/fourflusher-{version}/lib/fourflusher/
  4. Terminal ouvert
  5. Tapez cd (cd et un espace)
  6. Glissez-déposez le dossier fourflusher (celui qui contient le fichier find.rb)
  7. Tapez Sudo vi find.rb
  8. Tapez votre mot de passe
  9. Tapez i pour pouvoir éditer le fichier
  10. Faites défiler tout le fichier jusqu'à ce que vous voyiez device['availability'] == '(available)' || device['isAvailable'] == 'YES'
  11. Ajoutez à cette ligne le texte suivant: || device['isAvailable'] == true
  12. Maintenant cela devrait ressembler à ceci:
devices.map do |device|
          if device['availability'] == '(available)' || device['isAvailable'] == 'YES' || device['isAvailable'] == true
            Simulator.new(device, os_name, os_version)
          end
        end
  1. Tapez :wq Pour sauvegarder le fichier
  2. Accédez à votre dossier de fichiers .podspec.
  3. Exécutez pod lib lint Pour le réduire ou pod trunk Push Pour le pousser

Si vous avez mal saisi quelque chose ou si vous voulez simplement tout recommencer à zéro, vous devez désinstaller et installer fourflusher comme avant de tout recommencer à partir de l'étape 1:

Désinstaller: Sudo gem uninstall fourflusher

Installer: Sudo gem install fourflusher

6
Rebeloper

J'ai eu le même problème, mettre à jour toutes les pierres précieuses a fonctionné pour moi: Sudo gem update

3

J'utilisais CocoaPods avec 1.7.1, alors j'ai mis à jour à 1.7.2 et le problème a disparu

Sudo gem install cocoapods 
2
Tai Le

même si j'essaie d'utiliser des cocoapodes $ gem insall, mais la version de cocoapodes est toujours la version basse, enfin, je trouve le moyen de mettre à jour vos cocoapodes.

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

et puis mon cocoapod --version show out is 1.7.1 merveilleux donc je résous la question!

1
user10390875

J'ai pu reproduire ce problème lorsque j'ai installé Xcode 10.1, Xcode 10.2 et CocoaPods 1.7.0.beta.3 sur mon Mac. Je cours pod lib lint MyLibrary.podspec et j'ai le même message d'erreur que celui que vous avez mentionné dans votre question.

Fixé en exécutant Sudo xcode-select -s /Path/To/Xcode10_1.app, où /Path/To/Xcode10_1.app est le chemin d'accès à Xcode 10.1.

Pour vous assurer que vous utilisez la dernière version de CocoaPods, essayez bundler . Créez un fichier Gemfile avec le contenu suivant:

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

Après cette course bundle install && bundle exec pod repo Push (ou toute autre action de pod).

0
Roman Podymov