webentwicklung-frage-antwort-db.com.de

cocoapods können keine Simulatoren finden, pod repo Push schlägt fehl

Ich versuche einen privaten Pod zu schieben. Wenn ich es tue, erhalte ich diesen Fehler:

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

Ich verwende Xcode 1, und Ich hatte vor kurzem Xcode 10.1 Beta auf meinem Computer. Außerdem hatte ich reguläre Cocoapods (1.5.3) und die neueste Beta davon (1.6.0.beta.1).

Um die Komplexität zu verringern, entferne ich beide Betas von meinem Computer. Also nur die veröffentlichten Versionen. Ich sehe immer noch diesen Fehler.

Ich kann mir nicht vorstellen, was hier hätte passieren können. Aber etwas ist aus dem Ruder. Ich würde es wirklich vorziehen, Xcode nicht vollständig zu entfernen oder etwas anderes drastischeres zu tun. Aber ich stecke total fest.

Andere Leute in meinem Team können den Code abrufen und einen pod repo Push Ausführen, aber ich kann nicht von meinem eigenen Computer aus.

Vielen Dank für jede Hilfe/Beratung.

36
Dan Morrow

Wenn Sie Xcode 10.1 installiert haben, _sogar wenn Xcode 10.0 als Standardversion von Xcode festgelegt ist, hat die Ausgabe von simctl ein anderes Format, insbesondere aus Gründen der Verfügbarkeit. Der Rest der Felder scheint gleich zu sein, nur nicht dieses. Sie können sehen, dass dieser JSON xcrun simctl list -j Aufruft. Und Cocoapods aktualisieren ihren Wrapper noch nicht auf dieses Format.

Ich habe temporär einen schrittweisen Hotfix für dieses Problem vorbereitet. Es funktioniert bei mir.

In log finde diese Zeile - 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.

Darunter sehen Sie folgende Zeile: /usr/local/lib/Ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb.

  1. Kopieren Sie den Namen dieser Datei und rufen Sie auf: Sudo vi /usr/local/lib/Ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. Drücken Sie I
  3. Am Ende der Datei beginnt die Suchzeile mit Simulator.new(device, os_name, os_version)....
  4. Ersetzen Sie diese Zeile durch Simulator.new(device, os_name, os_version) if device['availability'] == '(available)' || device['isAvailable'] == 'YES'
  5. Drücken Sie :wq
  6. pod trunk Push YourLibrary.podspec Sollte funktionieren.

Wenn etwas nicht funktioniert, antworten Sie bitte.

25
Pavlo Boiko

Befolgen Sie die nachstehenden Schritte, um mein Problem mit XCode 10.X und 11Beta zu lösen.

  1. Sudo Edelstein Update Cocoapods

Wenn das obige nicht für Ihr System funktioniert, befolgen Sie die folgenden 3 Schritte, es wird sicherlich funktionieren

  1. Sudo gem deinstallieren fourflusher
  2. Sudo Edelstein installieren Fourflusher
  3. Sudo Edelstein Update Cocoapods
48

Ich habe diesen Fehler erhalten, nachdem ich die Beta von Xcode 10.2 ausgeführt habe. Leider haben die vorherigen Antworten den Fehler nicht behoben. Ich weiß nicht genau, was sich geändert hat, aber ich habe eine Problemumgehung gefunden, um es zum Laufen zu bringen:

  1. Suchen Sie das find.rb Von fourflusher, das Sie an der Position des Fehlers erkennen können, nachdem Sie den Befehl pod trunk Push Ausgeführt haben. So etwas wie: /usr/local/lib/Ruby/gems/2.5.0/gems/fourflusher-2.0.1/lib/fourflusher/find.rb
  2. Gehe zum Ende der Datei um if device['availability'] == '(available)'
  3. Stellen Sie direkt darunter sicher, dass os_name Und os_version Eingestellt sind. Wenn Sie sich den obigen Kommentar ansehen, wird erwartet, dass # Sample string: iOS 9.3 In iOS und 9.3 Aufgeteilt wird. In meinem Fall waren sie leer oder etwas anderes, also stellte ich sie selbst ein.
  4. Überprüfen Sie auch die Verfügbarkeit mit true: || device['isAvailable'] == true

Am Ende sieht dieser Teil so aus:

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

DIESE IS NOT A PERMANENT SOLUTION !!! Es ist nur so, wie ich es vorerst zum Laufen gebracht habe, bis das, was sich in der Xcode 10.2 Beta geändert hat, offiziell von Cocoapods unterstützt wird.

Ich habe dann bemerkt, dass Sie, wenn Sie xcrun simctl list -j Auf einem Mac ausführen, auf dem die Beta noch nicht installiert wurde, Betriebssystemnamen wie com.Apple.CoreSimulator.SimRuntime.iOS-12-1 Und iOS 12.1 Haben.

Nach der Installation von Xcode 10.2 sehe ich immer noch den com.Apple.CoreSimulator.SimRuntime.iOS-12-1, Aber der iOS 12.1 Ist weg. Ich gehe davon aus, dass find.rb Das letztere verwendet hat, um die Werte os_name Und os_version Zu finden. Deshalb habe ich sie selbst eingestellt.

Hoffe das hilft anderen Menschen, viel Glück!

14
Richard Chirino

Nach der Installation von Xcode11-beta hatte das gleiche Problem:

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

Gelöst mit folgenden Schritten:

  1. Wählen Sie im Finder-Menü Go/Go to Folder...
  2. Einfügen in /usr/local/lib/Ruby/gems
  3. Navigiere zu {your gem version}/gems/fourflusher-{version}/lib/fourflusher/
  4. Öffnen Sie das Terminal
  5. Gib cd ein (CD und ein Leerzeichen)
  6. Ziehen Sie den Ordner fourflusher (der Ordner mit der Datei find.rb) Und legen Sie ihn dort ab.
  7. Geben Sie Sudo vi find.rb Ein
  8. Geben Sie Ihr Passwort ein
  9. Geben Sie i ein, um die Datei bearbeiten zu können
  10. Scrollen Sie in der Datei ganz nach unten, bis Sie device['availability'] == '(available)' || device['isAvailable'] == 'YES' sehen.
  11. Fügen Sie dieser Zeile Folgendes hinzu: || device['isAvailable'] == true
  12. Nun sollte es so aussehen:
devices.map do |device|
          if device['availability'] == '(available)' || device['isAvailable'] == 'YES' || device['isAvailable'] == true
            Simulator.new(device, os_name, os_version)
          end
        end
  1. Geben Sie :wq Ein, um die Datei zu speichern
  2. Navigieren Sie zu Ihrem Podspec-Dateiordner
  3. Führen Sie pod lib lint Aus, um es zu fusseln, oder pod trunk Push, Um es zu schieben

Wenn Sie sich vertippt haben oder einfach noch einmal von vorne anfangen möchten, sollten Sie fourflusher wie folgt deinstallieren und installieren, bevor Sie von Schritt 1 an von vorne beginnen:

Deinstallation: Sudo gem uninstall fourflusher

Installieren Sie: Sudo gem install fourflusher

6
Rebeloper

Ich hatte das gleiche Problem, das Aktualisieren aller Edelsteine ​​funktionierte für mich: Sudo gem update

Ich habe CocoaPods mit 1.7.1 Verwendet, dann habe ich auf 1.7.2 Aktualisiert und das Problem ist behoben

Sudo gem install cocoapods 
2
Tai Le

selbst wenn ich versuche, $ gem in all cocoapods zu verwenden, aber cocoapods Version ist immer noch die niedrige Version, endlich finde ich den Weg, deine cocoapods zu aktualisieren

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

und dann mein cocoapod --version show out is 1.7.1 wunderbar, also behebe ich die Frage!

1
user10390875

Ich konnte dieses Problem reproduzieren, als ich Xcode 10.1, Xcode 10.2 und CocoaPods 1.7.0.beta.3 auf meinem Mac installiert habe. Ich renne pod lib lint MyLibrary.podspec und haben die gleiche Fehlermeldung erhalten, die Sie in Ihrer Frage erwähnt haben.

Behebung durch Ausführen von Sudo xcode-select -s /Path/To/Xcode10_1.app, woher /Path/To/Xcode10_1.app ist der Pfad zu Xcode 10.1.

Um sicherzustellen, dass Sie die neueste CocoaPods-Version verwenden, versuchen Sie Bundler . Erstelle ein Gemfile mit folgendem Inhalt:

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

Nach diesem Lauf bundle install && bundle exec pod repo Push (oder eine andere Pod-Aktion).

0
Roman Podymov