Gym (Fastlane) is een tool voor het bouwen en ondertekenen van iOS-apps in IPA-formaat via de commandoregel. In tegenstelling tot Xcode, dat handmatige selectie van schema en profiel vereist, automatiseert Gym het hele export- en verpakkingsproces van de app. Volgens de officiële Fastlane-documentatie (2026) verkort Gym de buildtijd met 30% door optimalisatie van xcodebuild-parameters en parallelle verwerking van bronnen.
Belangrijkste
Gym (Fastlane) is een component van het Fastlane-ecosysteem dat het bouwen van iOS-apps in IPA-formaat mogelijk maakt via een enkel terminalcommando. Het abstraheert het complexe proces van het aanroepen van xcodebuild met tientallen vlaggen en biedt de ontwikkelaar een eenvoudige interface met redelijke standaardwaarden.
In Xcode moet je voor het bouwen van een IPA het project openen, het schema selecteren, Archive en Export configureren, de distributiemethode specificeren en wachten tot het klaar is. Buildautomatisering via Gym elimineert handmatige stappen en garandeert dat elke build met dezelfde parameters wordt uitgevoerd — dit is cruciaal voor de voorspelbaarheid van de CI/CD-pijplijn.
Volgens SwiftLee (2024) besteden teams die Gym gebruiken voor builds 40% minder tijd aan het configureren van het releaseproces in vergelijking met handmatige export via Xcode Organizer. Gym genereert ook gedetailleerde buildlogs met vermelding van elke xcodebuild-stap, wat het debuggen van mislukte builds en het analyseren van compilatiefouten vereenvoudigt.
Gebruik Gym in elk iOS-project dat regelmatig IPA-builds vereist voor testen of publicatie — het is de enige manier om een identieke buildconfiguratie op alle machines in het team te garanderen.
Het bouwen van IPA via Gym bestaat uit drie opeenvolgende fasen: archivering van het project via xcodebuild, export van het archief naar een binair pakket en verpakking in IPA-formaat met een handtekening. Gym bepaalt automatisch het projecttype (single target of workspace) en selecteert de juiste bouwmethode.
In de archiveringsfase start Gym xcodebuild archive met de parameters van het schema en de configuratie zoals gespecificeerd in het project. Na succesvolle creatie van het .xcarchive-archief start Gym xcodebuild -exportArchive met de geselecteerde exportmethode. IPA-export is het proces van het converteren van het .xcarchive-archief naar een .ipa-installatiebestand met alle benodigde bronnen en handtekeningen.
De exportmethode bepaalt het type Provisioning Profile dat wordt gebruikt voor het ondertekenen van de IPA. Gym ondersteunt vier methoden: development voor debuggen op ontwikkelaarsapparaten, app-store voor publicatie in de App Store, ad-hoc voor bètatesten op een beperkt aantal apparaten en enterprise voor zakelijke distributie.
Aanvullende parameters omvatten het specificeren van export_options_plist voor nauwkeurige exportconfiguratie, onderdrukking van Swift overlay om de IPA-grootte te verkleinen en beheer van bitcode. Gym ondersteunt ook builds voor de simulator via de vlag --skip_package_ipa, wat handig is voor snelle codecontrole zonder volledige export.
# Basis-IPA-build via Gym
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"
# Build met opgegeven exportmethode
fastlane gym --export_method app-store
# Alleen archief bouwen zonder IPA-export
fastlane gym --skip_package_ipa
Gymfile is een Fastlane-configuratiebestand dat alle buildparameters opslaat in een gestructureerd Ruby-formaat. In tegenstelling tot het doorgeven van vlaggen via de commandoregel, maakt Gymfile het mogelijk om de configuratie in de repository vast te leggen en te garanderen dat alle ontwikkelaars en CI identieke buildinstellingen gebruiken.
# Gymfile — buildconfiguratie
workspace("MyApp.xcworkspace")
scheme("MyApp")
export_method(:app-store)
configuration("Release")
output_directory("./build")
output_name("MyApp.ipa")
include_symbols(true)
include_bitcode(false)
De parameter export_method in Gymfile komt overeen met de profieltypen uit de Apple Developer Portal. Voor App Store-releases wordt :app-store gebruikt, voor testen — :development of :ad-hoc. De parameter configuration bepaalt de buildconfiguratie: Release voor releases of Debug voor debugversies.
De parameter include_bitcode regelt de opname van bitcode in de IPA. Apple vereiste bitcode voor watchOS- en tvOS-apps, maar voor iOS kan deze parameter worden uitgeschakeld om de binaire bestandsgrootte te verkleinen. include_symbols bevat .dSYM-symbolische debugbestanden die nodig zijn voor het symboliseren van crashlogs uit App Store Connect of externe monitoringsdiensten.
Aanvullende Gymfile-parameters omvatten export_options_plist voor een aangepast export-plist-bestand, silent voor het onderdrukken van overbodige output in logs en build_path voor het specificeren van een tijdelijke builddirectory. Deze parameters zijn nuttig bij het integreren van Gym in complexe CI/CD-pijplijnen met speciale artefactvereisten.
De commando-interface van Gym bevat basisparameters voor typische buildscenario's en uitgebreide vlaggen voor nauwkeurige gedragsconfiguratie. De meeste parameters kunnen zowel via de commandoregel als via Gymfile worden doorgegeven, waarbij commandoregelargumenten prioriteit hebben boven het configuratiebestand.
Het commando fastlane gym zonder parameters gebruikt de instellingen uit Gymfile of bepaalt automatisch het project in de huidige directory. Voor projecten met meerdere targets moeten --scheme en --workspace worden gespecificeerd voor een correcte selectie van de doelbuildconfiguratie.
Voor een snelle debug-build wordt fastlane gym --export_method development gebruikt — het bouwt een IPA met een Development-profiel voor installatie op ontwikkelaarsapparaten. IPA-build voor de App Store vereist de vlag --export_method app-store en het gebruik van een Distribution-certificaat dat vooraf moet zijn geconfigureerd in Match of Keychain.
# Build voor App Store met aangepaste naam
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"
# Build met opschonen vóór archivering
fastlane gym --clean --configuration Debug
# Build voor simulator zonder IPA
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"
De vlag --clean verwijdert tijdelijke bestanden van een vorige build voordat deze wordt gestart, wat het gebruik van verouderde cache voorkomt en een schone build garandeert. De vlag --destination maakt het mogelijk om het doelplatform voor de build te specificeren: iOS Simulator, iOS Device of macOS Catalyst.
| Gym-parameter | Doel | Voorbeeldwaarde |
|---|---|---|
| --scheme | Xcode-schema selecteren voor build | MyApp |
| --export_method | Exportmethode van profiel | app-store, ad-hoc |
| --configuration | Buildconfiguratie | Release, Debug |
| --clean | Opschonen voor build | vlag |
| --output_name | Naam van uitvoer-IPA-bestand | App_1.0.ipa |
Gym integreren met CI/CD is een standaardpraktijk voor iOS-ontwikkelteams die streven naar continue levering. Gym wordt gestart in GitHub Actions-, GitLab CI-, Bitrise- of Jenkins-pijplijnen na de testfase en vóór verzending naar TestFlight of de App Store.
Een typische iOS CI/CD-pijplijn omvat: het klonen van de repository, installeren van afhankelijkheden via CocoaPods of SPM, configureren van certificaten via Match, bouwen van IPA via Gym en uploaden via Pilot of Deliver. GitLab CI is een continu-integratiesysteem van GitLab waarmee builds kunnen worden gestart bij elke push naar de repository.
# Voorbeeld van een buildstap in GitLab CI
fastlane gym --scheme "MyApp" \
--export_method app-store \
--output_directory "$CI_PROJECT_DIR/build"
# IPA opslaan als build-artefact
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"
Voor een correcte werking van Gym in CI moet xcodebuild toegang krijgen tot de Keychain met certificaten. Dit gebeurt via het commando security unlock-keychain vóór het starten van Gym. Als Match wordt gebruikt, worden certificaten automatisch geïnstalleerd en is aparte Keychain-configuratie niet nodig — Match maakt zelf een tijdelijke sleutelketen voor de build.
Na een succesvolle build kan de IPA worden doorgegeven aan volgende pijplijnstappen: uploaden naar TestFlight via Pilot of verzenden naar App Store Connect via Deliver. Configureer de omgevingsvariabelen van het CI-systeem voor het opslaan van Apple Developer-inloggegevens, inclusief FASTLANE_APPLE_API_KEY en MATCH_PASSWORD, zodat alle pijplijnfasen zonder interactieve invoer werken.
Bij het gebruik van Gym komen ontwikkelaars vaak fouten tegen die verband houden met een onjuiste xcodebuild-configuratie, ontbrekende certificaten of incompatibiliteit van Xcode-versies. Foutdiagnose bij Gym begint met het analyseren van het volledige buildlog dat na voltooiing van elk commando in de console wordt weergegeven.
De fout «error: No matching provisioning profiles found» geeft aan dat er geen geschikt Provisioning Profile is voor de geselecteerde exportmethode. Oplossing: zorg ervoor dat Match of Keychain een correct profiel bevat voor de opgegeven export_method. Provisioning Profile moet overeenkomen met de app-identifier en het certificaattype (Development of Distribution) voor een succesvolle IPA-ondertekening.
De fout «error: Signing for requires a development team» treedt op wanneer er in het project geen ontwikkelingsteam is opgegeven. Oplossing: voeg DEVELOPMENT_TEAM toe aan de buildconfiguratie van het project of specificeer team_id in Gymfile via de parameter export_team_id. Dit is vooral relevant voor projecten die met meerdere Apple Developer-accounts werken.
Bij de fout «error: Multiple commands produce...» ontstaat een conflict van uitvoerbestanden tussen verschillende targets in de workspace. Oplossing: configureer unieke uitvoerpaden voor elke target in de Build Settings van het Xcode-project of gebruik het nieuwe buildsysteem dat standaard is ingeschakeld in Xcode 14 en nieuwer. Gym ondersteunt beide varianten via de vlag --use_legacy_build_system.
Veelgestelde vragen
Gym automatiseert het xcodebuild-proces en elimineert de handmatige stappen Archive en Export. In tegenstelling tot Xcode garandeert Gym identieke buildparameters op alle machines, genereert het gedetailleerde logs en integreert het in CI/CD-pijplijnen zonder dat een grafische interface nodig is.
Gym ondersteunt vier methoden: development voor debuggen, app-store voor publicatie, ad-hoc voor bètatesten op een beperkt aantal apparaten en enterprise voor In-House zakelijke distributie. De methode wordt ingesteld via de parameter --export_method of export_method in Gymfile.
Gebruik --export_options_plist met de parameter thinning voor het genereren van een universele binaire file, schakel bitcode uit via include_bitcode(false) en configureer het strippen van symbolen via --include_symbols false als crashlogs niet nodig zijn.
De Code Signing-fout in CI wordt meestal veroorzaakt door het ontbreken van certificaten in de Keychain. Oplossing: configureer Match voor automatische certificaatinstallatie of voeg het commando security unlock-keychain toe vóór het starten van Gym. Zorg ervoor dat de variabele MATCH_PASSWORD is doorgegeven aan de CI-omgeving.
Ja, Gym ondersteunt het bouwen van macOS-, tvOS- en watchOS-apps, niet alleen iOS. Specificeer voor macOS het platform via de parameter --platform macos of configureer het juiste schema in Xcode. Gym selecteert automatisch het juiste archiefformaat voor het doelplatform.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook