Salta al contenuto principale

Sviluppo con Capacitor su Windows: la guida completa al setup

Configura Capacitor su Windows 11: Node o Bun, JDK 21, Android Studio ed emulatore, debug USB, fix per PowerShell, problemi di path lunghi e build iOS senza Mac con Capgo Build.

Sviluppo con Capacitor su Windows: la guida completa al setup

La maggior parte della documentazione Capacitor presuppone l'uso di un Mac. Se sviluppi su Windows, il web layer e Android funzionano allo stesso modo, con qualche intoppo specifico legato a PowerShell, lunghezza dei path ed emulatore. iOS è l'unico elemento che Windows non può compilare: la soluzione è una build macOS in cloud.

Questa guida copre il setup completo su Windows 11, da una macchina vuota fino alla build Android su dispositivo e alla build iOS in TestFlight tramite Build Capgo.

Cosa funziona su Windows e cosa no

Task Windows
Sviluppo web, Vite, tooling per framework Sì
cap add android, cap sync, build Gradle Sì
emulatore Android Sì, con Hyper-V o WHPX
dispositivo Android fisico via USB Sì
Remote debugging con Chrome DevTools Sì
cap add ios, cap sync ios (genera e copia) Sì, con un avviso di CocoaPods
Compila, firma e archivia iOS No, serve macOS. Usa Capgo Build
Simulatore iOS No
Safari Web Inspector per iOS WebView No

1) Installa Node o Bun

Usa winget da PowerShell:

winget install OpenJS.NodeJS.LTS
# Or Bun
winget install Oven-sh.Bun

Apri un nuovo terminale e conferma:

node --version
bun --version

Correggi l'execution policy di PowerShell

bunx cap, npx cap e la maggior parte degli shim CLI sono .ps1 script. Un Windows appena installato li blocca con running scripts is disabled on this system. Consenti gli script locali una volta:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

2) Installa JDK 21

Capacitor 7 e 8 richiedono JDK 21. Android Studio include il proprio JBR, ma un JDK di sistema evita sorprese quando esegui Gradle da terminale.

winget install Microsoft.OpenJDK.21

Imposta JAVA_HOME per il tuo utente. Da PowerShell:

[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Microsoft\jdk-21.0.8.9-hotspot", "User")

Adatta la cartella alla versione installata. Poi riavvia il terminale.

3) Installa Android Studio e il SDK

winget install Google.AndroidStudio

Avvia Android Studio e lascia che la procedura guidata installi SDK per C:\Users\<you>\AppData\Local\Android\Sdk. Poi imposta le variabili d'ambiente che Gradle e Capacitor cercano:

$sdk = "$env:LOCALAPPDATA\Android\Sdk"
[Environment]::SetEnvironmentVariable("ANDROID_HOME", $sdk, "User")
$path = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$path;$sdk\platform-tools;$sdk\emulator", "User")

Apri il SDK Manager di Android Studio e installa la piattaforma corrispondente alla tua versione Capacitor: API 36 per Capacitor 8, API 35 per Capacitor 7.

4) Velocizzare l'emulatore

L'emulatore richiede la virtualizzazione hardware. Su Windows 11 l'emulatore usa la Windows Hypervisor Platform. Abilitala:

Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform

Riavvia. Se il Device Manager di Android Studio segnala ancora problemi di accelerazione, verifica che la virtualizzazione sia attiva nel BIOS o UEFI e che l'Isolamento core (Integrità della memoria) non la blocchi su CPU più vecchie.

Crea un dispositivo in Device Manager, oppure da terminale:

sdkmanager "system-images;android-36;google_apis;x86_64"
avdmanager create avd -n pixel8 -k "system-images;android-36;google_apis;x86_64" -d pixel_8
emulator -avd pixel8

5) Debug USB su Windows

Abilita le Opzioni sviluppatore e il debug USB sul telefono. La maggior parte dei telefoni non richiede più driver, ma se adb devices rimane vuoto, installa il driver USB di Google tramite il SDK Manager (scheda SDK Tools) o il driver del produttore per i dispositivi Samsung.

adb devices

Accetta il prompt dell'impronta digitale sul telefono la prima volta.

6) Correzioni specifiche per progetti su Windows

Tre impostazioni per risparmiare ore su Windows:

Percorsi lunghi. Gradle e node_modules possono superare il limite di 260 caratteri. Abilita i percorsi lunghi così:

git config --global core.longpaths true
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

Il secondo comando richiede PowerShell con privilegi di amministratore.

Esclusioni di Defender. La scansione in tempo reale di node_modules, la cache di Gradle e la cartella SDK di Android rallentano i build. Escludi queste cartelle da Windows Security o tramite PowerShell come amministratore:

Add-MpPreference -ExclusionPath "$env:USERPROFILE\.gradle"
Add-MpPreference -ExclusionPath "$env:LOCALAPPDATA\Android\Sdk"
Add-MpPreference -ExclusionPath "C:\dev"

Mantieni i progetti in un percorso breve come C:\dev\my-app, non in Documenti sincronizzati con OneDrive.

Fine riga. Quella di Gradle gradlew lo shell script deve mantenere gli ending LF o la CI su Linux si romperà. Aggiungi un .gitattributes:

*.sh text eol=lf
gradlew text eol=lf

7) Crea il progetto Capacitor

bun create vite@latest my-app
cd my-app
bun install
bun add @capacitor/core @capacitor/android @capacitor/ios
bun add -d @capacitor/cli
bunx cap init
bun run build
bunx cap add android
bunx cap add ios

cap add ios su Windows avvisa che CocoaPods non è disponibile. È normale; la ios/ cartella viene comunque generata e committata, e la cloud build viene eseguita pod install later.

Esegui sull'emulatore o su un dispositivo USB:

bunx cap run android

Debugga la WebView in Chrome su chrome://inspect.

8) Build di rilascio Android

keytool -genkeypair -v -keystore release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias release
cd android
.\gradlew.bat bundleRelease

L'AAB si trova in android\app\build\outputs\bundle\release\. Per un team, è meglio salvare il keystore una volta sola in Capgo e buildare in cloud; vedi Capgo Build per Android.

9) iOS da Windows con Capgo Build

Xcode è disponibile solo su macOS, quindi la compilazione iOS avviene sull'infrastruttura Mac di Capgo. Dal tuo terminale Windows:

bun run build
bunx cap sync ios

bunx @capgo/cli@latest login
bunx @capgo/cli@latest build init --platform ios
bunx @capgo/cli@latest build request com.example.app --platform ios --build-mode release

build init raccoglie i tuoi dati di firma. Su Windows, la chiave API di App Store Connect va creata manualmente nel portale Apple, seguendo il Guida build iOS. Il certificato di distribuzione non richiede Keychain Access: crea il CSR e .p12 con OpenSSL (winget install ShiningLight.OpenSSL.Light) o quella basata sul browser generatore di certificati iOS via browser. La guida passo-passo è in Build di un'app iOS da Windows con Capacitor e Capgo Build.

Al termine della build, Capgo può caricarla su TestFlight, così potrai installarla su un iPhone reale dopo pochi minuti.

10) Distribuisci modifiche web senza rebuildare

Con entrambi gli store attivi, usa Live Updates di Capgo per modifiche a JavaScript, HTML e CSS:

bunx @capgo/cli@latest init
bun run build
bunx @capgo/cli@latest bundle upload --channel production

I Native rebuild sono necessari solo per plugin, permessi e aggiornamenti Capacitor.

Problemi comuni su Windows

  • running scripts is disabled on this system: execution policy. Vedi il punto 1.
  • SDK location not found: ANDROID_HOME non impostata per il terminale che esegue Gradle. Riavvia il terminale dopo l'impostazione, o crea android\local.properties con sdk.dir=C\:\\Users\\you\\AppData\\Local\\Android\\Sdk.
  • Filename too long da Git o Gradle: abilita i percorsi lunghi (long paths), punto 6.
  • Emulatore bloccato all'avvio: hypervisor non abilitato o virtualizzazione BIOS disattivata.
  • gradlew: bad interpreter in CI: gradlew è stato committato con finali CRLF. Correggi con il .gitattributes sopra e rinormalizza.
  • EPERM o file bloccati durante bun install: Defender o un daemon Gradle attivo stanno trattenendo i file. Ferma il daemon con .\gradlew.bat --stop e aggiungi le esclusioni.

Riassunto

Windows copre Android e il web layer end-to-end. Per iOS, genera il progetto localmente, sincronizza e passa la cartella ios/ a Capgo Build. Aggiungi Live Updates e il tuo team Windows rilascerà su entrambi gli store senza un singolo Mac in ufficio. Se preferisci una shell Linux su Windows, leggi la guida su come usare WSL2 per lo sviluppo con Capacitor.

Live updates per le app Capacitor

Quando un bug nel web-layer è live, rilascia la fix tramite Capgo invece di aspettare giorni l'approvazione degli store. Gli utenti ricevono l'update in background, mentre le modifiche native restano nel normale processo di review.

Ultimi articoli dal blog

Capgo ti offre gli insight migliori che ti servono per creare un'app mobile davvero professionale.