Publica una app de iOS en la App Store sin tener un Mac
Puedes publicar una app de iOS sin tener un Mac. No puedes hacerlo sin macOS. Compilar y firmar la app necesita Xcode. Casi todo lo demás pasa en un navegador o en tu iPhone. Un Mac alquilado o un runner de CI cubre el único paso que necesita macOS.
Qué exige Apple en octubre de 2026
- Una membresía de pago. El Apple Developer Program cuesta 99 USD por año de membresía, según la página de alta de Apple. Las organizaciones sin ánimo de lucro, los centros educativos y los organismos públicos pueden pedir la exención de la cuota.
- Un Xcode reciente. Desde el 28 de abril de 2026, las subidas deben compilarse con Xcode 26 o posterior y un SDK de iOS 26. Lo dice la página de próximos requisitos de Apple.
- Un macOS reciente. Xcode 26.6 necesita macOS Tahoe 26.2 o posterior, según los requisitos del sistema de Xcode de Apple.
Así que el build se hace en un Mac. La única pregunta es de quién es ese Mac.
Qué puedes hacer desde Windows o Linux
- Darte de alta en el programa en la web o en la app Apple Developer.
- Crear la ficha de la app en App Store Connect.
- Crear una clave de API de App Store Connect (pasos abajo).
- Añadir testers, escribir la ficha de la tienda y enviar a revisión.
- Subir un build terminado. La herramienta de línea de comandos Transporter de Apple es compatible con Windows 11 y Red Hat Enterprise Linux. En esos sistemas necesita el AppStoreInfo.plist que Xcode genera al exportar. Así que la subida puede hacerse desde tu PC, pero el archivo sigue saliendo de un Mac.
Crea primero una clave de API
Una clave de API permite que las herramientas del Mac hablen con Apple. No hace falta contraseña ni verificación en dos pasos. Estos son los pasos de Apple para una clave de equipo:
- En App Store Connect, abre Usuarios y acceso y luego Integraciones.
- Elige App Store Connect API y luego la pestaña Team Keys.
- Haz clic en Generate API Key, ponle nombre, elige un rol y genérala.
- Descarga el archivo .p8. Apple solo te deja descargarlo una vez.
Necesitas el rol Admin para crear claves de equipo. Apunta el Key ID y el Issuer ID que aparecen en esa página. No metas el .p8 en tu repositorio.
Firmar sin un llavero propio
Para firmar hacen falta un certificado de distribución y un perfil de aprovisionamiento. Hay dos formas de tenerlos en un Mac alquilado.
Firma automática. xcodebuild acepta la clave de API. Con la opción allowProvisioningUpdates, su texto de ayuda dice que crea y actualiza perfiles, app IDs y certificados para los targets con firma automática. Apple también ofrece certificados de distribución gestionados en la nube. Los guarda Apple, así que no queda ninguna clave privada en la máquina alquilada.
Firma manual. Crea una solicitud de firma de certificado con Acceso a Llaveros en el Mac alquilado. Después crea un certificado Apple Distribution y un perfil App Store en Certificates, Identifiers and Profiles. Borra el llavero antes de devolver el Mac.
Compila y sube desde el Mac en la nube
Archiva la app. Sustituye los nombres, el key ID y el issuer ID por los tuyos.
xcodebuild -workspace MyApp.xcworkspace -scheme MyApp \ -configuration Release -destination 'generic/platform=iOS' \ -archivePath build/MyApp.xcarchive archive \ -allowProvisioningUpdates \ -authenticationKeyPath ~/private_keys/AuthKey_ABC123DEF4.p8 \ -authenticationKeyID ABC123DEF4 \ -authenticationKeyIssuerID YOUR-ISSUER-ID
Después expórtala. Con destination en upload, la exportación envía el build directamente a App Store Connect. El método app-store-connect sustituyó al antiguo valor app-store.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>method</key><string>app-store-connect</string> <key>destination</key><string>upload</string> <key>signingStyle</key><string>automatic</string> <key>teamID</key><string>YOURTEAMID</string> </dict> </plist>
xcodebuild -exportArchive -archivePath build/MyApp.xcarchive \ -exportOptionsPlist ExportOptions.plist -exportPath build/export \ -allowProvisioningUpdates \ -authenticationKeyPath ~/private_keys/AuthKey_ABC123DEF4.p8 \ -authenticationKeyID ABC123DEF4 \ -authenticationKeyIssuerID YOUR-ISSUER-ID
¿Prefieres un paso de subida aparte? Pon destination en export y luego usa altool. Encuentra el archivo de la clave en ~/private_keys por su ID.
xcrun altool --upload-package build/export/MyApp.ipa \ --api-key ABC123DEF4 --api-issuer YOUR-ISSUER-ID
Con fastlane puedes hacer lo mismo con dos acciones de su documentación: app_store_connect_api_key carga la clave y pilot sube a TestFlight.
Comprobamos cada opción de arriba con la ayuda de xcodebuild y altool en Xcode 26.6. No hemos hecho una subida firmada con estas líneas exactas. Los detalles dependen de cómo firme tu proyecto.
Números de versión y de build
Apple asocia cada subida a tu app por su bundle ID y su número de versión. La cadena de build identifica cada build, así que debe ser única. Sube el número de build en cada subida. En CI, el número de ejecución es una fuente práctica para ello. Reserva el número de versión para lo que ven los usuarios en la tienda.
TestFlight en tu iPhone
Apple procesa cada subida y te avisa por email cuando está lista. El resto pasa en App Store Connect y en el móvil. Según la descripción general de TestFlight de Apple:
- Hasta 100 testers internos de tu equipo de App Store Connect.
- Hasta 10.000 testers externos por email o enlace público.
- El primer build para testers externos pasa por App Review.
- Cada build se puede probar durante 90 días como máximo.
Los testers instalan la app gratuita TestFlight y aceptan la invitación. Nada de esto necesita un Mac. Las capturas para la tienda son fáciles de hacer en el simulador del Mac alquilado.
Quién no debería alquilar un Mac para esto
Con Expo, EAS Build y EAS Submit hacen el build y la subida en la nube de Expo. Si publicas dos veces al año, un runner de CI alojado cuesta unos centavos por build. Lee CI/CD de iOS con GitHub Actions para esa configuración. MacRun no ofrece firma de código gestionada. Los certificados y las claves son tuyos.
Un Mac alquilado encaja cuando publicas a menudo. También encaja cuando necesitas la pantalla de Xcode para arreglar la firma a mano. Nuestros planes M6 están en la página de precios.
Preguntas frecuentes
¿Se puede publicar una app de iOS sin Mac?
+
Sí, si tienes acceso a macOS en algún sitio. El build y la firma necesitan Xcode en un Mac, que puede ser alquilado o en la nube. El alta, App Store Connect, TestFlight y la revisión funcionan desde un navegador o un iPhone.
¿Puedo subir un .ipa a App Store Connect desde Windows?
+
La herramienta de línea de comandos Transporter de Apple es compatible con Windows 11 y Red Hat Enterprise Linux. En esos sistemas necesita el AppStoreInfo.plist que Xcode exporta con el build. Así que el .ipa se sigue compilando en un Mac.
¿Qué Xcode necesito para subir apps en 2026?
+
Desde el 28 de abril de 2026, Apple exige que las apps subidas a App Store Connect se compilen con Xcode 26 o posterior y un SDK de iOS 26. Xcode 26.6 funciona en macOS Tahoe 26.2 o posterior.
¿Cuánto cuesta publicar en la App Store?
+
El Apple Developer Program cuesta 99 USD por año de membresía. Hay exenciones de la cuota para organizaciones sin ánimo de lucro, centros educativos y organismos públicos que cumplan los requisitos. El tiempo de Mac para compilar va aparte, desde unos centavos por build en CI alojado hasta un alquiler mensual.