Gym (Fastlane) ist ein Tool zum Erstellen und Signieren von iOS-Anwendungen im IPA-Format über die Befehlszeile. Im Gegensatz zu Xcode, das eine manuelle Auswahl von Schema und Profil erfordert, automatisiert Gym den gesamten Export- und Paketierungsprozess. Laut der offiziellen Fastlane-Dokumentation (2026) reduziert Gym die Build-Zeit um 30% durch optimierte xcodebuild-Parameter und parallele Ressourcenverarbeitung.
Wichtige Punkte
Gym (Fastlane) ist eine Komponente des Fastlane-Ökosystems, die iOS-Anwendungen mit einem einzigen Terminalbefehl in das IPA-Format erstellt. Es abstrahiert den komplexen Prozess des Aufrufs von xcodebuild mit Dutzenden von Flags und bietet Entwicklern eine einfache Schnittstelle mit sinnvollen Standardwerten.
In Xcode erfordert die Erstellung eines IPA das Öffnen des Projekts, die Auswahl eines Schemas, die Konfiguration von Archive und Export, die Angabe der Verteilungsmethode und das Warten auf den Abschluss. Build-Automatisierung über Gym eliminiert manuelle Schritte und stellt sicher, dass jeder Build mit identischen Parametern ausgeführt wird – entscheidend für vorhersagbare CI/CD-Pipelines.
Laut SwiftLee (2024) benötigen Teams, die Gym zum Erstellen verwenden, 40% weniger Zeit für die Konfiguration des Release-Prozesses im Vergleich zum manuellen Export über Xcode Organizer. Gym erzeugt außerdem detaillierte Build-Protokolle mit jedem xcodebuild-Schritt, was das Debuggen fehlgeschlagener Builds und die Analyse von Kompilierungsfehlern vereinfacht.
Verwenden Sie Gym in jedem iOS-Projekt, das regelmäßige IPA-Builds zum Testen oder Veröffentlichen benötigt – es ist die einzige Möglichkeit, eine identische Build-Konfiguration auf allen Maschinen im Team zu gewährleisten.
Die IPA-Erstellung über Gym besteht aus drei aufeinanderfolgenden Phasen: Projektarchivierung über xcodebuild, Export des Archivs in ein Binärpaket und Paketierung in das IPA-Format mit Signierung. Gym erkennt automatisch den Projekttyp (einzelnes Target oder Workspace) und wählt die korrekte Build-Methode aus.
In der Archivierungsphase führt Gym xcodebuild archive mit den im Projekt angegebenen Schema- und Konfigurationsparametern aus. Nach erfolgreicher Archivierung (.xcarchive) führt Gym xcodebuild -exportArchive mit der ausgewählten Exportmethode aus. IPA-Export ist der Prozess der Konvertierung des .xcarchive in eine installierbare .ipa-Datei einschließlich aller erforderlichen Ressourcen und Signaturen.
Die Exportmethode bestimmt den Typ des Provisioning Profile, das für die IPA-Signierung verwendet wird. Gym unterstützt vier Methoden: development zum Debuggen auf Entwicklergeräten, app-store für die App Store-Veröffentlichung, ad-hoc für Beta-Tests auf einer begrenzten Anzahl von Geräten und enterprise für die Unternehmensverteilung.
Zusätzliche Parameter umfassen die Angabe von export_options_plist für eine fein abgestimmte Exportkonfiguration, die Unterdrückung von Swift-Overlay zur Reduzierung der IPA-Größe und die Bitcode-Verwaltung. Gym unterstützt auch Simulator-Builds über das Flag --skip_package_ipa, nützlich für eine schnelle Code-Überprüfung ohne vollständigen Export.
# Basis-IPA-Build mit Gym
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"
# Build mit Angabe der Exportmethode
fastlane gym --export_method app-store
# Nur Archiv-Build ohne IPA-Export
fastlane gym --skip_package_ipa
Gymfile ist eine Fastlane-Konfigurationsdatei, die alle Build-Parameter in einem strukturierten Ruby-Format speichert. Im Gegensatz zur Übergabe von Flags über die Befehlszeile ermöglicht Gymfile, die Konfiguration im Repository zu fixieren und sicherzustellen, dass alle Entwickler und CI identische Build-Einstellungen verwenden.
# Gymfile — Build-Konfiguration
workspace("MyApp.xcworkspace")
scheme("MyApp")
export_method(:app-store)
configuration("Release")
output_directory("./build")
output_name("MyApp.ipa")
include_symbols(true)
include_bitcode(false)
Der Parameter export_method in Gymfile entspricht den Profiltypen aus dem Apple Developer Portal. Für App Store-Releases verwenden Sie :app-store, für Tests :development oder :ad-hoc. Der Parameter configuration definiert die Build-Konfiguration: Release für Veröffentlichungen oder Debug für Debug-Versionen.
Der Parameter include_bitcode steuert die Einbindung von Bitcode in das IPA. Apple verlangte Bitcode für watchOS- und tvOS-Anwendungen, aber für iOS kann dieser Parameter deaktiviert werden, um die Binärgröße zu reduzieren. include_symbols bindet .dSYM-Symbol-Debug-Dateien ein, die für die Symbolisierung von Absturzprotokollen aus App Store Connect oder Drittanbieter-Überwachungsdiensten benötigt werden.
Weitere Gymfile-Parameter umfassen export_options_plist für eine benutzerdefinierte plist-Exportdatei, silent zum Unterdrücken übermäßiger Protokollausgabe und build_path zum Angeben eines temporären Build-Verzeichnisses. Diese Parameter sind nützlich bei der Integration von Gym in komplexe CI/CD-Pipelines mit spezifischen Artefaktanforderungen.
Die Befehlsschnittstelle von Gym umfasst grundlegende Parameter für typische Build-Szenarien und erweiterte Flags zur präzisen Verhaltenssteuerung. Die meisten Parameter können sowohl über die Befehlszeile als auch über Gymfile übergeben werden, wobei Befehlszeilenargumente Vorrang vor der Konfigurationsdatei haben.
Der Befehl fastlane gym ohne Parameter verwendet Einstellungen aus Gymfile oder erkennt automatisch das Projekt im aktuellen Verzeichnis. Für Projekte mit mehreren Targets müssen --scheme und --workspace angegeben werden, um die korrekte Target-Build-Konfiguration auszuwählen.
Für schnelle Debug-Builds verwenden Sie fastlane gym --export_method development – es erstellt ein IPA mit einem Development-Profil zur Installation auf Entwicklergeräten. IPA-Build für den App Store erfordert das Flag --export_method app-store und ein Distribution-Zertifikat, das zuvor in Match oder Keychain konfiguriert werden muss.
# App-Store-Build mit benutzerdefiniertem Namen
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"
# Build mit Bereinigung vor der Archivierung
fastlane gym --clean --configuration Debug
# Simulator-Build ohne IPA
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"
Das Flag --clean entfernt temporäre Dateien des vorherigen Builds vor dem Start, verhindert die Verwendung veralteter Caches und gewährleistet einen sauberen Build. Das Flag --destination ermöglicht die Angabe der Zielplattform: iOS Simulator, iOS Device oder macOS Catalyst.
| Gym-Parameter | Zweck | Beispielwert |
|---|---|---|
| --scheme | Xcode-Schema zum Erstellen auswählen | MyApp |
| --export_method | Profil-Exportmethode | app-store, ad-hoc |
| --configuration | Build-Konfiguration | Release, Debug |
| --clean | Vor dem Build bereinigen | Flag |
| --output_name | Name der Ausgabe-IPA-Datei | App_1.0.ipa |
Gym-CI/CD-Integration ist eine Standardpraxis für iOS-Entwicklungsteams, die kontinuierliche Bereitstellung anstreben. Gym wird in Pipelines von GitHub Actions, GitLab CI, Bitrise oder Jenkins nach der Testphase und vor der Einreichung bei TestFlight oder App Store ausgeführt.
Eine typische iOS-CI/CD-Pipeline umfasst: Repository-Klonen, Abhängigkeitsinstallation über CocoaPods oder SPM, Zertifikatseinrichtung über Match, IPA-Build über Gym und Upload über Pilot oder Deliver. GitLab CI ist ein kontinuierliches Integrationssystem von GitLab, das bei jedem Push in das Repository Builds ausführt.
# Beispiel eines Build-Schritts in GitLab CI
fastlane gym --scheme "MyApp" \
--export_method app-store \
--output_directory "$CI_PROJECT_DIR/build"
# Speichern der IPA als Build-Artefakt
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"
Damit Gym in CI korrekt funktioniert, benötigt xcodebuild Zugriff auf die Keychain mit den Zertifikaten. Dies erfolgt über den Befehl security unlock-keychain vor dem Ausführen von Gym. Wenn Match verwendet wird, werden Zertifikate automatisch installiert, und eine separate Keychain-Einrichtung ist nicht erforderlich – Match erstellt eine temporäre Schlüsselbund für den Build.
Nach einem erfolgreichen IPA-Build kann dieser an nachfolgende Pipeline-Schritte übergeben werden: Hochladen zu TestFlight über Pilot oder Senden an App Store Connect über Deliver. Konfigurieren Sie Umgebungsvariablen des CI-Systems zum Speichern von Apple Developer-Anmeldedaten, einschließlich FASTLANE_APPLE_API_KEY und MATCH_PASSWORD, damit alle Pipeline-Stufen ohne interaktive Eingabe funktionieren.
Bei der Verwendung von Gym stoßen Entwickler häufig auf Fehler im Zusammenhang mit falscher xcodebuild-Konfiguration, fehlenden Zertifikaten oder Xcode-Versionsinkompatibilität. Fehlerdiagnose in Gym beginnt mit der Analyse des vollständigen Build-Protokolls, das nach Abschluss jedes Befehls in der Konsole ausgegeben wird.
Der Fehler „error: No matching provisioning profiles found“ zeigt an, dass kein geeignetes Provisioning Profile für die ausgewählte Exportmethode vorhanden ist. Lösung: Stellen Sie sicher, dass Match oder Keychain ein gültiges Profil für die angegebene export_method enthält. Provisioning Profile muss mit der Anwendungs-ID und dem Zertifikatstyp (Development oder Distribution) für eine erfolgreiche IPA-Signierung übereinstimmen.
Der Fehler „error: Signing for requires a development team“ tritt auf, wenn im Projekt kein Entwicklungsteam angegeben ist. Lösung: Fügen Sie DEVELOPMENT_TEAM zur Build-Konfiguration des Projekts hinzu oder geben Sie team_id in Gymfile über den Parameter export_team_id an. Dies ist besonders relevant für Projekte, die mit mehreren Apple Developer-Konten arbeiten.
Für den Fehler „error: Multiple commands produce...“ kommt es zu einem Konflikt von Ausgabedateien zwischen verschiedenen Targets im Workspace. Lösung: Legen Sie eindeutige Ausgabepfade für jedes Target in den Build Settings des Xcode-Projekts fest oder verwenden Sie das neue Build-System, das standardmäßig in Xcode 14 und neuer aktiviert ist. Gym unterstützt beide Optionen über das Flag --use_legacy_build_system.
Häufig gestellte Fragen
Gym automatisiert den xcodebuild-Prozess und eliminiert die manuellen Archive- und Export-Schritte. Im Gegensatz zu Xcode garantiert Gym identische Build-Parameter auf allen Maschinen, erzeugt detaillierte Protokolle und integriert sich in CI/CD-Pipelines ohne Öffnen einer grafischen Oberfläche.
Gym unterstützt vier Methoden: development zum Debuggen, app-store zur Veröffentlichung, ad-hoc für Beta-Tests auf einer begrenzten Anzahl von Geräten und enterprise für unternehmensinterne In-House-Verteilung. Die Methode wird über den Parameter --export_method oder export_method in Gymfile festgelegt.
Um die IPA-Größe zu reduzieren, verwenden Sie --export_options_plist mit dem Parameter thinning zur Generierung einer universellen Binärdatei, deaktivieren Sie Bitcode über include_bitcode(false) und konfigurieren Sie das Strippen von Symbolen über --include_symbols false, wenn keine Absturzprotokolle benötigt werden.
Code-Signing-Fehler in CI werden in der Regel durch fehlende Zertifikate in der Keychain verursacht. Lösung: Konfigurieren Sie Match für die automatische Zertifikatsinstallation oder fügen Sie den Befehl security unlock-keychain vor dem Ausführen von Gym hinzu. Stellen Sie sicher, dass die Variable MATCH_PASSWORD an die CI-Umgebung übergeben wird.
Ja, Gym unterstützt das Erstellen von macOS-, tvOS- und watchOS-Anwendungen, nicht nur iOS. Für macOS geben Sie die Plattform über den Parameter --platform macos an oder konfigurieren das entsprechende Schema in Xcode. Gym wählt automatisch das korrekte Archivformat für die Zielplattform aus.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch