Fastlane è uno strumento open source per automatizzare il build, il test e la pubblicazione di app iOS e Android. Invece di eseguire manualmente una dozzina di comandi per firma, build e caricamento nello store, lo sviluppatore descrive l’intero processo in un Fastfile e lo esegue con un unico comando. Secondo Fastlane Docs, 2025, lo strumento è utilizzato in oltre 1,5 milioni di progetti in tutto il mondo. Fastlane unisce utility per lavorare con App Store Connect, Google Play Console e sistemi di firma del codice.
Punti chiave
Fastlane è uno strumento di automazione dei build mobili, scritto in Ruby e distribuito sotto licenza MIT. Automatizza le attività di routine dello sviluppatore mobile: build dell’app, esecuzione dei test, creazione di screenshot, firma del codice e caricamento dei binari nell’App Store o Google Play. Invece di 15–20 comandi manuali, lo sviluppatore esegue un unico comando fastlane con il nome dello scenario.
Fastlane funge da wrapper per gli utility di Xcode (xcodebuild, xcrun) e Android SDK (gradlew, apksigner, bundletool), fornendo un’interfaccia unificata per entrambe le piattaforme. Ciò è particolarmente prezioso per i team che mantengono versioni iOS e Android della stessa app — Fastfile identici possono descrivere build per entrambe le piattaforme con differenze minime nei parametri.
Secondo GitHub, Fastlane ha oltre 39.000 stelle ed è lo standard di automazione nello sviluppo mobile. Lo strumento è mantenuto dalla comunità e da Google — Fastlane è integrato in Firebase come metodo consigliato per distribuire app Android a Google Play Console.
L’architettura di Fastlane si basa su tre livelli: actions (comandi di base), lanes (scenari) e strumenti (utility specializzate). Le actions sono funzioni individuali di Fastlane, ciascuna delle quali esegue un’azione specifica: creare uno screenshot, compilare IPA, caricare in TestFlight. Le lanes combinano più actions in uno scenario sequenziale descritto nel Fastfile.
Actions sono i mattoni di Fastlane. Ogni action accetta parametri ed esegue un singolo compito. Ad esempio, l’action gym compila l’app iOS, scan esegue i test, pilot carica il build in TestFlight. Fastlane ha oltre 200 actions integrate, con documentazione per ciascuna accessibile tramite il comando fastlane action [nome].
Se le actions integrate non sono sufficienti, lo sviluppatore può creare una custom action in Ruby e collegarla nel Fastfile. Le custom action vengono distribuite tramite plugin Fastlane, pubblicati su Rubygems e installati tramite il file FastfilePlugin nella radice del progetto.
Lane è uno scenario di automazione nominato che combina più actions in una sequenza logica. Una lane può chiamare altre lanes (private lanes), passare parametri e gestire errori. Ciò consente di costruire una gerarchia di scenari: lane di build base, lane di deploy, lane di ciclo CI/CD completo.
Fastlane include una serie di strumenti specializzati, ciascuno dei quali risolve un compito specifico di automazione mobile. Gli strumenti vengono eseguiti come actions all’interno delle lanes o direttamente dalla riga di comando. Esaminiamo quattro strumenti chiave che coprono le principali esigenze CI/CD per iOS e Android.
| Strumento | Scopo | Comando |
|---|---|---|
| scan | Esecuzione di test Unit e UI sul simulatore iOS | fastlane scan |
| gym | Compilazione del file IPA o APP per iOS | fastlane gym |
| match | Sincronizzazione di certificati e profili di provisioning tramite Git | fastlane match |
| deliver | Caricamento del binario e dei metadati in App Store Connect | fastlane deliver |
| snapshot | Generazione automatica di screenshot su diversi dispositivi | fastlane snapshot |
Scan semplifica l’esecuzione dei test Xcode, selezionando automaticamente il simulatore appropriato e formattando il report. Gym compila l’app con flag di compilazione ottimali e supporta exportOptions.plist per diversi tipi di build (development, adhoc, appstore). Deliver consente di caricare non solo il binario, ma anche screenshot, descrizione, versioni e prezzi tramite un unico file di metadati.
Lo strumento Match merita un’attenzione particolare — risolve il problema di archiviazione e sincronizzazione dei certificati iOS in team. Match crittografa e memorizza certificati e profili di provisioning in un repository Git, e gli sviluppatori li ottengono automaticamente eseguendo fastlane match. Ciò elimina la configurazione manuale di ogni postazione di lavoro.
Snapshot è uno strumento per la creazione automatica di screenshot di app mobili su diversi dispositivi e lingue. Snapshot esegue test UI su simulatori iOS, catturando lo schermo a ogni passo del test. I risultati vengono salvati nella directory fastlane/screenshots e possono essere caricati in App Store Connect tramite deliver.
Per Android, screengrab svolge una funzione simile sugli emulatori Android. Entrambi gli strumenti supportano la localizzazione — gli screenshot vengono creati per ogni lingua, semplificando la preparazione dei materiali per la pubblicazione in store di app multilingue.
Per i progetti iOS, Fastlane viene configurato tramite il Gemfile (installazione della gem fastlane) e il Fastfile nella directory fastlane. La configurazione iniziale viene eseguita con il comando fastlane init, che crea la struttura di directory di base, richiede i dati di App Store Connect e genera un modello di Fastfile con le lanes principali.
Il comando chiave per iOS è fastlane match, che deve essere eseguito per primo per ottenere certificati e profili di provisioning. Dopo una firma riuscita, Fastlane può compilare l’app (gym), eseguire i test (scan) e caricare il binario (pilot o deliver).
# Fastfile per app iOS
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: 'Nuova versione caricata in TestFlight')
end
Per lavorare con TestFlight, utilizza l’action pilot — carica l’IPA e gestisce i tester. Fastlane supporta upload_to_testflight (sinonimo di pilot) e gestisce automaticamente l’attesa dell’elaborazione del build da parte di Apple, che può richiedere da 5 a 30 minuti.
Per i progetti Android, Fastlane viene configurato in modo simile, ma invece degli strumenti Xcode vengono utilizzati Gradle e Android SDK. Fastlane per Android supporta la compilazione di APK e AAB, la firma tramite apksigner o jarsigner, l’esecuzione di test strumentali e il caricamento in Google Play Console tramite l’action Supply.
La differenza principale è che il build Android non richiede la gestione dei certificati tramite match (la firma Android è gestita tramite Keystore, archiviato separatamente). Fastlane per Android utilizza l’action gradle per eseguire qualsiasi attività Gradle e l’action supply per lavorare con Google Play.
# Fastfile per app Android
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
Per lavorare con Google Play Console, è necessario un account di servizio Google Cloud con accesso all’API Google Play. Fastlane accetta la chiave JSON dell’account di servizio tramite la variabile d’ambiente SUPPLY_JSON_KEY o il parametro json_key nell’action supply. Il track di pubblicazione può essere internal, alpha, beta o production.
Fastlane si integra con qualsiasi sistema CI/CD in grado di eseguire script Ruby: Jenkins, Travis CI, GitHub Actions, GitLab CI, Bitrise e CircleCI. L’integrazione si riduce all’installazione della gem fastlane e all’esecuzione del comando fastlane [lane_name] nella fase script della pipeline.
Per CI/CD, è importante configurare variabili d’ambiente per memorizzare dati sensibili: MATCH_PASSWORD (password di crittografia dei certificati), FASTLANE_USER (Apple ID), FASTLANE_PASSWORD (password Apple ID). In Travis CI, le variabili vengono crittografate tramite travis encrypt; in GitHub Actions, tramite i Secrets del repository.
La pratica consigliata è utilizzare fastlane match in CI/CD con il flag readonly per evitare modifiche accidentali al repository dei certificati. Per Android, utilizza il Keystore codificato in Base64 e salvato in una variabile d’ambiente, che viene decodificato e salvato in un file temporaneo nella fase before_install.
Fastlane Match è uno strumento per automatizzare la gestione dei certificati iOS e dei profili di provisioning, una delle funzionalità più preziose di Fastlane per i team. Match crea un repository Git crittografato (o ne utilizza uno esistente) dove memorizza tutti i certificati e i profili, sincronizzandoli tra sviluppatori e server CI/CD.
Match supporta cinque tipi di profili: development, adhoc, appstore, enterprise e developer_id. Ogni tipo viene memorizzato in una directory separata all’interno del repository. Il comando fastlane match development installa i certificati di sviluppo sulla macchina locale, mentre fastlane match appstore installa i profili App Store per i build CI.
# Utilizzo di Match in Fastfile
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
La sicurezza di Match è garantita dalla crittografia di tutti i file prima del commit in Git. La password di crittografia viene impostata tramite la variabile d’ambiente MATCH_PASSWORD e deve essere uguale per tutti i membri del team. Match utilizza OpenSSL per la crittografia e non memorizza la password in chiaro nel repository.
Domande frequenti
Fastlane è uno strumento Open Source di automazione per app iOS e Android. Automatizza build, test, firma del codice e distribuzione su App Store e Google Play tramite un singolo file di configurazione Fastfile e un set di strumenti integrati.
I principali strumenti Fastlane: scan (test), gym (build iOS), match (certificati), deliver (App Store), pilot (TestFlight), snapshot (screenshot), supply (Google Play) e frameit (cornici per screenshot). Ogni strumento è disponibile come action all’interno di una lane o dalla riga di comando.
Installa la gem fastlane, esegui fastlane init nella radice del progetto. Configura il Fastfile con lanes per build (gym) e test (scan). Configura Match per la gestione dei certificati tramite repository Git. Aggiungi una lane di deploy con pilot o deliver per il caricamento su App Store Connect.
Esegui fastlane init specificando il package name. Usa l’action gradle per eseguire attività Gradle (assembleRelease, testReleaseUnitTest). Configura il Keystore tramite variabili d’ambiente. Usa l’action supply per caricare AAB o APK in Google Play Console sul track desiderato.
Installa la gem fastlane sul server CI/CD e aggiungi il comando fastlane [lane_name] nella fase script della pipeline. Configura le variabili d’ambiente FASTLANE_USER, FASTLANE_PASSWORD e MATCH_PASSWORD nei segreti CI/CD. Usa match readonly in CI per evitare modifiche accidentali ai certificati.
Riepilogo
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.
Leggi anche