Gym (Fastlane): cos'è, compilazione IPA e automazione nello sviluppo di app

Autore: IT Sectr Pubblicato: 2026-04-14 Tempo di lettura: 9 min

Gym (Fastlane) è uno strumento per compilare e firmare applicazioni iOS in formato IPA tramite riga di comando. A differenza di Xcode, che richiede la selezione manuale dello schema e del profilo, Gym automatizza l'intero processo di esportazione e impacchettamento dell'app. Secondo la documentazione ufficiale di Fastlane (2026), Gym riduce i tempi di compilazione del 30% grazie all'ottimizzazione dei parametri xcodebuild e all'elaborazione parallela delle risorse.

Punti chiave

  • Gym è un utilità Fastlane per la compilazione automatica di app iOS in IPA con un'interfaccia a riga di comando unificata.
  • Lo strumento opera sopra xcodebuild, ma nasconde i flag di esportazione complessi e seleziona automaticamente il metodo di firma corretto.
  • Gym supporta la compilazione per tutti i tipi di profilo: development, appstore, adhoc ed enterprise — tramite il parametro export_method.
  • La configurazione si effettua tramite il file Gymfile, che può essere versionato nel repository del progetto insieme al codice sorgente.
  • L'integrazione con CI/CD consente di avviare la compilazione IPA automaticamente dopo ogni push nel repository senza intervento dello sviluppatore.

Cos'è Gym (Fastlane)?

Gym (Fastlane) è un componente dell'ecosistema Fastlane che garantisce la compilazione di applicazioni iOS in formato IPA tramite un singolo comando terminale. Astrae il processo complesso di chiamata di xcodebuild con decine di flag e fornisce allo sviluppatore un'interfaccia semplice con valori predefiniti ragionevoli.

In Xcode, per compilare un IPA è necessario aprire il progetto, selezionare lo schema, configurare Archive ed Export, specificare il metodo di distribuzione e attendere il completamento. L'automazione della compilazione tramite Gym elimina i passaggi manuali e garantisce che ogni compilazione venga eseguita con gli stessi parametri — essenziale per la prevedibilità del pipeline CI/CD.

Secondo SwiftLee (2024), i team che utilizzano Gym per la compilazione impiegano il 40% in meno di tempo per configurare il processo di rilascio rispetto all'esportazione manuale tramite Xcode Organizer. Gym genera inoltre log di compilazione dettagliati con ogni fase di xcodebuild, facilitando il debug dei build falliti e l'analisi degli errori di compilazione.

Utilizza Gym in qualsiasi progetto iOS che richieda compilazioni regolari di IPA per test o pubblicazione — è l'unico modo per garantire una configurazione di compilazione identica su tutte le macchine del team.

Come Gym compila l'IPA: processo e parametri

Processo di compilazione IPA tramite Gym

La compilazione IPA tramite Gym comprende tre fasi sequenziali: archiviazione del progetto tramite xcodebuild, esportazione dell'archivio in pacchetto binario e impacchettamento in formato IPA con firma. Gym determina automaticamente il tipo di progetto (target singolo o workspace) e seleziona il metodo di compilazione corretto.

Nella fase di archiviazione, Gym esegue xcodebuild archive con i parametri di schema e configurazione specificati nel progetto. Dopo la creazione riuscita dell'archivio .xcarchive, Gym esegue xcodebuild -exportArchive con il metodo di esportazione scelto. L'esportazione IPA è il processo di conversione dell'archivio .xcarchive in file di installazione .ipa includendo tutte le risorse necessarie e le firme.

Parametri di esportazione della compilazione

Il metodo di esportazione determina il tipo di Provisioning Profile che verrà utilizzato per firmare l'IPA. Gym supporta quattro metodi: development per il debug sui dispositivi degli sviluppatori, app-store per la pubblicazione sull'App Store, ad-hoc per i test beta su un numero limitato di dispositivi ed enterprise per la distribuzione aziendale.

I parametri aggiuntivi includono la specifica export_options_plist per una regolazione precisa dell'esportazione, la rimozione di Swift overlay per ridurre le dimensioni dell'IPA e la gestione del bitcode. Gym supporta anche la compilazione per simulatore tramite il flag --skip_package_ipa, utile per una verifica rapida del codice senza esportazione completa.

bash
# Build di base dell'IPA tramite Gym
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"

# Build con indicazione del metodo di esportazione
fastlane gym --export_method app-store

# Build solo dell'archivio senza esportazione IPA
fastlane gym --skip_package_ipa

Configurazione di Gym tramite Gymfile

Gymfile è un file di configurazione Fastlane che memorizza tutti i parametri di compilazione in un formato Ruby strutturato. A differenza della trasmissione di flag tramite riga di comando, Gymfile permette di fissare la configurazione nel repository e garantire che tutti gli sviluppatori e CI utilizzino parametri di compilazione identici.

ruby
# Gymfile — configurazione della build
workspace("MyApp.xcworkspace")
scheme("MyApp")
export_method(:app-store)
configuration("Release")
output_directory("./build")
output_name("MyApp.ipa")
include_symbols(true)
include_bitcode(false)

Il parametro export_method in Gymfile corrisponde ai tipi di profilo del portale Apple Developer. Per i rilasci App Store si utilizza :app-store, per i test — :development o :ad-hoc. Il parametro configuration determina la configurazione di compilazione: Release per le versioni finali o Debug per le versioni di debugging.

Il parametro include_bitcode controlla l'inclusione del bitcode nell'IPA. Apple richiedeva il bitcode per le app watchOS e tvOS, ma per iOS questo parametro può essere disattivato per ridurre le dimensioni del file binario. include_symbols include i file di simboli di debug .dSYM, necessari per la simbolizzazione dei log di crash provenienti da App Store Connect o servizi di monitoraggio di terze parti.

I parametri aggiuntivi di Gymfile includono export_options_plist per un file plist di esportazione personalizzato, silent per sopprimere l'output superfluo nei log e build_path per specificare la directory temporanea di compilazione. Questi parametri sono utili quando si integra Gym in pipeline CI/CD complessi con requisiti particolari sugli artefatti.

Comandi Gym per la compilazione di app

L'interfaccia a comandi Gym include parametri di base per scenari di compilazione tipici e flag avanzati per una regolazione precisa del comportamento. La maggior parte dei parametri può essere trasmessa sia tramite riga di comando che tramite Gymfile, con gli argomenti della riga di comando che hanno priorità sul file di configurazione.

Il comando fastlane gym senza parametri utilizza le impostazioni di Gymfile o rileva automaticamente il progetto nella directory corrente. Per progetti con più target, è necessario specificare --scheme e --workspace per la selezione corretta della configurazione di compilazione target.

Comandi di compilazione tipici

Per una compilazione di debug rapida, si utilizza fastlane gym --export_method development — compila un IPA con profilo Development per l'installazione sui dispositivi degli sviluppatori. La compilazione IPA per l'App Store richiede il flag --export_method app-store e l'utilizzo di un certificato Distribution, che deve essere preconfigurato in Match o Keychain.

bash
# Build per App Store con nome personalizzato
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"

# Build con pulizia prima dell'archiviazione
fastlane gym --clean --configuration Debug

# Build per il simulatore senza IPA
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"

Il flag --clean rimuove i file temporanei della compilazione precedente prima dell'esecuzione, impedendo l'utilizzo della cache obsoleta e garantendo un build pulito. Il flag --destination permette di specificare la piattaforma target per la compilazione: iOS Simulator, iOS Device o macOS Catalyst.

Parametro GymFunzioneEsempio di valore
--schemeSelezione dello schema Xcode per la compilazioneMyApp
--export_methodMetodo di esportazione del profiloapp-store, ad-hoc
--configurationConfigurazione di compilazioneRelease, Debug
--cleanPulizia prima della compilazioneflag
--output_nameNome del file IPA di outputApp_1.0.ipa

Integrazione di Gym nei pipeline CI/CD

L'integrazione di Gym con CI/CD è una pratica standard per i team di sviluppo iOS che puntano alla distribuzione continua. Gym viene eseguito nei pipeline GitHub Actions, GitLab CI, Bitrise o Jenkins dopo la fase di test e prima dell'invio a TestFlight o all'App Store.

Un pipeline CI/CD iOS tipico include: clonazione del repository, installazione delle dipendenze tramite CocoaPods o SPM, configurazione dei certificati tramite Match, compilazione IPA tramite Gym e caricamento tramite Pilot o Deliver. GitLab CI è un sistema di integrazione continua di GitLab che consente di avviare compilazioni a ogni push nel repository.

bash
# Esempio di step di build in GitLab CI
fastlane gym --scheme "MyApp" \
      --export_method app-store \
      --output_directory "$CI_PROJECT_DIR/build"
      
# Salvataggio dell'IPA come artefatto di build
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"

Per il corretto funzionamento di Gym in CI, è necessario configurare l'accesso di xcodebuild al Keychain contenente i certificati. Ciò viene fatto tramite il comando security unlock-keychain prima di eseguire Gym. Se si utilizza Match, i certificati vengono installati automaticamente e non è necessaria una configurazione separata del Keychain — Match crea autonomamente un portachiavi temporaneo per la compilazione.

Dopo una compilazione IPA riuscita, questa può essere trasmessa alle fasi successive del pipeline: caricamento su TestFlight tramite Pilot o invio ad App Store Connect tramite Deliver. Configura le variabili d'ambiente del sistema CI per memorizzare le credenziali Apple Developer, inclusi FASTLANE_APPLE_API_KEY e MATCH_PASSWORD, in modo che tutte le fasi del pipeline funzionino senza input interattivo.

Errori di compilazione Gym comuni

Utilizzando Gym, gli sviluppatori incontrano spesso errori legati a una configurazione errata di xcodebuild, all'assenza di certificati o all'incompatibilità delle versioni di Xcode. La diagnosi degli errori Gym inizia con l'analisi del log di compilazione completo, che viene visualizzato nella console dopo ogni comando.

L'errore « error: No matching provisioning profiles found » indica l'assenza di un Provisioning Profile appropriato per il metodo di esportazione scelto. Soluzione: verifica che Match o Keychain contenga un profilo corretto per il export_method specificato. Il Provisioning Profile deve corrispondere all'identificatore dell'app e al tipo di certificato (Development o Distribution) per una firma IPA riuscita.

L'errore « error: Signing for requires a development team » si verifica quando nessun team di sviluppo è specificato nel progetto. Soluzione: aggiungi DEVELOPMENT_TEAM nella configurazione di compilazione del progetto o indica team_id in Gymfile tramite il parametro export_team_id. Ciò è particolarmente rilevante per progetti che lavorano con più account Apple Developer.

Quando si verifica l'errore « error: Multiple commands produce... », si ha un conflitto di file di output tra diversi target nel workspace. Soluzione: configura percorsi di output unici per ogni target nelle impostazioni di build del progetto Xcode o utilizza il nuovo sistema di build, attivo per impostazione predefinita in Xcode 14 e versioni successive. Gym supporta entrambe le opzioni tramite il flag --use_legacy_build_system.

Domande frequenti

In cosa Gym si differenzia dalla compilazione normale tramite Xcode?

Gym automatizza il processo xcodebuild ed elimina i passaggi manuali Archive ed Export. A differenza di Xcode, Gym garantisce parametri di compilazione identici su tutte le macchine, genera log dettagliati e si integra nei pipeline CI/CD senza necessità di aprire l'interfaccia grafica.

Quali metodi di esportazione supporta Gym?

Gym supporta quattro metodi: development per il debug, app-store per la pubblicazione, ad-hoc per i test beta su un numero limitato di dispositivi ed enterprise per la distribuzione aziendale In-House. Il metodo viene impostato tramite il parametro --export_method o export_method in Gymfile.

Come ridurre le dimensioni dell'IPA durante la compilazione con Gym?

Per ridurre le dimensioni dell'IPA, utilizza --export_options_plist con il parametro thinning per generare un binario universale, disattiva il bitcode tramite include_bitcode(false) e configura lo stripping dei simboli tramite il parametro --include_symbols false se i log di crash non sono necessari.

Perché Gym fallisce con un errore di Code Signing in CI?

L'errore di Code Signing in CI è solitamente causato dall'assenza di certificati nel Keychain. Soluzione: configura Match per l'installazione automatica dei certificati o aggiungi il comando security unlock-keychain prima di eseguire Gym. Assicurati che la variabile MATCH_PASSWORD sia trasmessa nell'ambiente CI.

Si può usare Gym per compilare applicazioni macOS?

Sì, Gym supporta la compilazione di applicazioni macOS, tvOS e watchOS, non solo iOS. Per macOS, specifica la piattaforma tramite il parametro --platform macos o configura lo schema corrispondente in Xcode. Gym selezionerà automaticamente il formato di archivio corretto per la piattaforma target.

Riepilogo

  • Gym è un utilità Fastlane per la compilazione automatica di app iOS in IPA, che astrae i flag complessi di xcodebuild dietro un'interfaccia a riga di comando unificata.
  • Il processo di compilazione include l'archiviazione tramite xcodebuild archive e l'esportazione in formato IPA con il metodo di firma e il profilo scelti.
  • La configurazione tramite il file Gymfile fissa tutti i parametri nel repository: schema, workspace, metodo di esportazione, configurazione e percorsi di output.
  • Gym supporta quattro metodi di esportazione: development, app-store, ad-hoc ed enterprise — per diversi scenari di distribuzione delle app.
  • L'integrazione con CI/CD tramite GitHub Actions, GitLab CI o Bitrise consente di automatizzare la compilazione IPA dopo ogni modifica del codice nel repository.
  • Gli errori Gym comuni sono legati all'assenza di certificati, a un metodo di esportazione errato o a conflitti di file di output in un workspace con più target.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche