Guía

Compila una app de Capacitor para iOS cuando trabajas en Windows

Capacitor envuelve tu app web en una capa nativa. En Windows puedes compilar la app web y la app de Android. La app de iOS necesita Xcode, que solo funciona en macOS. Probamos dónde cae ese límite con Capacitor 8.5.3 el 19 de octubre de 2026. Cae más tarde de lo que piensa la mayoría.

Qué funciona en Windows

Ejecutamos estos pasos en el runner Windows Server 2025 de GitHub con Node 22. La documentación de Capacitor pide Node 22 o posterior. Todos los pasos funcionaron.

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

La build debug de Android también funcionó ahí con JDK 21. gradlew.bat assembleDebug tardó 6 minutos y 33 segundos en un runner en frío. Creó un app-debug.apk de 8.2 MB.

La sorpresa es npx cap add ios. Se ejecutó en Windows en menos de un segundo y generó un proyecto de Xcode completo. Esto es lo que mostró:

√ 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, no CocoaPods

Los proyectos de Capacitor 8 usan Swift Package Manager por defecto. La documentación lo recomienda y dice que CocoaPods era el predeterminado antes de Capacitor 8. Nuestro proyecto nuevo no tenía Podfile. Tenía ios/App/App.xcodeproj y un paquete CapApp-SPM que apunta a tus plugins en node_modules.

Por eso los pasos de iOS ahora funcionan en Windows. No hay que ejecutar pod install. Si tu proyecto aún usa CocoaPods, pod install necesita macOS. No probamos un proyecto con CocoaPods en Windows. Para pasar a SPM, la documentación ofrece npx cap spm-migration-assistant.

Qué sigue necesitando un Mac

  • xcodebuild y Xcode. Capacitor 8 necesita Xcode 26.0 o posterior, y Xcode solo funciona en macOS.
  • npx cap open ios y npx cap run ios. Los dos pasan el proyecto a Xcode o al simulador.
  • El simulador de iOS. Viene dentro de Xcode.
  • Firma, archivo y subida. Consulta publicar sin Mac para esa parte.

El paso de Windows a Mac que probamos

Hicimos commit del proyecto de Windows en git y lo pasamos a un runner de Mac. El propio .gitignore de la carpeta ios deja fuera los archivos web copiados y la configuración generada. Así que el Mac los regenera antes de ejecutar 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 tardó 36 segundos con Xcode 26.6. En la primera ejecución, Xcode descargó capacitor-swift-pm 8.5.3 de GitHub. Después instalamos la app en el simulador del iPhone 17 Pro y la abrimos. Apareció la pantalla de bienvenida de Capacitor.

xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/App.app
xcrun simctl launch booted com.example.capdemo

La página de iOS de Capacitor aún dice que abras App.xcworkspace. Un proyecto SPM no lo tiene, así que abre ios/App/App.xcodeproj.

Una build para dispositivo con la firma desactivada también funcionó, en 17 segundos. Añade CODE_SIGNING_ALLOWED=NO y usa -sdk iphoneos. Para publicar, abre el proyecto en Xcode, elige tu equipo en Signing and Capabilities y luego Product, Archive.

¿Y Ionic Appflow?

Appflow compila apps de iOS en la nube de Ionic, y su página aún lo dice. El 11 de febrero de 2025, Ionic dejó de vender Appflow a clientes nuevos. Los usuarios actuales mantienen el acceso hasta el 31 de diciembre de 2027. Si no eres ya cliente, busca otro camino.

Alquilar el Mac para un solo paso

Un pase de un día de MacRun es un Mac mini M6 dedicado por $15, o $59 por una semana. Xcode 27.1 y el simulador de iOS 27.1 están instalados. Node no. Tienes acceso admin y Homebrew, así que instalas la versión de Node que usas. Te conectas por SSH y con la pantalla compartida desde Windows. El Mac se borra cuando termina el pase. Nuestra guía del simulador en Windows muestra cómo es la pantalla remota.

Quién no debería alquilar un Mac para esto

Si solo necesitas una build de vez en cuando, un runner de macOS alojado puede hacerla. Los comandos de arriba funcionaron en GitHub Actions sin un Mac propio. Codemagic indica que admite Ionic y da a los particulares 500 minutos gratis de macOS M2 al mes. Así lo dice su página de precios del 19 de octubre de 2026. Si publicas cada semana, un Mac usado puede salir más barato con el tiempo. Un Mac alquilado encaja cuando necesitas Xcode abierto, por problemas de firma o un fallo de un plugin nativo.

Preguntas frecuentes

¿Puedo ejecutar npx cap add ios en Windows?

+

Sí, con Capacitor 8 y Swift Package Manager. En nuestra prueba de octubre de 2026 generó el proyecto de Xcode en Windows en menos de un segundo. npx cap sync ios también funcionó. Compilar la app sigue necesitando un Mac.

¿Capacitor usa CocoaPods o Swift Package Manager para iOS?

+

Los proyectos nuevos de Capacitor 8 usan Swift Package Manager. Nuestro proyecto nuevo tenía un Package.swift y ningún Podfile. La documentación dice que CocoaPods era el predeterminado antes de Capacitor 8 y ahora es opcional.

¿Puedo compilar una app de Capacitor para iOS en Windows?

+

La app en sí, no. El paso de xcodebuild, el simulador y la firma necesitan Xcode en macOS. Puedes prepararlo todo en Windows, subirlo a git y compilar en un Mac o en un runner de CI con macOS.

¿Sigue disponible Ionic Appflow?

+

Ionic dejó de vender Appflow a clientes nuevos el 11 de febrero de 2025. Los usuarios actuales de Appflow mantienen el acceso hasta el 31 de diciembre de 2027, según el anuncio de Ionic.

¿Puedo compilar la app de Android en Windows?

+

Sí. En nuestra prueba, npx cap add android y gradlew.bat assembleDebug funcionaron en Windows con JDK 21. La primera build tardó 6 minutos y 33 segundos y creó un APK debug de 8.2 MB.

¿Cuánto tarda una build de Capacitor para iOS?

+

Nuestra app de inicio compiló para el simulador en 24 a 36 segundos con Xcode 26.6 en un runner de macOS de GitHub. El tiempo más largo incluía descargar paquetes de Swift. Las apps más grandes tardan más.

Guías relacionadas