App Store und TestFlight
IPA-Dateien mit xcrun altool und App-Store-Connect-Schlüssel (.p8) zu TestFlight hochladen, mit Validierung, Release Notes und Transporter als Alternative.
Für iOS lädt die Build Station die fertige IPA mit xcrun altool zu App Store Connect hoch. Das Werkzeug gehört zu Xcode, du musst nichts zusätzlich installieren. Zum Anmelden braucht es einen App-Store-Connect-API-Schlüssel, eine .p8-Datei.
Voraussetzungen
- Xcode ist vollständig installiert, nicht nur die Command Line Tools.
- Die App ist in App Store Connect angelegt (Apps › +), mit derselben Bundle-ID wie im Projekt.
- Ein Preset mit Output-Typ IPA (.ipa) baut eine signierte IPA. Signierung und Zertifikate richtest du wie gewohnt in Xcode ein, die Station verwaltet sie nicht.
Schritt für Schritt
Öffne Projekt bearbeiten › Upload › Store-Upload einrichten und darin den Tab App Store.
- Team-Schlüssel anlegen. In App Store Connect › Benutzer und Zugriff › Integrationen › App Store Connect API einen Team-Schlüssel mit der Rolle App Manager anlegen. Persönliche Schlüssel nimmt altool nicht an.
.p8herunterladen. Das geht nur einmal. Key-ID und Issuer-ID stehen auf derselben Seite.- Einrichten. Direkt hochladen (xcrun altool mit API-Schlüssel) einschalten, die
.p8wählen und die Issuer-ID eintragen. Die Key-ID liest die Station aus dem DateinamenAuthKey_<KEY-ID>.p8. - Verbindung testen. Der Test fragt App Store Connect nach der App zur Bundle-ID. Er ändert nichts.
Übernehmen speichert. Der Schlüssel liegt danach im macOS-Schlüsselbund dieses Macs.
Gehören zu deinem Apple-Konto mehrere Teams, trägst du im Projekt-Editor unter Upload › iOS · App Store Connect zusätzlich den asc-provider ein.
Vor dem Upload validieren
Vor dem Upload validieren ist voreingestellt. Die Station ruft dann vor dem Upload xcrun altool --validate-app auf. Das kostet ein paar Minuten, fängt aber Signierungsfehler ab, bevor Apple sie per Mail meldet.
Hochladen
Nach einem erfolgreichen iOS-Build steht im Abschnitt Hochladen der Knopf Jetzt hochladen · App Store Connect (altool). Die Rückfrage zeigt die exakten Befehle. Der Upload läuft über die Warteschlange und steht mit Log im Verlauf.
Für jeden Aufruf schreibt die Station die .p8 aus dem Schlüsselbund in einen privaten Temp-Ordner, den nur dein Benutzer lesen kann, und löscht ihn danach wieder. Eine .p8 unter ~/.appstoreconnect/private_keys/ funktioniert ebenfalls.
Nach dem Upload braucht Apples Processing noch einige Minuten, bis der Build in TestFlight auftaucht. Der Upload war trotzdem erfolgreich.
Release Notes für TestFlight
Das Feld Release Notes (optional) in der Rückfrage geht als „Was ist zu testen” an TestFlight. Dafür müssen im Projekt Bundle-ID und Issuer-ID eingetragen sein, sonst ist das Feld gesperrt. Einen Entwurf aus den Commits seit dem letzten Upload liefert Aus Commits vorschlagen (KI), siehe Artefakte und Upload.
Ohne direkten Upload: Transporter
Ohne eingerichteten Upload bleibt der Weg über Apples App Transporter:
- Zieh die IPA am Griff links im Abschnitt Hochladen direkt ins Transporter-Fenster.
- Oder klick Transporter: Die Station öffnet die App, legt den IPA-Pfad in die Zwischenablage und zeigt die Datei im Finder. Dann noch „Deliver” drücken.
App Store Connect öffnet den hinterlegten Link, etwa für Processing und TestFlight-Freigabe.
Was im Store liegt
Mit eingerichtetem Schlüssel fragt die Station App Store Connect, welche Build-Nummer zuletzt hochgeladen wurde. Das steht im Tab Build und in der Übersicht, und die nächste Build-Nummer liegt automatisch darüber.
In der Übersicht zeigt die Station außerdem, wann das iOS-Distribution-Zertifikat und die Provisioning-Profile der App ablaufen. Siehe Übersicht und Arbeitsliste.
Typische Fehler
| Meldung | Ursache |
|---|---|
Could not find the API key file |
Die .p8 liegt weder im Schlüsselbund noch unter ~/.appstoreconnect/private_keys/, oder sie heißt nicht AuthKey_<KEY-ID>.p8. |
Unable to authenticate |
Key-ID und Issuer-ID gehören nicht zusammen, oder der Schlüssel wurde widerrufen. |
| Upload erfolgreich, TestFlight zeigt nichts | Apples Processing dauert noch einige Minuten. |
| Build-Nummer schon vergeben | Build-Nummer erhöhen und neu bauen. Die Station fragt davor schon beim Build-Start nach. |
Mac-Apps
Derselbe Schlüssel dient auch für den Mac App Store und für die Notarisierung von macOS-Apps außerhalb des Stores. Siehe macOS-Apps verteilen.
Alternative: fastlane
Brauchst du mehr als „Datei hochladen”, etwa eigene Abläufe in einer Fastfile, wählst du im Projekt-Editor eine Eigene fastlane-Lane. Siehe fastlane.