Guida

Compila la tua app iOS da Windows, un framework alla volta

Puoi scrivere un’app Flutter, React Native, Unity, Godot o MAUI su Windows. La build iOS è l’unico passaggio che richiede un Mac. Tutti questi strumenti lasciano l’ultimo tratto a Xcode. Questa pagina elenca cosa eseguire sul Mac per ogni framework. Mostra anche come caricare il risultato.

Cosa richiede un Mac, framework per framework

Ecco cosa dice la documentazione di ogni progetto, letta il 18 ottobre 2026.

  • Flutter: la guida al rilascio iOS dice che Xcode è obbligatorio e che serve un dispositivo con macOS. Il codice Dart e le build Android possono restare su Windows o Linux.
  • React Native: la guida all’App Store fa la build di rilascio in Xcode. Il lavoro in JavaScript e i test Jest girano su qualsiasi sistema.
  • Expo: EAS Build esegue le build iOS su macchine macOS nel cloud di Expo. Quindi potresti non aver mai bisogno di un tuo Mac.
  • Unity: l’editor genera un progetto Xcode, e Xcode compila l’app da lì. Unity dice che una build iOS locale richiede macOS.
  • Godot: la documentazione dice che devi esportare per iOS da un computer con macOS e Xcode installato. Quindi anche l’esportazione si sposta sul Mac.
  • .NET MAUI: Visual Studio su Windows si collega a un Mac via SSH, e il Mac compila e firma l’app.

Due guide precedenti coprono il caso generale. Leggi pubblicare senza un Mac per chiavi API, firma e TestFlight. Leggi Xcode su Windows per schermo e tastiera remoti. Questa pagina si limita ai comandi.

Prima di iniziare: account e firma

  • Ti serve un’iscrizione a pagamento all’Apple Developer Program. Costa 99 USD l’anno.
  • Crea la scheda dell’app in App Store Connect, che funziona da qualsiasi browser.
  • Aggiungi il tuo Account Apple a Xcode sul Mac, poi scegli il team in Signing and Capabilities.
  • Lascia attivo Automatically manage signing. Così Xcode crea per te il certificato e il profilo.

Flutter: flutter build ipa

Installa Flutter sul Mac e clona lì il tuo repository. Poi esegui questo solo comando nella cartella del progetto:

flutter build ipa

La documentazione di Flutter dice che crea un .xcarchive in build/ios/archive e un .ipa in build/ios/ipa. Usa --build-name e --build-number per impostare la versione. Flutter descrive tre modi per caricare il risultato. Puoi trascinare il .ipa nell’app Transporter di Apple sul Mac. Puoi aprire l’archivio in Xcode e cliccare Distribute App. Oppure puoi caricarlo dal terminale con una chiave API di App Store Connect:

xcrun altool --upload-app --type ios -f build/ios/ipa/*.ipa \
  --apiKey your_api_key --apiIssuer your_issuer_id

React Native: archivia in Xcode

La guida di React Native fa il rilascio nella finestra di Xcode. Prima installa i pod, poi apri il workspace:

cd ios
bundle exec pod install
open MyApp.xcworkspace
  • In Product, Scheme, Edit Scheme, imposta la configurazione di build di Run su Release.
  • Imposta il dispositivo su Any iOS Device (arm64), poi scegli Product, poi Archive.
  • Nella finestra dell’archivio, clicca Distribute App, poi App Store Connect, poi Upload.

La build compare poi in App Store Connect sotto TestFlight. Per rilasciare dal terminale, usa xcodebuild archive e -exportArchive, con le opzioni della nostra guida alla pubblicazione. Per il flusso completo da Windows e Linux, leggi build iOS di React Native senza Mac.

Con Expo, puoi fare a meno del Mac per le build. Esegui questo da Windows, e la build gira sui runner macOS di Expo:

eas build --platform ios

Ti serve comunque un Mac per il Simulatore o per il debugger di Xcode.

Unity: build su Windows, archivio sul Mac

In Build Settings, scegli iOS e clicca Build. Unity crea una cartella con un progetto Xcode. L’opzione Run in Xcode compare solo su macOS, quindi su Windows ti fermi qui. Copia la cartella sul Mac via SSH:

scp -r Builds/iOS you@your-mac:~/MyGame-iOS

Sul Mac, apri il .xcodeproj dentro quella cartella. Scegli lo schema Unity-iPhone, cioè il target di avvio che esegue UnityFramework. Imposta il dispositivo su Any iOS Device, poi scegli Product, poi Archive. Distribuiscilo dalla finestra Organizer come qualsiasi altra app iOS.

Un gioco grande crea una cartella grande, quindi il tempo di copia dipende dalla tua velocità di upload. Unity offre anche Build Automation, che compila il gioco nel cloud di Unity.

Godot: esporta sul Mac

L’esportazione iOS di Godot funziona solo su macOS. Installa Godot e i suoi template di esportazione sul Mac, poi apri lì il progetto.

  • Apri Project, poi Export, poi clicca Add e scegli iOS.
  • Compila App Store Team ID e Bundle Identifier. L’esportatore li richiede entrambi.
  • Il Team ID è un codice di 10 caratteri, non il tuo nome come lo mostra Xcode.
  • Clicca Export Project e scegli una cartella vuota per i file.
  • Apri il .xcodeproj che crea, poi scegli Product, poi Archive.

.NET MAUI: abbina Visual Studio al Mac

La funzione Pair to Mac di Microsoft esegue le build sul Mac via SSH, quindi Remote Login deve essere attivo. Xcode va installato a mano e aperto una volta. Microsoft chiede anche Mono, e Rosetta su Apple silicon. In Visual Studio, apri Tools, iOS, Pair to Mac. Se il Mac non compare, aggiungilo con il suo indirizzo.

Puoi anche pubblicare dalla riga di comando di Windows. Questo è l’esempio di Microsoft per Visual Studio 2026, senza la password:

dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true \
  -p:RuntimeIdentifier=ios-arm64 \
  -p:CodesignKey="Apple Distribution: John Smith (AY2GDE9QM7)" \
  -p:CodesignProvision="MyMauiApp" \
  -p:ServerAddress={macOS build host IP address} \
  -p:ServerUser={macOS username} -p:TcpPort=58181 \
  -p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/maui/PairToMac/SDKs/dotnet/

Sostituisci net8.0-ios con il tuo target framework. Senza l’opzione della password, Pair to Mac usa le chiavi SSH salvate alla prima connessione. Il .ipa firmato finisce in bin\Release sul tuo PC. Microsoft indica Transporter per l’upload.

Upload: cosa elenca Apple oggi

La pagina di upload di Apple nomina quattro strumenti: Xcode, Swift Playground, altool e Transporter. Dice che Transporter e altool supportano ogni tipo di target, e non dà una data di fine per altool. Transporter è un’app per macOS, ma la sua versione da riga di comando gira anche su Windows, con alcuni limiti. La nostra guida alla pubblicazione spiega questi limiti.

Build nel cloud o Mac a noleggio?

Parti da ciò che ti serve. Se ti serve un .ipa solo ogni tanto, una build nel cloud può bastare. Codemagic, EAS Build e i runner macOS di GitHub Actions compilano tutti app iOS. La nostra guida a GitHub Actions mostra una configurazione.

Un Mac a noleggio serve per altri lavori. Magari ti serve il Simulatore per controllare una schermata, o il debugger di Xcode per un crash. Un errore di firma è più facile da risolvere nella finestra di Xcode. E alcuni team vogliono seguire ogni passaggio di un rilascio mentre succede.

Il giorno del rilascio su un Mac da $15

Molte app escono solo poche volte l’anno. Per questo, un pass giornaliero MacRun costa $15, pagamento unico senza rinnovo. Una settimana costa $59, e lascia tempo per una correzione dopo la revisione. Se pubblichi ogni poche settimane, i piani mensili partono da $139.

  • Hai un Mac mini dedicato, non condiviso, con diritti di amministratore.
  • Xcode 27.1 è il predefinito, e Xcode 26.6 è installato per i progetti più vecchi.
  • Il simulatore iOS 27.1, con iPhone Duo, è già installato.
  • Il Mac è pronto in meno di 5 minuti.
  • SSH e condivisione schermo passano su una rete Tailscale privata, da Windows o Linux.

Il Mac viene cancellato quando il pass finisce. Prima di allora, fai push del codice e copia altrove i file di firma.

Domande frequenti

Posso creare un’app iOS su Windows?

+

Puoi scriverla su Windows. La build iOS richiede Xcode, che gira solo su macOS. Per quel passaggio usa un Mac a noleggio, un runner CI o un servizio di build nel cloud.

Flutter può compilare per iOS su Windows?

+

No. La guida al rilascio iOS di Flutter dice che per questo passaggio serve un dispositivo con macOS. Esegui flutter build ipa su un Mac, poi carica il .ipa con Transporter, altool o Xcode.

Posso compilare un’app React Native per iOS senza Mac?

+

Con Expo sì, perché EAS Build esegue le build iOS su macchine macOS nel cloud di Expo. Senza Expo, ti serve un Mac per archiviare l’app in Xcode.

Unity può compilare per iOS su Windows?

+

Unity genera il progetto Xcode. Poi Xcode compila l’app, e Xcode gira solo su macOS. Copia il progetto su un Mac e archivialo lì, oppure usa Unity Build Automation.

Come carico un’app iOS da Windows?

+

Lo strumento da riga di comando Transporter di Apple gira su Windows. Però gli serve un file che Xcode esporta con la build, quindi la build stessa arriva da un Mac.

Guide correlate