Swift 6.4 SwiftPM-Build geändert? Müssen iOS-Projekte migrieren (2026)
Ein swift build läuft nach einem Toolchain-Update anders, während der Xcode-Build unverändert aussieht.
Schnellste Entscheidung: Swift 6.4 verwendet in SwiftPM standardmäßig Swift Build. Das bedeutet nicht, dass iOS-Apps, die über Xcode gebaut werden, sofort ihren Build-Ablauf migrieren müssen. Behalten Sie den Xcode-Einstieg zunächst bei; prüfen Sie eigenständige SwiftPM- und CI-Aufgaben separat, bevor Sie deren Ablauf ändern. Die Swift-6.4-Veröffentlichungsnotizen bestätigen die Änderung. Apple führt Swift 6.4 außerdem für Xcode 27.1 auf den Xcode-Systemanforderungen.
Dieser Leitfaden richtet sich an:
- Entwicklerinnen und Entwickler, die iOS-Apps über Xcode bauen und wissen möchten, ob ihre Abhängigkeiten betroffen sind.
- Maintainer eigenständiger Swift Packages und Kommandozeilenwerkzeuge, die lokale Builds und Tests absichern müssen.
- Kleine Teams, die Swift in CI oder für mehrere Zielplattformen einsetzen und den tatsächlichen Prüfbedarf festlegen wollen.
Zuletzt aktualisiert am 18.10.2026; überprüft anhand der Swift-6.4-Veröffentlichungsnotizen, der Apple-Xcode-Systemanforderungen und der SwiftPM-Dokumentation. Die Aussagen zur Standardänderung und zur aufgeführten Toolchain stützen sich auf diese offiziellen Angaben; die Kompatibilität einzelner Projekte muss jeweils im eigenen Build geprüft werden.
Xcode-Projekt oder SwiftPM-Aufgabe: Der Einstieg entscheidet
„SwiftPM-Build“ kann in einem Projekt unterschiedliche Dinge meinen. Eine App kann in Xcode verwaltet und über ein Scheme gebaut werden, obwohl sie Swift Packages als Abhängigkeiten nutzt. Daneben kann ein Repository eigene Kommandozeilenaufrufe wie swift build oder swift test enthalten. Diese Abläufe sollten nicht als derselbe Build behandelt werden.
Die Swift-6.4-Änderung betrifft den Standard-Buildpfad von SwiftPM. Die SwiftPM-Dokumentation beschreibt dessen Aufgaben und Verwendung. Apples Dokumentation zu Xcode-Schemes erläutert dagegen, wie Xcode festlegt, welche Aktionen für ein Projekt ausgeführt werden. Damit ist eine wichtige Grenze gezogen: Ein aktualisiertes SwiftPM sagt für sich genommen nicht aus, welcher Build-Einstieg in einem konkreten Xcode-Projekt verwendet wird.
| Projektsituation | Tatsächlicher Einstieg | Erste Entscheidung |
|---|---|---|
| iOS-App mit Xcode-Scheme | Xcode-Build, Test oder Archive | Bestehenden Xcode-Ablauf prüfen; nicht vorsorglich auf einen SwiftPM-Aufruf wechseln |
| Eigenständiges Swift Package | Direkte SwiftPM-Befehle | Manifest, Abhängigkeiten, Aufgaben und Ergebnisse mit der neuen Toolchain testen |
| Kommandozeilenwerkzeug oder CI-Skript | Skript, Runner oder direkter SwiftPM-Aufruf | Jeden tatsächlich verwendeten Aufruf und die nachgelagerte Artefaktverarbeitung prüfen |
| Paket mit mehreren Zielplattformen | Je Plattform eigener Build- und Testpfad | Nur die explizit geprüften Ziele als abgenommen behandeln |
Bei einer Xcode-App genügt es daher nicht, im Repository eine Package.swift zu finden und daraus eine Migration abzuleiten. Relevant ist, ob das Paket als Xcode-Abhängigkeit eingebunden wird, ob daneben eigene SwiftPM-Befehle ausgeführt werden und welche Aktion ein Release-Scheme tatsächlich startet. Apples Anleitung zu App- und Swift-Package-Builds in CI trennt diese Aufgaben ebenfalls nach dem jeweiligen Build-Ablauf.
Nur Xcode für die App: Bestehenden Ablauf absichern
Wird die App ausschließlich über Xcode gebaut, ist zunächst keine Änderung am App-Build-Einstieg abzuleiten. Die richtige Prüfung beginnt beim bestehenden Projekt: Öffnen Sie das Scheme, führen Sie die tatsächlich genutzten Aktionen aus und halten Sie fest, mit welcher Xcode-Version die Prüfung erfolgt. Die Systemanforderungen von Apple ordnen Swift 6.4 Xcode 27.1 zu; sie belegen jedoch nicht, dass jedes Projekt oder jede eingebundene Abhängigkeit mit jeder Konfiguration gleich funktioniert.
Eine App kann Xcode für Build, Test und Archivierung nutzen und gleichzeitig Swift Packages als Abhängigkeiten beziehen. Das ist nicht dasselbe wie ein zusätzliches Skript, das im Repository ein Package direkt mit SwiftPM baut. Prüfen Sie deshalb in den Build-Skripten, CI-Konfigurationen und lokalen Entwickleranweisungen, ob solche Aufrufe vorhanden sind. Wenn nur Xcode der Einstieg ist, bleibt die Xcode-Prüfung maßgeblich.
Auch Package.swift ist kein alleiniger Hinweis auf den verwendeten Build-Einstieg. Die Dokumentation zu Package.swift und zur Tools-Version erklärt die Manifestbeschreibung und die Angabe der Swift-Tools-Version. Diese Angaben sind bei der Paketprüfung wichtig, ersetzen aber keinen Test des konkreten Xcode-Schemes. Ändern Sie das Manifest nicht allein deshalb, weil SwiftPM sein Standard-Buildsystem geändert hat.
Für einen App-Release sind mindestens die tatsächlich verwendeten Aktionen relevant: ein normaler Scheme-Build, die vorgesehenen Tests und der Archivierungs- oder Verteilungsschritt. Apples Dokumentation zum Archivieren und Verteilen von Apps beschreibt den Xcode-Verteilungspfad. Ein erfolgreicher Build allein belegt nicht, dass Archiv und anschließender Distributionsschritt ebenfalls funktionieren.
Eigenständiges Package: Manifest, Abhängigkeiten und Aufgaben getrennt prüfen
Bei einem separat gepflegten Swift Package ist SwiftPM selbst der relevante Prüfgegenstand, wenn das Projekt es direkt aufruft. Die Release-Notizen bestätigen Swift Build als Standard für SwiftPM in Swift 6.4. Deshalb sollte nicht nur ein einzelner Test gestartet werden. Zu prüfen sind die Aufgaben, die das Paket tatsächlich erfüllen muss: etwa Build, Tests, Plugin-Ausführung oder die Erzeugung und Weitergabe von Artefakten.
| Prüffeld | Was festzuhalten ist | Woran eine Abweichung erkennbar wird |
|---|---|---|
| Toolchain | Xcode-Auswahl und Ausgabe von swift --version |
Shell und erwartete Entwicklungsumgebung verwenden nicht dieselbe Swift-Version |
| Manifest | verwendete Package.swift und Tools-Angabe |
Paketbeschreibung oder Manifestauswertung schlägt fehl |
| Abhängigkeiten | aufgelöste Pakete und verwendeter Aufruf | Auflösung oder Zugriff unterscheidet sich vom bisherigen Lauf |
| Build und Tests | Befehl, Protokoll und Rückgabestatus | Fehler, geänderte Diagnose oder fehlendes Ergebnis |
| Plugins und Skripte | auslösende Aufgabe und erzeugte Dateien | Plugin läuft nicht oder der nächste Prozess findet sein Ergebnis nicht |
Das Manifest sollte als Eingabe protokolliert werden, nicht ohne Befund umgeschrieben werden. Erfassen Sie, ob das Paket unter der ausgewählten Toolchain überhaupt eingelesen wird, ob Abhängigkeiten aufgelöst werden und welche Aufgaben anschließend erfolgreich abgeschlossen werden. Die SwiftPM-Dokumentation liefert den offiziellen Rahmen für diese Befehle; das Verhalten eines eigenen Plugins muss dennoch durch dessen tatsächlichen Aufruf geprüft werden.
Ein passender Startpunkt für eine einfache Diagnose sieht so aus:
swift --version
swift package describe
swift build
swift test
Die Befehle sind keine Kompatibilitätsgarantie und müssen an das Projekt angepasst werden. In einem Projekt mit mehreren Packages oder eigenen Optionen ist genau der Aufruf zu testen, den das Team verwendet. Für einen reproduzierbaren Vergleich sollten Arbeitsverzeichnis, Branch, Abhängigkeitszustand und ausgewählte Toolchain festgehalten werden.
Ein Ergebnisprotokoll kann beispielsweise diese Felder enthalten; die Zeilen sind ein Muster und keine behaupteten Messdaten:
Toolchain: <tatsächlich verwendete Version>
Aufruf: <vollständiger SwiftPM-Befehl>
Manifest: <Pfad und geprüfter Stand>
Build: <Status und relevante Diagnose>
Tests: <Status und relevante Diagnose>
Artefakt: <Pfad oder nachvollziehbarer Vermerk, falls keines erwartet wird>
Ein erfolgreicher swift test belegt nur, dass die konkret gestarteten Tests in dieser Umgebung bestanden haben. Daraus folgt nicht automatisch, dass alle Plugins, alle Skripte oder alle unterstützten Plattformen kompatibel sind. Wenn ein Plugin Build-Produkte erzeugt, muss zusätzlich geprüft werden, ob der aufrufende Prozess diese Produkte am erwarteten Ort und in der erwarteten Form findet.
CI und Kommandozeilenwerkzeuge: Erst den realen Aufruf erfassen
CI-Änderungen werden riskant, wenn nur die Toolchain aktualisiert wird, der übrige Ablauf aber undokumentiert bleibt. Ein Runner kann zunächst ein Xcode-Scheme bauen, dann einen separaten SwiftPM-Befehl starten und dessen Ausgabe an ein weiteres Skript übergeben. Der Erfolg des Scheme-Builds sagt wenig darüber aus, ob der nachgelagerte SwiftPM-Aufruf noch dieselbe Aufgabe erledigt.
| Ablauf in der Pipeline | Zu protokollierender Nachweis | Entscheidung bei Abweichung |
|---|---|---|
| Auswahl der Toolchain | Xcode- und Swift-Version aus dem Runner-Protokoll | Runner-Konfiguration korrigieren oder Test mit eindeutig gewählter Umgebung wiederholen |
| Xcode-Aktion | Scheme und ausgeführte Build-, Test- oder Archive-Aktion | Scheme oder Eingaben untersuchen, bevor der SwiftPM-Standard verantwortlich gemacht wird |
| SwiftPM-Aufruf | vollständiger Befehl und Arbeitsverzeichnis | Unterschiede gezielt im betroffenen Package oder Skript eingrenzen |
| Plugin- oder Skriptausführung | Aufruf, Status und erzeugte Dateien | Plugin beziehungsweise Annahmen des Folgeprozesses prüfen |
| Artefaktübergabe | Pfad, Dateityp und Verbraucher | Übergabe an den nächsten Pipeline-Schritt reparieren und erneut abnehmen |
Für einen aussagekräftigen Vergleich sollte die bisherige und die aktualisierte Umgebung dieselbe Revision, dieselben Eingaben und dieselben Pipeline-Aufgaben verwenden. Ändern sich gleichzeitig Abhängigkeiten, Runner-Image und Skripte, lässt sich eine Abweichung kaum einer Ursache zuordnen. Das Ziel ist nicht, jeden internen Logeintrag zu vergleichen, sondern festzustellen, ob die erwarteten Aufgaben erfolgreich enden und ob die daraus folgenden Schritte die richtigen Ergebnisse erhalten.
Apples CI-Leitfaden für Swift Packages und Apps ist hierfür ein Referenzpunkt, nicht der Ersatz für die Prüfung des eigenen Runner-Skripts. Prüfen Sie insbesondere, ob der CI-Aufruf Xcode oder SwiftPM startet, ob ein Scheme angegeben wird und ob ein Skript nach dem Build bestimmte Dateien erwartet. Der Build-Einstieg und die Weiterverarbeitung sind getrennte Fehlerflächen.
Schrittfolge für einen belastbaren Vergleich
- Build-Einstiege inventarisieren. Suchen Sie in CI-Konfiguration, Makefiles, Shell-Skripten und Entwickleranweisungen nach Xcode- und SwiftPM-Aufrufen. Notieren Sie, welcher davon tatsächlich für App, Package, Tests und Release verwendet wird.
- Toolchain festhalten. Erfassen Sie die ausgewählte Xcode-Version und die Ausgabe von
swift --versionin genau der Umgebung, in der gebaut wird. Die Apple-Systemanforderungen nennen Swift 6.4 für Xcode 27.1; daraus lässt sich nicht die lokal ausgewählte Toolchain jedes Runner ableiten. - Bestehende Aufgaben unverändert ausführen. Starten Sie Xcode-Scheme und direkte SwiftPM-Aufrufe getrennt. Verändern Sie während dieser Diagnose nicht zugleich Manifest, Abhängigkeiten und Skripte.
- Ergebnisse nachvollziehbar sichern. Speichern Sie relevante Fehlermeldungen, Status und erzeugte Artefakte. Halten Sie fest, welches Ergebnis ein nachfolgender Pipeline-Schritt erwartet.
- Abweichungen lokalisieren. Prüfen Sie zuerst, ob der Fehler im Xcode-Build, im direkten SwiftPM-Aufruf, in einem Plugin oder bei der Artefaktübergabe auftritt. Beheben Sie nicht vorsorglich den gesamten Build-Ablauf, wenn nur ein einzelner Schritt betroffen ist.
- Release-Pfad erneut abnehmen. Wenn der Build für eine Veröffentlichung gedacht ist, führen Sie die tatsächlich verwendete Archivierungs- oder Verteilungsaktion ebenfalls aus. Ein Package-Test ist kein Ersatz für den App-Release-Test.
Mehrere Zielplattformen: Pro Ziel testen statt Kompatibilität vermuten
Ein Swift Package kann für unterschiedliche Plattformen vorgesehen sein. Eine Änderung am SwiftPM-Standard sagt für sich genommen nicht aus, dass alle Zielplattformen eines Packages erfolgreich gebaut oder getestet werden. Die Abnahme muss sich daher an den Plattformen orientieren, die das Projekt tatsächlich unterstützt, sowie an den verfügbaren Aufgaben und Abhängigkeiten.
Führen Sie für jede unterstützte Plattform den realen Build- oder Testpfad aus, der im Projekt vorgesehen ist. Wenn ein bestimmtes Ziel in der geprüften Umgebung nicht verfügbar ist, markieren Sie es als nicht verifiziert, statt aus einem erfolgreichen macOS-Test auf dessen Kompatibilität zu schließen. Das gilt auch für Abhängigkeiten, die nur auf einzelnen Plattformen eingebunden werden, und für Plugins, die abhängig vom Ziel unterschiedliche Arbeit erledigen.
Für ein iOS-App-Projekt bleibt außerdem entscheidend, welcher Prozess die App baut. Ein erfolgreicher SwiftPM-Test für eine Bibliothek besagt nicht, dass das Xcode-Scheme, der Simulator- oder Gerätepfad und das Archivieren der App geprüft wurden. Umgekehrt beweist ein erfolgreicher Xcode-App-Build nicht, dass ein separat gepflegtes Package bei direktem SwiftPM-Aufruf dieselben Ergebnisse liefert. Die beiden Prüfungen beantworten unterschiedliche Fragen.
FAQ: Standardwechsel und Migration voneinander abgrenzen
Was bedeutet Swift Build als SwiftPM-Standard?
Die Swift-6.4-Veröffentlichungsnotizen bestätigen, dass SwiftPM standardmäßig Swift Build nutzt. Das ist relevant, wenn ein Projekt SwiftPM-Aufgaben direkt ausführt. Es ist kein Beleg dafür, dass Xcode automatisch den Einstieg eines App-Projekts verändert. Prüfen Sie deshalb, welche Befehle in lokalen Skripten und CI tatsächlich gestartet werden, und testen Sie genau diese Pfade mit der neuen Toolchain.
Muss ein Xcode-Projekt seine App-Builds wegen SwiftPM ändern?
Nicht automatisch. Wenn Xcode das Projekt über ein Scheme baut, ist dieses Scheme zunächst der zu prüfende App-Pfad. Eingebundene Swift Packages sind dabei nicht gleichbedeutend mit einem zusätzlich ausgeführten swift build. Erst wenn das Repository direkte SwiftPM-Aufgaben oder davon abhängige Skripte nutzt, sollte deren Verhalten gezielt geprüft und gegebenenfalls angepasst werden.
Wie wird ein direkter Package-Build geprüft?
Erfassen Sie zuerst Toolchain und Paketstand. Führen Sie dann die tatsächlich benötigten Befehle aus, beispielsweise Build und Tests, und sichern Sie Status, Diagnose und erwartete Ergebnisse. Prüfen Sie Plugins und Weiterverarbeitung zusätzlich, wenn diese im Projekt verwendet werden. Ein einzelner bestandener Test deckt nur seine konkrete Aufgabe ab; nicht geprüfte Plattformen und Skripte bleiben offen.
Was ist nach einem CI-Toolchain-Update zu kontrollieren?
Ermitteln Sie, welche Xcode- und Swift-Version der Runner wirklich verwendet. Trennen Sie danach Scheme-Aktionen von direkten SwiftPM-Aufrufen und prüfen Sie Plugins, Skripte sowie die Artefaktübergabe. Vergleichen Sie die relevanten Ausgaben mit dem bisherigen Ablauf unter gleichen Projekteingaben. Wenn ein Fehler auftritt, ändern Sie zunächst nur den betroffenen Schritt, statt den gesamten Build-Einstieg vorsorglich auszutauschen.
Checkliste: Beibehalten, anpassen oder parallel prüfen
- [ ] Ist dokumentiert, ob die App über ein Xcode-Scheme oder einen direkten SwiftPM-Befehl gebaut wird?
- [ ] Sind alle SwiftPM-Aufrufe in lokalen Skripten und CI erfasst?
- [ ] Werden Xcode- und Swift-Version in der tatsächlich verwendeten Umgebung protokolliert?
- [ ] Wurden Manifest, Abhängigkeiten und relevante Package-Aufgaben unter der Ziel-Toolchain geprüft?
- [ ] Sind Plugins, Skripte und die Weitergabe erzeugter Dateien separat abgenommen?
- [ ] Wurden die vom Projekt unterstützten Plattformen einzeln geprüft oder ausdrücklich als nicht verifiziert markiert?
- [ ] Wurde bei einem App-Release neben Build und Tests auch der verwendete Archivierungs- oder Verteilungspfad kontrolliert?
| Prüfergebnis | Sinnvolle Entscheidung | Was als Nachweis genügt |
|---|---|---|
| App wird über Xcode gebaut; keine direkte SwiftPM-Aufgabe ist betroffen | Bestehenden Einstieg beibehalten | Erfolgreiche Prüfung des verwendeten Schemes und der Release-Aktion |
| Package wird direkt mit SwiftPM gebaut; alle benötigten Aufgaben funktionieren | Änderung beobachten, Ablauf dokumentieren | Toolchain, Befehle, Protokolle und benötigte Ergebnisse sind festgehalten |
| Einzelne Plugins oder Skripte weichen ab | Betroffenen Schritt gezielt anpassen | Wiederholbare Prüfung des korrigierten Aufrufs und seiner Ausgabe |
| Team kann Auswirkungen noch nicht zuordnen | Kurzzeitig alten und neuen Werkzeugpfad parallel prüfen | Vergleich unter denselben Eingaben mit klar getrennten Protokollen |
Eine Umstellung ist dann begründet, wenn der tatsächlich verwendete Ablauf einen reproduzierbaren Fehler zeigt oder die neue Toolchain für ein konkretes Projektziel benötigt wird. Wenn Xcode-Build und Release-Prüfung funktionieren und keine separat betroffene SwiftPM-Aufgabe existiert, bringt ein vorsorglicher Wechsel des App-Einstiegs keinen belegten Nutzen. Bei unklaren CI-Abweichungen ist eine zeitlich begrenzte Parallelprüfung oft informativer als eine sofortige Änderung aller Runner und Skripte.
Wiederholbare macOS-Prüfung: lokale Umgebung oder Remote Mac
Für wiederkehrende Tests muss nicht jede Entwicklung auf einen entfernten Mac verlagert werden. Codebearbeitung und allgemeine Arbeit können lokal bleiben; die macOS-spezifischen Prüfungen laufen auf einer festgelegten Umgebung, wenn das Projekt eine reproduzierbare Xcode- und SwiftPM-Konfiguration benötigt. Vor einer solchen Entscheidung sollte das Team die benötigten Xcode-Versionen, Package-Aufgaben, Zugänge und Datenschutzanforderungen festhalten. Für Zugangsdaten und Signiermaterial gelten dabei die internen Sicherheitsvorgaben des Projekts, unabhängig davon, wo der Build läuft.
Eine dauerhafte eigene Mac-Umgebung kann sinnvoller sein, wenn sie regelmäßig und mit stabilen Anforderungen eingesetzt wird. Für kurze Kompatibilitätsprüfungen oder eine zeitlich begrenzte Migration ist dagegen ein gemieteter Mac eine mögliche Alternative zum Hardwarekauf. Die Mietpreisübersicht für Mac mini hilft dabei, die laufenden Mietkosten in die Entscheidung einzubeziehen; die Übersicht zu Remote-Mac-Umgebungen erläutert den grundsätzlichen Zugang zu einer entfernten Mac-Umgebung. Welche Variante passt, hängt vom tatsächlichen Bedarf an Laufzeit, Zugriff und wiederholbaren Tests ab.
Ein Remote Mac ersetzt keine Abnahme des eigenen Projekts: Toolchain, Befehle, Protokolle und Artefakte müssen weiterhin für den jeweiligen Ablauf dokumentiert werden. Wenn jedoch lokale Hardware fehlt oder die Prüfung nur für einen begrenzten Zeitraum wiederholt werden muss, kann SFTPMAC eine flexiblere Testumgebung bieten. Bei dauerhaft hoher Auslastung oder notwendigem physischem Gerätezugriff sollte dagegen geprüft werden, ob eine eigene Mac-Hardware die passendere Lösung ist. Entscheidend bleibt, dass die Migration erst nach einem reproduzierbaren Ergebnis des tatsächlich genutzten Xcode- oder SwiftPM-Pfads beschlossen wird.