Compilare un’app iOS con Capacitor quando lavori su Windows
Capacitor avvolge la tua web app in una shell nativa. Su Windows puoi compilare la web app e l’app Android. L’app iOS richiede Xcode, che gira solo su macOS. Il 19 ottobre 2026 abbiamo testato dove passa quel confine, con Capacitor 8.5.3. Passa più avanti di quanto pensano in molti.
Cosa funziona su Windows
Abbiamo eseguito questi passaggi sul runner Windows Server 2025 di GitHub con Node 22. La documentazione di Capacitor chiede Node 22 o successivo. Ogni passaggio è riuscito.
npm init @capacitor/app@latest capdemo -- --name CapDemo --app-id com.example.capdemo cd capdemo npm install npm run build npm i @capacitor/android @capacitor/ios npx cap add android npx cap add ios npx cap sync ios
Lì ha funzionato anche la build Android di debug con il JDK 21. gradlew.bat assembleDebug ha richiesto 6 minuti e 33 secondi su un runner a freddo. Ha creato un app-debug.apk da 8,2 MB.
La sorpresa è npx cap add ios. Su Windows è girato in meno di un secondo e ha scritto un progetto Xcode completo. Ecco cosa ha stampato:
√ Adding native Xcode project in ios in 47.04ms [info] All Capacitor plugins have a Package.swift file and will be included in Package.swift [info] Writing Package.swift [success] ios platform added!
Swift Package Manager, non CocoaPods
I progetti Capacitor 8 usano Swift Package Manager di default. La documentazione lo consiglia e dice che CocoaPods era il default prima di Capacitor 8. Il nostro nuovo progetto non aveva un Podfile. Aveva ios/App/App.xcodeproj e un pacchetto CapApp-SPM che punta ai tuoi plugin in node_modules.
Ecco perché ora i passaggi iOS funzionano su Windows. Non c’è nessun pod install da eseguire. Se il tuo progetto usa ancora CocoaPods, pod install richiede macOS. Non abbiamo testato un progetto CocoaPods su Windows. Per passare a SPM, la documentazione offre npx cap spm-migration-assistant.
Cosa richiede ancora un Mac
- xcodebuild e Xcode. Capacitor 8 richiede Xcode 26.0 o successivo, e Xcode gira solo su macOS.
- npx cap open ios e npx cap run ios. Entrambi passano il progetto a Xcode o al simulatore.
- Il simulatore iOS. È incluso in Xcode.
- Firma, archivio e upload. Vedi pubblicare senza Mac per quella parte.
Il passaggio da Windows a Mac che abbiamo testato
Abbiamo fatto commit del progetto Windows su git e l’abbiamo spostato su un runner Mac. Il .gitignore della cartella ios esclude i file web copiati e la configurazione generata. Quindi il Mac li ricrea prima che giri Xcode:
npm ci npm run build npx cap sync ios xcodebuild -project ios/App/App.xcodeproj -scheme App \ -configuration Debug -sdk iphonesimulator \ -destination 'generic/platform=iOS Simulator' \ -derivedDataPath build build
La build ha richiesto 36 secondi con Xcode 26.6. Alla prima esecuzione, Xcode ha scaricato capacitor-swift-pm 8.5.3 da GitHub. Poi abbiamo installato l’app nel simulatore iPhone 17 Pro e l’abbiamo aperta. È comparsa la schermata di benvenuto di Capacitor.
xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/App.app xcrun simctl launch booted com.example.capdemo
La pagina iOS di Capacitor dice ancora di aprire App.xcworkspace. Un progetto SPM non ce l’ha, quindi apri invece ios/App/App.xcodeproj.
Anche una build per dispositivo con la firma disattivata è passata, in 17 secondi. Aggiungi CODE_SIGNING_ALLOWED=NO e usa -sdk iphoneos. Per pubblicare, apri il progetto in Xcode, scegli il tuo team in Signing and Capabilities, poi scegli Product, poi Archive.
E Ionic Appflow?
Appflow compila app iOS nel cloud di Ionic, e la sua pagina lo dice ancora. L’11 febbraio 2025 Ionic ha interrotto le nuove vendite di Appflow. Gli utenti attuali mantengono l’accesso fino al 31 dicembre 2027. Se non sei già cliente, prevedi un’altra strada.
Noleggiare il Mac per un solo passaggio
Un pass giornaliero MacRun è un Mac mini M6 dedicato a $15, oppure $59 per una settimana. Sono installati Xcode 27.1 e il simulatore iOS 27.1. Node no. Hai i permessi di amministratore e Homebrew, quindi installi la versione di Node che usi. Ti colleghi via SSH e con la condivisione schermo da Windows. Il Mac viene cancellato quando il pass finisce. La nostra guida al simulatore su Windows mostra com’è lo schermo remoto.
Chi non dovrebbe noleggiare un Mac per questo
Se ti serve una build solo ogni tanto, può farla un runner macOS in hosting. I comandi qui sopra sono girati su GitHub Actions senza un Mac nostro. Codemagic indica il supporto a Ionic e dà ai singoli 500 minuti macOS M2 gratis al mese. Lo dice la sua pagina dei prezzi del 19 ottobre 2026. Se pubblichi ogni settimana, un Mac usato può costare meno nel tempo. Un Mac a noleggio conviene quando ti serve Xcode aperto, per problemi di firma o un bug di un plugin nativo.
Domande frequenti
Posso eseguire npx cap add ios su Windows?
+
Sì, con Capacitor 8 e Swift Package Manager. Nel nostro test di ottobre 2026 ha scritto il progetto Xcode su Windows in meno di un secondo. Ha funzionato anche npx cap sync ios. Per compilare l’app serve comunque un Mac.
Capacitor usa CocoaPods o Swift Package Manager per iOS?
+
I nuovi progetti Capacitor 8 usano Swift Package Manager. Il nostro nuovo progetto aveva un Package.swift e nessun Podfile. La documentazione dice che CocoaPods era il default prima di Capacitor 8 e ora è facoltativo.
Posso compilare un’app iOS con Capacitor su Windows?
+
Non l’app vera e propria. Il passaggio xcodebuild, il simulatore e la firma richiedono Xcode su macOS. Puoi preparare tutto su Windows, fare push su git e compilare su un Mac o su un runner di CI macOS.
Ionic Appflow è ancora disponibile?
+
Ionic ha interrotto le nuove vendite di Appflow l’11 febbraio 2025. Gli utenti Appflow esistenti mantengono l’accesso fino al 31 dicembre 2027, secondo l’annuncio di Ionic.
Posso compilare l’app Android su Windows?
+
Sì. Nel nostro test, npx cap add android e gradlew.bat assembleDebug hanno funzionato su Windows con il JDK 21. La prima build ha richiesto 6 minuti e 33 secondi e ha creato un APK di debug da 8,2 MB.
Quanto dura una build iOS di Capacitor?
+
La nostra app di partenza è stata compilata per il simulatore in 24 a 36 secondi con Xcode 26.6 su un runner macOS di GitHub. Il tempo più lungo includeva il download dei pacchetti Swift. Le app più grandi richiedono di più.