Guía

Compila tu app de iOS desde Windows, framework por framework

Puedes escribir una app de Flutter, React Native, Unity, Godot o MAUI en Windows. La compilación para iOS es el único paso que necesita un Mac. Todas estas herramientas dejan el último tramo a Xcode. Esta página explica qué ejecutar en el Mac con cada framework. También muestra cómo subir el resultado.

Qué necesita un Mac, según el framework

Esto es lo que dice la documentación de cada proyecto. La leímos el 18 de octubre de 2026.

  • Flutter: la guía de publicación para iOS dice que Xcode es obligatorio y que debes usar un equipo con macOS. Tu código Dart y tus builds de Android pueden quedarse en Windows o Linux.
  • React Native: la guía de la App Store hace la build de release en Xcode. El trabajo en JavaScript y los tests de Jest funcionan en cualquier sistema.
  • Expo: EAS Build compila para iOS en máquinas macOS de la nube de Expo. Puede que nunca necesites un Mac propio.
  • Unity: el editor genera un proyecto de Xcode, y Xcode compila la app a partir de él. Unity dice que una build local de iOS necesita macOS.
  • Godot: la documentación dice que debes exportar para iOS desde un ordenador con macOS y Xcode instalado. Así que incluso la exportación pasa al Mac.
  • .NET MAUI: Visual Studio en Windows se conecta a un Mac por SSH, y el Mac compila y firma la app.

Dos guías anteriores cubren el caso general. Lee publicar sin Mac para las claves de API, la firma y TestFlight. Lee Xcode en Windows para la pantalla y el teclado remotos. Esta página se centra en los comandos.

Antes de empezar: cuenta y firma

  • Necesitas una membresía de pago del Apple Developer Program. Cuesta 99 USD al año.
  • Crea la ficha de la app en App Store Connect. Funciona desde cualquier navegador.
  • Añade tu cuenta de Apple a Xcode en el Mac. Luego elige tu equipo en Signing and Capabilities.
  • Deja activado Automatically manage signing. Así Xcode crea el certificado y el perfil por ti.

Flutter: flutter build ipa

Instala Flutter en el Mac y clona ahí tu repositorio. Luego ejecuta este único comando en la carpeta del proyecto:

flutter build ipa

La documentación de Flutter dice que esto genera un .xcarchive en build/ios/archive y un .ipa en build/ios/ipa. Usa --build-name y --build-number para fijar la versión. Flutter documenta tres formas de subir el resultado. Puedes arrastrar el .ipa a la app Transporter de Apple en el Mac. Puedes abrir el archivo en Xcode y pulsar Distribute App. O puedes subirlo desde la terminal con una clave de API de App Store Connect:

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

React Native: archivar en Xcode

La guía de React Native hace la release en la ventana de Xcode. Instala primero los pods y luego abre el workspace:

cd ios
bundle exec pod install
open MyApp.xcworkspace
  • En Product, Scheme, Edit Scheme, pon la configuración de build de Run en Release.
  • Elige el dispositivo Any iOS Device (arm64) y luego Product, Archive.
  • En la ventana del archivo, pulsa Distribute App, luego App Store Connect y luego Upload.

La build aparece después en App Store Connect, en TestFlight. Para publicar desde la terminal, usa xcodebuild archive y -exportArchive con las opciones de nuestra guía de publicación. Para el flujo completo en Windows y Linux, mira builds de iOS con React Native sin Mac.

Con Expo, puedes compilar sin Mac. Ejecuta esto desde Windows, y la build se hace en los runners macOS de Expo:

eas build --platform ios

Sigues necesitando un Mac si quieres el simulador o el depurador de Xcode.

Unity: compila en Windows, archiva en el Mac

En Build Settings, elige iOS y pulsa Build. Unity genera una carpeta con un proyecto de Xcode. La opción Run in Xcode solo aparece en macOS, así que en Windows te quedas ahí. Copia la carpeta al Mac por SSH:

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

En el Mac, abre el .xcodeproj de esa carpeta. Elige el scheme Unity-iPhone. Es el target lanzador que ejecuta UnityFramework. Pon el dispositivo en Any iOS Device y luego elige Product, Archive. Distribúyelo desde la ventana Organizer como cualquier otra app de iOS.

Un juego grande genera una carpeta grande. El tiempo de copia depende de tu velocidad de subida. Unity también ofrece Build Automation, que compila el juego en la nube de Unity.

Godot: exporta en el Mac

La exportación de Godot para iOS solo funciona en macOS. Instala Godot y sus plantillas de exportación en el Mac. Luego abre ahí tu proyecto.

  • Abre Project, luego Export, pulsa Add y elige iOS.
  • Rellena App Store Team ID y Bundle Identifier. El exportador exige los dos.
  • El Team ID es un código de 10 caracteres, no tu nombre tal como lo muestra Xcode.
  • Pulsa Export Project y elige una carpeta vacía para los archivos.
  • Abre el .xcodeproj que genera y elige Product, Archive.

.NET MAUI: empareja Visual Studio con el Mac

La función Pair to Mac de Microsoft hace las builds en el Mac por SSH, así que Remote Login debe estar activado. Hay que instalar Xcode a mano y abrirlo una vez. Microsoft también pide Mono, y Rosetta en Apple silicon. En Visual Studio, abre Tools, iOS, Pair to Mac. Si el Mac no aparece, añádelo por su dirección.

También puedes publicar desde la línea de comandos de Windows. Este es el ejemplo de Microsoft para Visual Studio 2026, sin la contraseña:

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/

Cambia net8.0-ios por tu propio target framework. Sin la opción de contraseña, Pair to Mac usa las claves SSH que guardó en la primera conexión. El .ipa firmado queda en bin\Release en tu PC. Microsoft recomienda Transporter para subirlo.

Subir la app: lo que indica Apple hoy

La página de subida de Apple nombra cuatro herramientas: Xcode, Swift Playground, altool y Transporter. Dice que Transporter y altool admiten todos los tipos de target, y no da fecha de retirada para altool. Transporter es una app de macOS, pero su versión de línea de comandos también funciona en Windows con algunos límites. Nuestra guía de publicación explica esos límites.

¿Builds en la nube o un Mac alquilado?

Empieza por lo que necesitas. Si solo necesitas un .ipa de vez en cuando, una build en la nube puede bastar. Codemagic, EAS Build y los runners macOS de GitHub Actions compilan apps de iOS. Nuestra guía de GitHub Actions muestra una configuración.

Un Mac alquilado sirve para otras tareas. Puede que necesites el simulador para revisar una pantalla, o el depurador de Xcode para un crash. Un error de firma es más fácil de arreglar en la ventana de Xcode. Y algunos equipos quieren ver cada paso de una release en directo.

El día del lanzamiento con un Mac de $15

Muchas apps solo publican unas pocas veces al año. Para eso, un pase de un día de MacRun cuesta $15, en un solo pago y sin renovación. Una semana cuesta $59. Así tienes tiempo para un arreglo después de la revisión. Si publicas cada pocas semanas, los planes mensuales empiezan en $139.

  • Tienes un Mac mini dedicado, no compartido, con permisos de administrador.
  • Xcode 27.1 es el predeterminado, y Xcode 26.6 está instalado para proyectos antiguos.
  • El simulador de iOS 27.1, con iPhone Duo incluido, ya está instalado.
  • El Mac está listo en menos de 5 minutos.
  • SSH y la pantalla compartida van por una red privada de Tailscale desde Windows o Linux.

El Mac se borra cuando termina el pase. Sube tu código y copia tus archivos de firma antes.

Preguntas frecuentes

¿Puedo compilar una app de iOS en Windows?

+

Puedes escribirla en Windows. La build de iOS necesita Xcode, que solo funciona en macOS. Para ese paso usa un Mac alquilado, un runner de CI o un servicio de builds en la nube.

¿Flutter puede compilar para iOS en Windows?

+

No. La guía de publicación de Flutter para iOS dice que este paso necesita un equipo con macOS. Ejecuta flutter build ipa en un Mac y luego sube el .ipa con Transporter, altool o Xcode.

¿Puedo compilar una app de iOS con React Native sin Mac?

+

Con Expo, sí, porque EAS Build compila para iOS en máquinas macOS de la nube de Expo. Sin Expo, necesitas un Mac para archivar la app en Xcode.

¿Unity puede compilar para iOS en Windows?

+

Unity genera el proyecto de Xcode. Después Xcode compila la app, y Xcode solo funciona en macOS. Copia el proyecto a un Mac y archívalo ahí, o usa Unity Build Automation.

¿Cómo subo una app de iOS desde Windows?

+

La herramienta de línea de comandos Transporter de Apple funciona en Windows. Aun así necesita un archivo que Xcode exporta con la build, así que la build sale de un Mac.

Guías relacionadas