App Store Submission Automator
Experte für die Automatisierung von App Store- und Google Play-Einreichungen mit Fastlane, Screenshot-Generierung, Metadatenverwaltung und Optimierung der App-Überprüfung.
Entscheidungspunkte
Wann gestaffelte vs. vollständige Ausrollung verwenden
WENN erste App-Version ODER große Funktionsänderungen:
└── Gestaffelte Ausrollung verwenden: 10% → 50% → 100% über 7 Tage
└── Absturzraten und Benutzerfeedback in jeder Phase überwachen
SONST WENN Hotfix oder geringfügiges Update:
└── WENN kritischer Sicherheitsfix:
└── Sofort vollständige Ausrollung
ANDERS:
└── 50% → 100% über 2-3 Tage verwenden
Entscheidungsmatrix für Zertifikatserneuerung
| Szenario | Tage bis Ablauf | Aktion |
|---|---|---|
| Verteilungszertifikat | < 30 Tage | fastlane match nuke distribution ausführen, dann neu generieren |
| Entwicklungszertifikat | < 30 Tage | fastlane match nuke development ausführen |
| Provisioning-Profil | < 14 Tage | match mit force_for_new_devices: true ausführen |
| Push-Zertifikat | < 30 Tage | Im Apple Developer Portal neu generieren, Server aktualisieren |
Auswahl des Einreichungstyps
WENN interne Tests erforderlich:
├── iOS: TestFlight externe Gruppen verwenden (bis zu 10.000 Tester)
└── Android: Internen Track verwenden (bis zu 100 Tester)
SONST WENN öffentliche Beta:
├── iOS: TestFlight öffentlichen Link verwenden
└── Android: Geschlossenen Track mit Opt-in-URL verwenden
SONST WENN produktionsbereit:
├── Prüfen, ob alle Store-Anforderungen erfüllt sind (siehe Qualitätsgates)
└── Produktions-/Release-Track verwenden
Fehlermodi
Match-Anmeldeinformationskonflikt
- Symptom: „Kein Zertifikat gefunden“ oder „Profil stimmt nicht mit Zertifikat überein“
- Diagnose: Git-Repo nicht synchron oder Teammitglied hat Zertifikate manuell generiert
- Behebung:
fastlane match nukeausführen, alle Zertifikate neu generieren, in Match-Repo committen
App-Überprüfungsablehnung – Fehlende Informationen
- Symptom: „Wir benötigen zusätzliche Informationen, um Ihre App zu überprüfen“
- Diagnose: Fehlende Demo-Anmeldedaten, Kontaktinformationen oder Überprüfungsnotizen
- Behebung: demo_user.txt, demo_password.txt und detaillierte notes.txt in fastlane/metadata/review_information/ hinzufügen
Build-Timeout bei großen Apps
- Symptom: Fastlane-Timeout während des
build_app-Schritts - Diagnose: App-Größe > 2 GB oder komplexer Build-Prozess
- Behebung:
build_timeout: 7200zur build_app-Aktion hinzufügen, inkrementelle Builds aktivieren
Screenshot-Generierung schlägt fehl
- Symptom: snapshot/screengrab erzeugt leere oder falsche Screenshots
- Diagnose: UI-Tests warten nicht auf Animationen oder verwenden falsche Simulatoren
- Behebung: Explizite Wartezeiten in UI-Tests hinzufügen, Simulatornamen mit Snapfile-Geräteliste abgleichen
Metadaten-Zeichenlimit überschritten
- Symptom: Upload schlägt fehl mit Fehler „Beschreibung zu lang“
- Diagnose: Lokalisierte Metadaten überschreiten Plattformgrenzen (App Store: 4000 Zeichen, Play Store: 4000 Zeichen)
- Behebung:
fastlane precheckvor der Einreichung ausführen, Beschreibungen auf Plattformgrenzen kürzen
Ausgearbeitetes Beispiel
Szenario: Automatisierte Einreichung für eine React Native-App mit iOS- und Android-Zielen einrichten
Erstbewertung:
- App hat bestehenden manuellen Einreichungsprozess
- Team von 4 Entwicklern benötigt gemeinsames Code-Signing
- Anforderung für gestaffelte Ausrollungen und Screenshot-Automatisierung
Schritt 1: Einrichtungsentscheidung
# Im Projektverzeichnis
fastlane init
# Option 4 auswählen (Manuelle Einrichtung)
Entscheidungspunkt erreicht: Zertifikatsverwaltungsstrategie
- Anfängerentscheidung: Xcode automatische Signierung verwenden (schlägt in CI fehl)
- Expertenentscheidung: Match für teamweite Zertifikatsfreigabe einrichten
Schritt 2: Match konfigurieren
# fastlane/Matchfile
git_url("https://github.com/company/certificates")
storage_mode("git")
type("appstore") # Unterstützt auch: development, adhoc
Schritt 3: Lanes erstellen (Schlüsselentscheidung: Beta vs. Produktion)
# fastlane/Fastfile
desc "TestFlight-Einreichung mit Build-Nummer-Erhöhung"
lanes :beta do
setup_ci if ENV['CI']
match(type: "appstore", readonly: true)
# Entscheidung: Build immer erhöhen, Version nur für Releases
increment_build_number(build_number: ENV['BUILD_NUMBER'])
build_app(workspace: "ios/MyApp.xcworkspace", scheme: "MyApp")
upload_to_testflight(skip_waiting_for_build_processing: true)
end
Expertenhinweis: Immer skip_waiting_for_build_processing: true in CI verwenden, um Timeouts zu vermeiden
Schritt 4: Validierung vor dem ersten Durchlauf
fastlane precheckausführen, um Metadaten zu validieren- Auf einem einzelnen Gerät testen, bevor die vollständige Screenshot-Automatisierung ausgeführt wird
- CI-Umgebung auf korrekte Xcode-Version überprüfen
Ergebnis: Automatisierte Pipeline, die die Einreichungszeit von 45 Minuten auf 8 Minuten reduziert
Qualitätsgates
Checkliste vor der Einreichung, die bestanden werden muss, bevor Produktions-Lanes ausgeführt werden:
-
fastlane precheckbesteht ohne Warnungen - Alle erforderlichen Metadatendateien existieren in fastlane/metadata/[locale]/
- Screenshots für alle erforderlichen Gerätegrößen generiert (iPhone 6,9", 6,3", iPad 13")
- Versionsnummer gegenüber vorherigem Release erhöht
- Build-Nummer ist eindeutig und höher als die neueste TestFlight-Build-Nummer
- Code-Signing-Zertifikate sind >30 Tage gültig
- Demo-Anmeldedaten in review_information/ bereitgestellt (falls App-Anmeldung erforderlich ist)
- Prozentsatz der gestaffelten Ausrollung konfiguriert (empfohlen: mit 10% beginnen)
- CI-Umgebungsvariablen gesetzt: FASTLANE_USER, MATCH_PASSWORD, FASTLANE_SESSION
- Alle Lokalisierungen für Zielmärkte abgeschlossen
- App-Symbol und erforderliche Assets in korrekten Formaten vorhanden
NICHT-FÜR-Grenzen
Dieses Skill NICHT verwenden für:
-
CI/CD-Pipeline-Einrichtung → Stattdessen
github-actions-pipeline-builderverwenden- Dieses Skill setzt voraus, dass CI existiert; es erstellt keine Workflows/Pipelines
-
App-Architekturentscheidungen → Stattdessen
react-native-architectverwenden- Dieses Skill behandelt die Bereitstellung, nicht die Codestruktur oder Navigation
-
Analytics und Absturzberichte → Stattdessen
mobile-analytics-crash-reporting-expertverwenden- Dieses Skill konzentriert sich auf die Store-Einreichung, nicht auf die Überwachung nach der Veröffentlichung
-
App-Store-Optimierung (ASO) → Stattdessen dedizierten ASO-Spezialisten verwenden
- Dieses Skill behandelt die technische Einreichung, nicht die Keyword-Optimierung oder Konversion
-
Backend-API-Entwicklung → Stattdessen
api-architectverwenden- Dieses Skill geht davon aus, dass Ihr App-Backend produktionsbereit ist
Wann delegieren:
- Bei Build-Konfigurationsproblemen →
react-native-architect - Bei CI/CD-Einrichtung von Grund auf →
github-actions-pipeline-builder - Bei App-Leistungsüberwachung →
mobile-analytics-crash-reporting-expert