ios - Anwendung kann nach der Installation von Xcode 11-CFBundleVersion-Fehler nicht auf dem Simulator ausgeführt werden




xcode10 xcode11 (6)

Außerdem habe ich festgestellt, dass, wenn Ihre CFBundleVersion nicht die folgenden Anforderungen erfüllt:

This key is a machine-readable string composed of one to three period-separated integers, such as 10.14.1. The string can only contain numeric characters (0-9) and periods. Es wird nicht auf dem Simulator aufbauen

link

Gestern habe ich die Beta-Version von Xcode 11 heruntergeladen. Danach habe ich mein Projekt geöffnet und versucht, es mit neuem Xcode auszuführen. Leider ist bei der Meldung ein Fehler aufgetreten:


Failed to install the requested application
Domain: NSPOSIXErrorDomain
Code: 22
Failure Reason: The application's CFBundleVersion is invalid.
Recovery Suggestion: Ensure your bundle contains a CFBundleVersion with a valid semantic version number.
--

Ich habe die Beta-Version geschlossen und versucht, sie mit der neuesten stabilen Version von Xcode (10.2.1) erneut auszuführen, aber der gleiche Fehler ist aufgetreten. Ich muss erwähnen, dass es vor dem Versuch, ein Projekt mit Xocde 11 auszuführen, auf Xcode 10 ohne Probleme funktionierte. Vor und nach dem Ausführen mit Beta Xcode wurde nichts geändert.

Was ich schon ausprobiert habe:

  • Ich habe Xcode 11 Beta entfernt
  • Ich habe mein Projekt gesäubert und aus der neuesten Filiale gezogen
  • Ich habe Xcode 10 vollständig entfernt von:
~/Library/Caches/com.apple.dt.Xcode
~/Library/Developer
~/Library/MobileDevice
~/Library/Preferences/com.apple.dt.Xcode.plist
/Library/Preferences/com.apple.dt.Xcode.plist
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.bom
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.plist
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.bom
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.plist
  • Und dann installiert frische stabile Version 10.2.1

Ich kann andere Projekte, die nicht mit Xcode 11 getestet wurden, problemlos ausführen.

Meine letzte Idee ist, macOS einfach neu zu installieren, aber ich würde es gerne nicht tun.

Bearbeiten: Ich habe vergessen zu erwähnen, dass die Anwendung auf dem physischen iPhone XS funktioniert.


Die Antworten hier enthalten viele Fehlinformationen, daher wollte ich eine verbindliche Antwort geben.

Das Problem hierbei ist, dass die neue Version von CoreSimulator.framework mit Xcode 11 Beta eine Überprüfung für CFBundleVersion durchführt, die in früheren Versionen nicht durchgeführt wurde. Diese Überprüfungen sind gültig und stellen ein Problem in Ihrer Anwendung dar. Es gibt jedoch auch einen Fehler in der Art und Weise, wie die Überprüfungen durchgeführt werden, wodurch das Problem verschärft wird.

Korrigieren Sie zunächst die CFBundleVersion in Ihrer Info.plist. Es sollte nur aus Zahlen und bis zu zwei Punkten bestehen (dh ##. [. ## [. ##]], zB: 12.4.2).

Zweitens müssen Sie nach dem Beheben von killall -9 CoreSimulatorBridge da der alte Wert leider in CoreSimulatorBridge zwischengespeichert wird, wodurch verhindert wird, dass er den neuen Wert erkennt. Dieser Teil ist ein Fehler und wird in einer zukünftigen Beta behoben.


Es ist eine neue Funktion in Xcode11.

In der Release Note hieß es:

Bundles ohne CFBundleVersion sind ungültig und können nicht ordnungsgemäß auf Geräten oder Simulatoren installiert werden. CoreSimulator überprüft solche Pakete jetzt und weist sie früher im Prozess mit einer deutlicheren Fehlermeldung zurück. (49892531)

Sie können:

  1. Bearbeiten Sie Ihre CFBundleVersion anhand des Stils dieses link
  2. Setzen Sie Ihren Xcode und Ihren Simulator zurück
  3. Führen Sie es erneut aus. Sie werden sehen, dass es wieder funktioniert

Wenn Sie die App im Simulator erfolgreich ausführen, können Sie Ihre CFBundleVersion wieder zurücksetzen. Sie werden feststellen, dass sie weiterhin mit XD funktioniert


Ich bin auch auf dasselbe Problem gestoßen.

Ich bin nicht so weit gekommen, einige der anderen hier angebotenen Optionen auszuprobieren, aber ich konnte durch einfaches Löschen des Verzeichnisses / DerivedData zum Erstellen für den Simulator zurückkehren.

Wenn Sie sich nicht sicher sind, wo Sie es finden können, gehen Sie wie folgt vor: Xcode -> Einstellungen -> Standorte und wählen Sie den Pfeil neben dem Pfad für Abgeleitete Daten


In meinem Fall lief die Simulator / Coresimulator-Version für 11 Beta gegen die für 10.1 -> Xcode erneut öffnen zu lassen löste das Problem.


Passiert auch mir, verschwendete fast einen ganzen Tag nach möglichen Ursachen zu suchen.

Die Schritte, die das Problem endgültig behoben und die Installation auf dem Simulator ermöglicht haben:

  1. Beenden Sie Xcode und iOS Simulator
  2. Entfernen Sie /Library/Developer (das aus dem Stammverzeichnis) oder benennen Sie es um, wenn Sie eine Sicherungskopie erstellen möchten
  3. Starten Sie Xcode neu und stimmen Sie der Installation der Befehlszeilentools zu
  4. Arbeite dort weiter, wo du übrig hast :)

Neben den in der Frage genannten Schritten (Xcode 11 vollständig deinstallieren, Xcode 10 vollständig deinstallieren und anschließend neu installieren) habe ich auch versucht, das Projekt an einem anderen Speicherort zu klonen, alle möglichen Speicherorte für abgeleitete Daten zu durchlaufen, andere Simulatorlaufzeiten zu installieren und diese zu testen . Keiner von ihnen funktionierte, glücklicherweise zeigte die Konsolenprotokoll-App den Pfad für den Prozess an, der das App-Bundle abgelehnt hat. Es war eine der von Xcode in /Library/Developer/PrivateFrameworks/CoreSimulator.framework installierten Binärdateien.

Anscheinend hat Xcode 11 eine neuere Version der Frameworks installiert und Xcode 10 hat sie nicht überschrieben. Das Entfernen des gesamten Ordners /Library/Developer löste die Installation der Befehlszeilentools aus, wodurch die in Xcode 10 ordnungsgemäß funktionierende Simulator-Laufzeit wiederhergestellt wurde.

Du musst die Betas lieben :)





xcode11