Xcode 27 Build-Rechner: Simulator nur nach Aufgabe installieren

Apple führt auf der offiziellen Systemanforderungsseite derzeit Xcode 27 beta 4; die Release Notes bestätigen für UIKit-Dokumente den neuen Interface-Builder-Compiler-Modus. Daraus folgt die wichtigste Entscheidung: Ein Xcode 27 Build-Rechner, der ausschließlich kompiliert, ein Release-Archive erstellt, signiert und zur Veröffentlichung vorbereitet, kann zunächst ohne iOS Simulator Runtime betrieben werden. Apple listet Xcode 27 beta 4 in den Systemanforderungen.

Symptom: Auf dem Remote Mac belegen Simulator-Komponenten Speicher, obwohl die Pipeline nur ein Archive für TestFlight erzeugt. Schnellste Lösung: Installieren Sie zuerst nur Xcode und die für das Ziel erforderlichen SDKs. Ergänzen Sie eine passende Simulator Runtime erst dann, wenn ein Test, eine Preview, ein simctl-Aufruf oder ein Skript sie tatsächlich verwendet.

Diese Aussage gilt nicht für jede iOS-Pipeline. Sobald Sie XCTest UI Tests, Tests auf einem simulierten Gerät, SwiftUI Preview oder eine Kompatibilitätsprüfung über mehrere iOS-Versionen ausführen, gehört die passende Runtime zur Abhängigkeit. Die zuverlässigere Architektur ist dann eine schlanke, stabile Veröffentlichungsmaschine neben einer separaten Testumgebung.

Letzte Aktualisierung: 05.09.2026. Der Stand wurde anhand der von Apple veröffentlichten Xcode-27-Systemanforderungen, der Xcode-27-Beta-Release-Notes und der offiziellen Dokumentation zu Komponenten und Tests geprüft. Beta-Verhalten ist keine Zusage für die spätere Release-Version.

Für wen diese Entscheidung relevant ist

Wenn Sie als unabhängiger Entwickler oder kleines Team nur Release-Archive, Signierung und Uploads ausführen, können Sie unnötige Runtime-Abhängigkeiten vermeiden. Wenn Ihr UIKit-Projekt Storyboards oder XIB-Dateien enthält, prüfen Sie den Interface-Builder-Modus, statt vorsorglich einen Simulator zu installieren. Wenn Ihre Aufgaben Simulator-Ausführung, UI Tests oder Tests gegen mehrere iOS-Versionen umfassen, sollten Sie eine eigene Testmaschine einplanen.

Die Komponenten zuerst sauber auseinanderhalten

Viele Fehlentscheidungen entstehen, weil vier verschiedene Dinge als „Simulator“ bezeichnet werden. Für die Wartung eines Remote Mac müssen Sie sie getrennt dokumentieren:

<
BestandteilAufgabe im BuildFür ein reines Release-Archive zwingend?Typische Abnahme
XcodeCompiler, Signierung, Archive und EntwicklungswerkzeugeJaxcodebuild -version, Projekt-Build
Plattform-SDKKompilieren gegen ein iOS-ZielJa, passend zum ProjektClean Archive mit festem SDK
Simulator RuntimeAusführung von App und Tests in einer simulierten iOS-UmgebungNein, sofern kein Simulator-Aufruf erfolgtTestlauf auf einem passenden Ziel
Simuliertes GerätKonkretes Gerät innerhalb der RuntimeNeinStart, Installation und Ausführung der App
Apple beschreibt das Nachinstallieren zusätzlicher Xcode-Komponenten getrennt von der Installation der Entwicklungsumgebung. Deshalb sollten Sie die Maschine nicht nach dem Projektziel „iOS“ beurteilen, sondern nach den Aktionen, die Ihre Pipeline wirklich ausführt. [Die Apple-Dokumentation zur Verwaltung zusätzlicher Xcode-Komponenten](https://developer.apple.com/documentation/Xcode/downloading-and-installing-additional-xcode-components?changes=la_4_5_9&language=objc) ist dafür die maßgebliche Referenz.

Ein iOS-Plattform-SDK ist kein laufendes simuliertes Betriebssystem. Der Compiler kann Quellcode gegen ein SDK übersetzen, ohne anschließend eine App in einer iOS-Simulation zu starten. Umgekehrt beweist eine installierte Runtime nicht, dass Signierung, Exportoptionen oder der Upload korrekt eingerichtet sind.

Die erste Konfigurationsfrage lautet daher nicht „Welche Runtime ist die neueste?“, sondern:

  • Welche Scheme wird in der Pipeline verwendet?
  • Wird archive oder nur build aufgerufen?
  • Gibt es test, build-for-testing oder test-without-building?
  • Werden simctl, Simulator-Ziele oder UI-Test-Bundles angesprochen?
  • Werden Storyboards, XIB-Dateien oder ein Interface-Builder-Skript verarbeitet?
  • Wird nach dem Archive noch exportiert, signiert, validiert oder hochgeladen?
Für die Befehls- und Aktionsnamen sollten Sie die [offizielle Apple-Referenz zu Xcode-Kommandozeilenwerkzeugen](https://developer.apple.com/documentation/xcode/xcode-command-line-tool-reference?changes=la) heranziehen, statt aus einem erfolgreichen lokalen Lauf auf dieselben Abhängigkeiten im Remote-System zu schließen.

Der schlanke Veröffentlichungsrechner für Archive und TestFlight

Kann ein Xcode-27-Archive ohne iOS-Simulator-Runtime erfolgreich erstellt werden?

Ja, sofern das Projekt keine Simulator-Ausführung während des Builds oder der nachgelagerten Validierung voraussetzt. Für einen Veröffentlichungsrechner gehören Xcode, das benötigte iOS-SDK, die Entwickleridentität, Zertifikate, Provisioning Profiles und die Export- beziehungsweise Upload-Konfiguration zur Mindestprüfung. Die Runtime ist dagegen nicht automatisch erforderlich, nur weil das Produkt für iOS gebaut wird.

„Befehl beendet sich mit Status null“ reicht als Abnahme nicht aus. Ein Archive kann formal entstehen, während Signierung, enthaltene Bundle-Struktur oder die Upload-Prüfung fehlerhaft sind. Führen Sie deshalb mit demselben Commit eine saubere Pipeline aus und prüfen Sie:

  1. Das Arbeitsverzeichnis wird reproduzierbar vorbereitet, ohne ein altes Archive oder zwischengespeicherte Testergebnisse zu verwenden.
  2. xcodebuild archive erzeugt ein erwartetes .xcarchive am dokumentierten Ort.
  3. Das Archive enthält die richtige App, die erwarteten Embedded Components und eine gültige Signierung.
  4. Der Export mit der vorgesehenen Export-Konfiguration funktioniert.
  5. Die Validierung vor dem Upload meldet keine fehlenden Profile, ungültigen Entitlements oder falschen Bundle-Informationen.
  6. Der Upload wird entweder sicher ausgeführt oder bewusst bis zur Validierung begrenzt.
Für TestFlight ist entscheidend, dass die veröffentlichte App korrekt archiviert, exportiert und über den vorgesehenen Distributionsweg validiert wird. Apple beschreibt die Schritte für [Beta-Tests und die Verteilung von Apps](https://developer.apple.com/documentation/xcode/distributing-your-app-for-beta-testing-and-releases?changes=_7). Die Dokumentation macht nicht aus jedem Archive einen Simulator-Test: Veröffentlichung und Ausführung auf einem simulierten Gerät sind unterschiedliche Prüfungen. <
Pipeline-AufgabeBenötigte KomponenteEntscheidung für die schlanke MaschineNachweis
Quellcode kompilierenXcode und passendes SDKBeibehaltenErfolgreicher Clean Build
Release-ArchiveXcode, SDK, Scheme und SigningBeibehalten.xcarchive und Signaturprüfung
Export für TestFlightExport-Konfiguration und ZertifikateBeibehaltenExport-Artefakt und Validierung
Upload-VorbereitungDistributionsberechtigung und NetzwerkzugangBeibehaltenApple-Validierung ohne Fehler
iOS-Simulator-TestPassende Simulator Runtime und ZielgerätSeparat installieren.xcresult
UI-AutomatisierungRuntime, Simulator-Ziel und Test-BundleNicht auf der Release-Maschine voraussetzenTestbericht und Logs

Welche Xcode-Komponenten braucht ein Remote iOS Build-Rechner?

Die Antwort hängt von der Pipeline ab. Für den Veröffentlichungsrechner schreiben Sie eine Komponentenliste aus den realen Scheme- und Skriptdefinitionen, nicht aus einer allgemeinen Installationsanleitung. Xcode selbst und das SDK für das Deployment-Ziel bilden die Grundlage. Hinzu kommen die Signierungsdateien und Zugriffsrechte, die für das jeweilige Team erforderlich sind.

Prüfen Sie außerdem, ob ein Skript indirekt Simulator-Funktionen aufruft. Das kann bei einem vermeintlich einfachen Build durch Snapshot-Erzeugung, UI-Test-Vorbereitung, Test-Discovery oder eine eigene Validierungsroutine geschehen. Suchen Sie im Repository gezielt nach:

  • simctl
  • Simulator
  • -destination
  • test
  • build-for-testing
  • test-without-building
  • Test-Plänen mit einem simulierten Ziel
  • Shell-Skripten, die Geräte booten oder Apps installieren
Die [Apple-Dokumentation zu Build Settings](https://developer.apple.com/documentation/xcode/build-settings-reference) hilft bei der Prüfung, ob ein Projekt bestimmte Compiler- oder Interface-Builder-Einstellungen setzt. Die Namen der Build Settings allein beweisen jedoch noch nicht, dass eine Runtime installiert sein muss. Entscheidend ist, welche Aktion sie auswertet und ob danach eine Ausführung in einer simulierten iOS-Umgebung erfolgt.

Wenn Sie Ihre Maschine zunächst extern erproben, sollte die Konfiguration exakt zu Ihrer Pipeline passen. Eine Übersicht der verfügbaren MACGPU-Remote-Mac-Lösungen kann dabei als Ausgangspunkt dienen; die Komponentenauswahl treffen Sie erst nach der Aufgabenliste und der Abnahme mit Ihrem echten Projekt.

UIKit-Projekte mit Storyboard oder XIB gezielt abnehmen

Braucht ein Storyboard-Projekt weiterhin eine Simulator Runtime?

Nicht allein für die Kompilierung der Interface-Builder-Dokumente. In den Xcode-27-Beta-Release-Notes bestätigt Apple, dass UIKit-Dokumente standardmäßig mit dem neuen Interface Builder toolchain-Modus verarbeitet werden können, ohne vorher eine Simulator Runtime herunterzuladen. Der entsprechende Abschnitt in den Xcode-27-Release-Notes ist für diese Aussage wichtiger als ältere Projektgewohnheiten.

Das ist eine begrenzte Aussage. Sie bedeutet nicht, dass jedes Storyboard ohne Runtime in jeder Projektkonfiguration erfolgreich ist. Prüfen Sie, ob Ihr Projekt oder ein Build-Skript IBC_COCOATOUCH_COMPILER_MODE überschreibt. Wenn ein Projekt ausdrücklich in einen simulatorbasierten Modus zurückfällt, wird die passende Runtime zu einer klaren Abhängigkeit.

Führen Sie die Prüfung mit realen Interface-Builder-Dateien durch:

  1. Erstellen Sie einen sauberen Arbeitsstand mit dem Commit, der veröffentlicht werden soll.
  2. Prüfen Sie die effektiven Build Settings für das App-Target und die eingebundenen Frameworks.
  3. Suchen Sie nach einem manuellen Wert für IBC_COCOATOUCH_COMPILER_MODE.
  4. Führen Sie ein Release-Archive aus, das tatsächlich Storyboards und XIB-Dateien verarbeitet.
  5. Öffnen Sie die erzeugten Artefakte und prüfen Sie, ob die erwarteten Interface-Ressourcen enthalten sind.
  6. Wiederholen Sie die Abnahme nach einem kalten Start der Maschine, nicht nur innerhalb einer bereits geöffneten Xcode-Sitzung.
Das Ergebnis sollte als Build-Artefakt und Log dokumentiert werden. „Das Projekt enthält ein Storyboard“ ist kein ausreichender Grund für eine pauschale Runtime-Installation; „der Build war grün“ ist aber ebenso wenig ein Nachweis, dass ein UI-Test funktioniert.

**Achtung:** Xcode 27 befindet sich in dem hier geprüften Stand noch im Beta-Zyklus. Behandeln Sie die Interface-Builder-Voreinstellung als versionsabhängige Abhängigkeit und wiederholen Sie die Prüfung bei Beta-, Release-Candidate- oder Final-Updates.

Testverantwortliche trennen Kompilierung und Ausführung

Welche xcodebuild-Tests benötigen einen Simulator?

Ein Testziel benötigt eine Simulator Runtime, wenn der Test tatsächlich in einer iOS-Simulationsumgebung ausgeführt wird. Das betrifft typischerweise iOS-Simulator-Unit-Tests, XCTest UI Tests sowie test-without-building, wenn das zuvor erzeugte Testprodukt auf einem simulierten iOS-Ziel installiert und gestartet wird. Auch build-for-testing sollte als Vorbereitung für einen späteren Simulatorlauf betrachtet werden: Der Build-Schritt allein beweist noch nicht, dass der eigentliche Test ohne Runtime auskommt.

Reine macOS-Tests oder ein Kompilierungsschritt ohne Ausführung in einem iOS-Ziel haben andere Abhängigkeiten. Verwechseln Sie deshalb drei Aussagen nicht:

  • Das App-Target lässt sich kompilieren.
  • Das Test-Bundle lässt sich für ein Ziel bauen.
  • Der Test wurde auf einer passenden iOS Runtime ausgeführt und hat ein verwertbares Ergebnis erzeugt.
Apple beschreibt in der Dokumentation zum [Hinzufügen von Tests zu einem Xcode-Projekt](https://developer.apple.com/documentation/xcode/adding-tests-to-your-xcode-project?changes=_4__3), wie Testziele in ein Projekt eingebunden werden. Für die Abnahme müssen Sie zusätzlich Scheme, Test Plan und Destination auswerten. Die [Apple-Anleitung zum Ausführen und Interpretieren von Tests](https://developer.apple.com/documentation/xcode/running-tests-and-interpreting-results?changes=_9) ist die passende Referenz für Ergebnisprotokolle und Testausführung.

Erstellen Sie für jede Pipeline ein kleines Abhängigkeitsblatt:

<
AufgabeDestinationRuntime erforderlich?Beweis
App kompiliereniOS SDKNein, wenn keine Ausführung folgtBuild-Log
Release-ArchiveGeneric iOS Device oder vergleichbares Archive-ZielNicht grundsätzlichArchive, Export und Signierung
Unit Tests auf iOSSimuliertes iOS-GerätJa.xcresult mit Testlauf
XCTest UI TestsSimuliertes iOS-GerätJaUI-Testbericht und Screenshots, falls vorgesehen
build-for-testingTestziel für spätere AusführungFür den Build nicht zwingend, für den Testlauf jaTestprodukte plus anschließender Lauf
test-without-buildingKonkrete Simulator-DestinationJaErfolgreicher Testbericht
SwiftUI PreviewEntwicklungs- und Preview-UmgebungJa, wenn eine iOS Preview ausgeführt wirdSichtbare Preview und reproduzierbares Projekt
Wenn die Pipeline nur ein Test-Bundle baut, nennen Sie sie nicht „Simulator-Test“. Die Abgrenzung verhindert, dass ein grüner Kompilierungsschritt fälschlich als bestandene UI-Regression verkauft wird.

SwiftUI, Vorschauen und Kompatibilität in eine eigene Umgebung verschieben

SwiftUI Preview, interaktives Debugging, unterschiedliche Geräteklassen und Regressionen gegen mehrere iOS-Versionen sind keine Aufgaben für eine maximal reduzierte Veröffentlichungsmaschine. Sie benötigen eine verfügbare Simulator-Umgebung und meist eine höhere Änderungsfrequenz bei Runtime- und Gerätekonfigurationen.

Apple dokumentiert das Ausführen einer App auf simulierten oder physischen Geräten in einer eigenen Anleitung. Die Referenz zu simulierten und physischen Geräten macht die Rollen klar: Ein Simulator ist ein Ausführungsziel, nicht bloß ein weiterer Compilerbestandteil. Für mehrere Plattformen und Versionen beschreibt Apple außerdem, wie Apps in verschiedenen Simulatorumgebungen installiert werden können. Die Dokumentation zu mehreren Simulator-Plattformen und Versionen sollte deshalb die Grundlage Ihrer Testmatrix sein.

Für kleine Teams ergeben sich drei belastbare Betriebsmodelle:

  • Niedrige Build-Frequenz: Runtime nur dann ergänzen, wenn eine konkrete Testaufgabe ansteht; danach die Umgebung dokumentiert zurücksetzen oder getrennt halten.
  • Stabile Veröffentlichung: Eine schlanke Release-Maschine dauerhaft für Archive, Signierung und Upload reservieren.
  • Häufige Simulator-Tests: Veröffentlichungs- und Testmaschine trennen, damit ein Runtime-Update kurz vor dem Release nicht die Archive-Umgebung verändert.
Eine solche Trennung ist auch für die Fehlersuche wichtig. Wenn ein Archive plötzlich scheitert, können Sie dann unterscheiden, ob sich Signing, SDK, Projektzustand oder nur die Testumgebung geändert hat. Eine zentrale Maschine mit allen möglichen Runtimes ist nicht automatisch stabiler; sie vergrößert lediglich die Zahl der Komponenten, die bei einer Änderung berücksichtigt werden müssen.

Die Abnahme als ausführbare Checkliste

Nutzen Sie die folgende Liste nicht für ein leeres Beispielprojekt, sondern für den Commit, der tatsächlich veröffentlicht werden soll:

  • [ ] Alle verwendeten Scheme, Test Plans und Build-Skripte sind erfasst.
  • [ ] Die Pipeline enthält keine unbeabsichtigten Aufrufe von simctl, Simulator-Zielen oder Simulator-spezifischen Hilfsskripten.
  • [ ] Xcode und das erforderliche Plattform-SDK sind auf dem Remote Mac verfügbar.
  • [ ] Zertifikate, Provisioning Profiles, Entitlements und Team-Zuordnung sind mit dem vorgesehenen Signierungsweg geprüft.
  • [ ] Ein sauberer Release-Archive-Lauf wurde nach einem kalten Start ausgeführt.
  • [ ] Das .xcarchive enthält die erwartete App und die erwarteten eingebetteten Komponenten.
  • [ ] Storyboards und XIB-Dateien wurden mit einem echten Interface-Builder-Projekt kompiliert.
  • [ ] IBC_COCOATOUCH_COMPILER_MODE wurde geprüft und ein bewusster Fallback dokumentiert.
  • [ ] Export und Validierung vor dem Upload wurden getrennt vom bloßen Build-Erfolg abgenommen.
  • [ ] Jeder echte Simulator-Test läuft auf einer passenden Runtime und erzeugt ein gespeichertes .xcresult.
  • [ ] Die Pipeline unterscheidet zwischen build-for-testing und dem tatsächlichen Testlauf.
  • [ ] Für fehlende Komponenten gibt es einen dokumentierten Wiederherstellungsweg.
  • [ ] Die Entscheidung „Runtime installieren oder nicht“ ist an eine konkrete Aufgabe und nicht an eine Vermutung geknüpft.
Bewerten Sie die Ergebnisse anschließend mit einer einfachen Betriebsnote: <
ModellWartungsaufwandRisiko für Release-ArchiveGeeignet für
Nur Xcode, SDK und SignierungNiedrigNiedrig, wenn keine Tests ausgeführt werdenStabile Veröffentlichungsmaschine
Veröffentlichungs- und Testaufgaben auf einer MaschineMittel bis hochMittel, weil Runtimes und Teständerungen eingreifenKleine, seltene Projekte
Getrennte Release- und Simulator-UmgebungMittelNiedrig für die Release-KetteTeams mit regelmäßigen UI- oder Kompatibilitätstests
Die Bewertung ist keine Leistungszahl und ersetzt keinen Testlauf. Sie zeigt nur, welche Umgebung Sie warten müssen. Installieren Sie eine Runtime nicht als Versicherung gegen unbekannte Probleme: Definieren Sie zuerst den fehlenden Nachweis, führen Sie genau diese Aufgabe aus und bewahren Sie Log, Archive oder .xcresult als Beleg auf.

Entscheidung für den Remote Mac ohne langfristige Fehlkonfiguration

Wenn Ihre aktuelle Lösung ein lokaler Windows- oder Linux-Rechner mit gelegentlichen Umwegen über fremde Build-Umgebungen ist, entstehen mehrere konkrete Nachteile: Xcode und die Apple-Signierungswerkzeuge stehen nicht dauerhaft in derselben Umgebung bereit, Archive und Uploads lassen sich schwerer reproduzieren, und Simulator-Tests müssen oft von der eigentlichen Veröffentlichungsmaschine getrennt improvisiert werden. Eine eigene physische Maschine löst zwar die Verfügbarkeit, bindet Sie aber an Anschaffung, Wartung und eine Konfiguration, die bei seltenen Builds ungenutzt bleiben kann.

Für einen zeitlich begrenzten Validierungslauf ist ein gemieteter Remote Mac von MACGPU daher die pragmatische Zwischenstufe: Sie können zunächst eine schlanke Release-Konfiguration prüfen und nur bei nachgewiesenem Bedarf eine Umgebung mit Simulator Runtime ergänzen. Wenn Sie dauerhaft dieselbe Maschine benötigen, sollten Sie die Kosten, den Zugriff, Datenschutz nach DSGVO und den Bedarf an physischen Schnittstellen gegen einen eigenen Mac abwägen. Eine Übersicht der verfügbaren M4-Mietoptionen von MACGPU können Sie erst nach dieser technischen Einordnung sinnvoll bewerten.

Starten Sie mit Ihrem echten Projekt und einem kurzen Prüfzeitraum: Archive, Storyboard- oder XIB-Kompilierung, Signierung und Upload-Validierung gehören auf die schlanke Veröffentlichungsmaschine. Simulator-Ausführung, UI Tests, SwiftUI Preview und Mehrversionsprüfungen gehören in die getrennte Testumgebung. So zahlen und warten Sie nicht dauerhaft Komponenten, die Ihre Release-Kette niemals aufruft, behalten aber einen klaren Weg, sobald ein realer Test die Runtime erforderlich macht.