Der von Apple dokumentierte Checksum für ein entferntes binäres Swift-Paket wird aus dem Archiv berechnet, auf das die Paketdeklaration verweist – nicht aus dem entpackten XCFramework. Prüfen Sie deshalb zuerst, ob Package.swift und der fehlgeschlagene Build auf dasselbe, unveränderte ZIP zeigen. Berechnen Sie erst danach für genau dieses Archiv den Checksum neu. Wurde eine veröffentlichte Datei ersetzt oder neu gepackt, veröffentlichen Sie eine neue Version mit neuer, passender Deklaration, statt pauschal den Cache oder die Sperrdatei zu ändern. Apple beschreibt den Checksum als Eigenschaft des Archivs.

Dieser Leitfaden richtet sich an App-Entwickler, die ein entferntes XCFramework einbinden und die Ursache eines Checksum-Fehlers eingrenzen müssen.
Er hilft Paketverantwortlichen, veröffentlichte Archive und URLs konsistent zu halten.
Auch Betreuer von Xcode-27-Remote-Builds und CI erhalten eine prüfbare Abnahmefolge.

Stand: 08.10.2026. Die technischen Aussagen wurden mit Apples Dokumentation zu Checksum und binaryTarget, den Xcode-27-Release-Notes und Apples Hinweisen zur Verteilung binärer Frameworks als Swift-Pakete abgeglichen. Ein einzelner Fehler belegt keinen allgemeinen Defekt von Xcode 27.

Xcode 27 Swift-Package-Checksum zuerst nach Fehlerart einordnen

Eine Meldung über einen nicht passenden Checksum ist nicht dasselbe wie ein Fehler beim Auflösen eines Quellpakets oder ein späterer Compilerfehler. Diese Unterscheidung bestimmt, welche Belege relevant sind: Für die Prüfsumme zählen das Manifest, die abgerufene URL und das Archiv; Compilerdiagnosen betreffen dagegen den Inhalt, nachdem die Abhängigkeit verfügbar gemacht wurde.

Swift Package Manager kann Pakete aus Quellcode auflösen. Ein entferntes binäres Ziel wird dagegen als binaryTarget mit Name, URL und Checksum deklariert. Apple führt diese Angaben in der Dokumentation zur binaryTarget-Deklaration getrennt auf. Der Checksum muss zum heruntergeladenen Archiv passen. Eine Datei im Archiv auszutauschen, das Framework neu zu erzeugen oder ein ZIP neu zu packen, kann den Checksum ändern, auch wenn der sichtbare Framework-Name gleich bleibt.

Die Meldung selbst reicht zur Diagnose nicht aus. Notieren Sie zunächst den vollständigen Fehlertext und den Schritt, in dem der Build stoppt. Wird das Archiv beim Prüfen zurückgewiesen, ist das ein anderer Befund als ein nicht erreichbarer Host, eine fehlgeschlagene Paketauflösung oder ein Fehler beim Kompilieren eines bereits geladenen Moduls. Ein Netzwerkfehler kann den Download verhindern, aber er ist nicht automatisch ein Hinweis darauf, dass der deklarierte Checksum falsch berechnet wurde.

Für die erste Einordnung hilft diese Gegenüberstellung:

Beobachtung Wahrscheinlicher Prüfbereich Nächster Beleg
Paket wird nicht aufgelöst oder die Adresse ist nicht erreichbar Paketquelle, Netzwerkpfad oder URL Auflösungsprotokoll und tatsächlich angeforderte Adresse
Binäres Ziel wird geladen, aber die Archivprüfung scheitert Manifestwert und heruntergeladenes ZIP Package.swift, finale Download-URL und gespeichertes Archiv
Abhängigkeit wird akzeptiert, anschließend tritt ein Buildfehler auf Inhalt, Plattformvariante oder Toolchain Compilerdiagnose und Struktur des XCFramework

Diese Zuordnung ist eine Diagnosehilfe, kein Beweis für eine bestimmte Ursache. Eine Weiterleitung oder ein Proxy kann zum Beispiel dafür sorgen, dass ein Build nicht dieselbe Datei erhält wie ein lokaler Lauf. Erst der Vergleich der tatsächlichen Abrufdaten klärt, ob das Problem vor der Prüfsummenprüfung, bei ihr oder danach liegt.

Für App-Entwickler: Manifest und tatsächlich geladene Datei vergleichen

Wenn das Projekt ein entferntes XCFramework einbindet, beginnen Sie mit der Abhängigkeitsdeklaration und der Paketauflösung, nicht mit einer willkürlichen Cache-Bereinigung. Der relevante Teil des Manifests sollte eindeutig einem veröffentlichten Archiv zuzuordnen sein:

.binaryTarget(
    name: "ExampleBinary",
    url: "https://example.invalid/releases/ExampleBinary.zip",
    checksum: "..."
)

Der Ausschnitt zeigt die Rollen der Angaben, nicht eine produktiv verwendbare Adresse oder einen gültigen Checksum. Vergleichen Sie Name, URL und Wert mit der Dokumentation beziehungsweise dem Release, das Ihr Projekt tatsächlich verwenden soll. Achten Sie darauf, dass der Name zum im Paket referenzierten Ziel passt und dass die URL auf das Archiv verweist – nicht auf eine Übersichtsseite, eine dynamische Downloadroute oder ein Verzeichnis.

Danach muss der Buildnachweis zeigen, was wirklich abgerufen wurde. Ein deklarierter Link allein beweist nicht, dass die Anfrage genau dort endete: HTTP-Weiterleitungen, Download-Gateways, Proxy-Regeln oder ein veränderter Inhalt am Ziel können ein anderes Artefakt liefern. Bewahren Sie daher die angeforderte URL, die finale Zieladresse und das heruntergeladene ZIP als Diagnosematerial auf. Wo die Buildumgebung diese Informationen protokolliert, sichern Sie die relevanten Auszüge, bevor Sie Logs oder temporäre Dateien entfernen.

Für den Vergleich gilt eine einfache Reihenfolge:

  1. Prüfen Sie im Projekt, welche Paketversion und welcher Commit beziehungsweise welche Manifestrevision ausgewählt wurden.
  2. Lesen Sie den Eintrag des binären Ziels aus dem tatsächlich verwendeten Package.swift, nicht aus einer lokalen Kopie oder einem älteren Release.
  3. Ermitteln Sie die im fehlgeschlagenen Lauf angeforderte Adresse und – soweit sichtbar – die endgültige Downloadadresse.
  4. Sichern Sie das abgerufene Archiv unverändert und notieren Sie, aus welchem Lauf es stammt.
  5. Berechnen Sie den Checksum für genau diese Datei neu und vergleichen Sie das Ergebnis mit dem Manifest.
  6. Wiederholen Sie den Lauf mit derselben Projekt- und Abhängigkeitsauflösung, um zu bestätigen, dass die Diagnose reproduzierbar ist.

Apple nennt swift package compute-checksum als Werkzeug zur Berechnung des Checksum für ein Archiv. Der Befehl muss auf die konkrete ZIP-Datei angewendet werden, die auch veröffentlicht beziehungsweise von der URL ausgeliefert wird. Die Apple-Dokumentation zum Checksum ist der maßgebliche Bezug für die Berechnung. Prüfen Sie bei abweichendem Verhalten zusätzlich die für den eingesetzten Toolchain-Stand geltenden Xcode-27-Release-Notes.

Ein lokaler Cache kann erklären, warum zwei Läufe unterschiedliche Paketzustände beobachten; er erklärt aber nicht, welcher Checksum für das veröffentlichte Archiv korrekt ist. Entfernen Sie Caches daher erst, nachdem Sie die Manifestrevision, die Paketauflösung und das abgerufene ZIP gesichert haben. Sonst verlieren Sie unter Umständen genau den Hinweis, der zeigt, ob der lokale Lauf eine ältere Datei verwendet hat.

Für Paketverantwortliche: Veröffentlichung als zusammenhängenden Vorgang absichern

Wer ein XCFramework verteilt, verantwortet nicht nur das Manifest. Das ausgelieferte Archiv, die URL und die deklarierte Prüfsumme müssen zusammenpassen und dauerhaft nachvollziehbar bleiben. Wird das ZIP nach der Berechnung neu erstellt, komprimiert, überschrieben oder durch eine andere Datei ersetzt, kann der Eintrag im Manifest nicht mehr zum Download passen. Gleiches gilt, wenn eine URL auf wechselnde Inhalte zeigt.

Die Prüfung sollte am tatsächlichen Release-Artefakt erfolgen. Erzeugen Sie das XCFramework und das für die Verteilung vorgesehene Archiv, berechnen Sie den Checksum auf der fertigen Archivdatei und übernehmen Sie diesen Wert anschließend in die Paketdeklaration. Veröffentlichen Sie dann genau dieses Artefakt unter der dafür vorgesehenen Adresse. Eine erneute Komprimierung nach der Berechnung ist keine neutrale redaktionelle Änderung: Sie erzeugt ein anderes Archiv, dessen Checksum erneut ermittelt werden muss.

Ein bereits veröffentlichtes Release sollte nicht stillschweigend unter derselben URL einen anderen Dateiinhalt erhalten. Wenn das Artefakt geändert werden muss, ist ein neues, eindeutig versioniertes Release mit aktualisiertem Manifest die nachvollziehbare Korrektur.

Das entspricht auch dem Zweck der Prüfsumme: Sie soll dem Paketmanager ermöglichen, die geladene Binärdatei dem deklarierten Archiv zuzuordnen. Die Apple-Anleitung zur Verteilung binärer Frameworks behandelt die Bereitstellung eines Frameworks als Swift-Paket; die Anleitung zu plattformübergreifenden Binärframework-Bundles ist ergänzend relevant, wenn das ausgelieferte XCFramework mehrere Plattformvarianten enthält.

Damit ein Release-Prozess nicht auf handschriftlichen Abgleichen beruht, sollte jeder Prüfschritt einen zugehörigen Nachweis behalten: Artefaktdatei, veröffentlichte URL, berechneter Checksum und die Manifestrevision. Bei mehreren Release-Zweigen muss erkennbar sein, welche Deklaration zu welcher Archivdatei gehört. Teilen verschiedene Zweige eine veränderliche URL, kann ein späterer Upload unbeabsichtigt die Abhängigkeit bereits veröffentlichter Pakete verändern.

Für die Abnahme ist außerdem wichtig, den alten Zustand nicht zu überschreiben, bevor die neue Version geprüft ist. Bewahren Sie die bisherige Manifest- und Artefaktzuordnung auf und prüfen Sie, ob bestehende Projekte weiterhin die bisherige Version beziehen können. Die Rückfallmöglichkeit ist besonders relevant, wenn ein korrigiertes Framework zwar die Archivprüfung besteht, aber anschließend einen Plattform- oder Compilerfehler auslöst. Ein erfolgreicher Checksum belegt die Übereinstimmung mit dem Archiv, nicht die korrekte Funktion des Frameworks in jedem Zielprojekt.

Für Remote-Mac- und CI-Verantwortliche: Umgebung und Auflösung nachvollziehbar machen

Ein Remote-Build kann andere Abhängigkeiten abrufen als ein lokaler Build, ohne dass Xcode selbst die Ursache ist. Abweichende Paketstände, ein anderer Commit, ein abweichender Auflösungszustand, Weiterleitungen oder ein Proxy können zu einer anderen Datei führen. Bei der Diagnose sind daher die Umgebungsdaten mit dem Fehlerzustand zu vergleichen, nicht nur die sichtbare Xcode-Version.

Für einen belastbaren Vergleich halten Sie bei beiden Läufen fest:

  • den ausgecheckten Repository-Commit und die verwendete Manifestrevision;
  • die aufgelöste Paketversion beziehungsweise den aufgezeichneten Auflösungsstand;
  • die im Manifest deklarierte URL sowie die tatsächliche finale Downloadadresse;
  • den Fehlerabschnitt aus dem Buildlog und den Schritt, in dem er auftritt;
  • soweit verfügbar, das heruntergeladene Archiv, damit dessen Checksum unabhängig berechnet werden kann.

Apples Dokumentation zum Builden von Swift-Paketen und Apps in CI-Workflows bietet den offiziellen Rahmen für die Abhängigkeitsbehandlung in automatisierten Abläufen. Die dort beschriebene CI-Perspektive ersetzt nicht den Vergleich der tatsächlich geladenen Datei: Ein reproduzierbarer Job muss neben dem Quellstand auch den erwarteten Paketstand und die Ergebnisse des Abrufs nachvollziehbar machen.

Wenn der Remote-Lauf eine andere finale URL oder ein anderes Archiv zeigt als der lokale Lauf, untersuchen Sie zuerst den Weg zwischen deklarierter und tatsächlicher Adresse. Prüfen Sie, ob eine Weiterleitung, ein Unternehmensproxy oder ein Download-Cache Inhalte bereitstellt, die nicht dem erwarteten Release entsprechen. Ist das Artefakt identisch, vergleichen Sie anschließend Manifestrevision und Paketauflösung. Ein erneuter Build mit demselben Commit und derselben Abhängigkeitsauflösung sollte die Diagnose entweder bestätigen oder zeigen, dass noch eine variable Eingabe existiert.

Für Teams mit mehreren Release-Zweigen empfiehlt sich eine explizite Zuordnung zwischen Version, Manifest, Archiv und Downloadadresse. Ein Build darf nicht versehentlich eine mutable Adresse verwenden, die je nach Zeitpunkt unterschiedliche Inhalte liefert. Prüfen Sie außerdem, ob die CI-Umgebung dieselbe Paketdeklaration erhält, die lokal geprüft wurde. Ein erfolgreicher lokaler Lauf beweist nicht, dass die Remote-Umgebung dieselbe Revision oder dasselbe Archiv abgerufen hat.

Die folgenden Antworten ergänzen die Arbeitsabläufe um konkrete Abgrenzungen; sie ersetzen nicht die Prüfung der im jeweiligen Fehlerlauf tatsächlich verwendeten Datei.

Häufige Fragen zu Swift-Package-Prüfsummen

Abweichung zwischen Manifest und heruntergeladenem ZIP

Vergleichen Sie zuerst die im Manifest angegebene URL mit der URL, die der fehlgeschlagene Build tatsächlich abgerufen hat. Speichern Sie genau dieses ZIP unverändert und berechnen Sie darauf den Checksum erneut. Stimmen URL oder Datei nicht mit dem veröffentlichten Artefakt überein, liegt der Fehler im Abruf oder in der Veröffentlichung; stimmen sie überein, prüfen Sie den Wert im Package.swift.

Die richtige Datei für den binaryTarget-Checksum

Maßgeblich ist das bereitgestellte Archiv, auf das die URL des binaryTarget verweist, nicht der entpackte Inhalt und auch nicht eine einzelne Framework-Datei darin. Verwenden Sie das tatsächlich veröffentlichte ZIP unverändert als Eingabe für swift package compute-checksum. Die Apple-Dokumentation beschreibt den Checksum als Prüfung des Archivartefakts.

Aktualisiertes Paket scheitert weiterhin in Xcode

Ermitteln Sie, ob die neue Paketversion tatsächlich eine neue, unveränderliche Archivdatei und eine dazu passende Manifeständerung enthält. Ein bloßes Austauschen der Datei unter einer bereits verwendeten URL kann alte und neue Inhalte unter derselben Adresse vermischen. Prüfen Sie anschließend Paketversion, aufgelösten Stand und die abgerufene Datei in einem sauberen Build, statt zunächst nur Caches zu löschen.

Richtige Version auf einem Remote Mac bestätigen

Halten Sie für denselben Commit die aufgelöste Paketversion, die Manifestrevision, die angeforderte und endgültige URL sowie die heruntergeladene Archivdatei fest. Vergleichen Sie diese Nachweise mit einem lokalen Lauf. Weichen URL oder Datei ab, untersuchen Sie Weiterleitungen, Proxy- oder Netzwerkpfade; sind sie gleich, prüfen Sie Manifest und Veröffentlichungsprozess.

Prüfliste für eine reproduzierbare Korrektur

  • [ ] Ist die Fehlermeldung eindeutig einer Archivprüfung zugeordnet und nicht nur einem Auflösungs-, Netzwerk- oder Compilerfehler?
  • [ ] Sind Paketversion, Repository-Commit und verwendete Manifestrevision für den fehlerhaften Build dokumentiert?
  • [ ] Zeigt die deklarierte URL auf das erwartete Archiv und nicht auf eine veränderliche oder indirekte Downloadadresse?
  • [ ] Wurde das Archiv aus dem fehlgeschlagenen Lauf gesichert, ohne es erneut zu komprimieren oder zu verändern?
  • [ ] Wurde der Checksum für die gespeicherte Archivdatei mit swift package compute-checksum neu berechnet?
  • [ ] Entspricht der neu berechnete Wert dem Wert im Manifest, oder wurde eine Abweichung durch eine geänderte Datei bestätigt?
  • [ ] Wurde bei einem ersetzten Artefakt ein neues Release mit einer dazu passenden Deklaration erstellt, statt den Inhalt einer bestehenden URL still zu ändern?
  • [ ] Wurde die Korrektur mit demselben Commit und der beabsichtigten Paketauflösung in einer sauberen Build-Umgebung erneut geprüft?
  • [ ] Sind die Nachweise für lokale und entfernte Läufe ausreichend, um unterschiedliche URLs, Paketstände oder Archive zu erkennen?
  • [ ] Bleibt die vorherige Paketversion für bestehende Projekte nachvollziehbar und bei Bedarf wiederherstellbar?

Ein Cache-Löschen kann nach Sicherung der Belege sinnvoll sein, wenn ein Projekt nach einer tatsächlichen Korrektur weiterhin einen alten Zustand verwendet. Es ist aber kein Ersatz für die Feststellung, welches Archiv geladen wurde und ob dessen Prüfsumme zur Deklaration passt. Ebenso sollte eine Sperrdatei nicht allein deshalb geändert werden, weil die Fehlermeldung einen Paketfehler enthält: Ändern Sie den aufgelösten Stand nur dann, wenn die gewünschte Abhängigkeitsversion selbst Teil der Lösung ist.

Eine fehlende macOS-Umgebung gezielt ergänzen

Die zuverlässigste Prüfung erfolgt im Zielprojekt mit der tatsächlich verwendeten Paketdeklaration und einem festgehaltenen Commit. Wenn lokal keine nutzbare macOS- und Xcode-Umgebung verfügbar ist, lässt sich ein Mac für die zeitlich begrenzte Reproduktion oder einen wiederkehrenden Build in Betracht ziehen. Das ist vor allem dann sinnvoll, wenn ein Team neben dem Prüfsummenvergleich regelmäßig Archive und CI-Ergebnisse auf einer passenden macOS-Toolchain abnehmen muss.

Eine Remote-Mac-Umgebung löst jedoch weder eine veränderliche Veröffentlichungs-URL noch ein falsch berechnetes Manifest automatisch. Vor der Entscheidung sollten Sie klären, ob Ihre Anforderungen mit Fernzugriff, Zugriffsverwaltung, Datenverarbeitung und dem gewünschten Aufbewahrungsmodell vereinbar sind. Bei Quellcode, Signaturmaterial und App-Artefakten gehören Datenschutz und DSGVO-Prüfung in die Auswahl; Zugangsdaten sollten nicht unnötig in Buildlogs oder gemeinsam genutzten Dateien landen. Für die allgemeine Einordnung bietet RUVCLOUD für macOS-Entwicklungsarbeit einen passenden Einstieg.

Wenn für die wiederholbare Abnahme eine eigene, dauerhaft verfügbare Mac-Umgebung nötig ist, vergleichen Sie die veröffentlichten Mietoptionen und Kosten mit dem Betrieb eines eigenen Geräts und mit vorhandener CI-Infrastruktur. Eine Miete ist nicht automatisch die passende Wahl für dauerhaft hohe Auslastung oder Anforderungen an lokale physische Schnittstellen. Für eine zeitlich begrenzte Fehlersuche, eine reproduzierbare Xcode-Prüfung oder einen zusätzlichen Buildplatz kann sie aber eine flexiblere Alternative zum sofortigen Hardwarekauf sein. Entscheidend bleibt in jedem Fall derselbe Nachweis: Die deklarierte URL, das ausgelieferte ZIP und der eingetragene Checksum müssen zusammenpassen.