Hacer una aplicación iOS tradicionalmente significa una cosa: necesitas Xcode, y Xcode significa macOS. Ese constraint es incómodo si todo tu equipo está en Windows o Linux, o si simplemente no quieres mantener una máquina de compilación de Mac.
La combinación de Capacitor (para generar el proyecto nativo de iOS) y Capgo Construcción (para compilar y firmarla en la nube) te permite realizar compilaciones de iOS y envíos a TestFlight desde una estación de trabajo de Windows.
Esta guía muestra un flujo de trabajo pragmático que funciona bien en equipos:
- Desarrolla en Windows como un proyecto web normal.
- Mantén
ios/en tu repositorio (para que el estado nativo sea reproducible). - Ejecuta
cap synclocalmente (para que tu compilación web se copie en el proyecto de iOS). - Desencadena una compilación de iOS en la nube con Capgo Construcción.
¿Qué se construye realmente en dónde?
Hay dos compilaciones separadas en una aplicación Capacitor:
- Compilación web (su tu JS/HTML/CSS): lo haces localmente en Windows.
- Compilación nativa (archivo de Xcode, firmado, subir): Capgo Compila esto en hardware Mac en la nube.
Esta separación es la clave: Capgo Compila el proyecto nativo, pero espera que tus activos web ya estén sincronizados en ios/.
Requisitos previos
- Una aplicación Capacitor funcionando (cualquier marco de trabajo está bien).
- Una cuenta de desarrollador de Apple.
- Acceso a App Store Connect para la aplicación que deseas subir (para TestFlight/Submisión en App Store).
- Tus credenciales de Capgo y API (
CAPGO_TOKEN).
1) Crea o Prepara Tu Aplicación Capacitor (Windows)
Si ya tienes una aplicación web, omite los pasos Capacitor.
Ejemplo con Vite:
bun create vite@latest my-app
cd my-app
bun install
Deben producirse activos estáticos (para Vite esto es dist/ por defecto):
bun run build
2) Agregue Capacitor y la plataforma iOS
Instale Capacitor:
bun add @capacitor/core @capacitor/ios
bun add -d @capacitor/cli
Inicialice y cree la carpeta de la plataforma iOS:
bunx cap init
bunx cap add ios
En este punto tendrá un ios/ directorio. Comítelo a git. Capgo Compila lo que está dentro ios/, por lo que quieres que esté versionado y reproducible.
3) Sincronice siempre Activos Web en iOS antes de Compilar
Cada vez que cambie su aplicación web, haga esta secuencia en Windows:
bun run build
bunx cap sync ios
cap sync es lo que copia sus activos web compilados en el proyecto nativo de iOS (los archivos Capgo Compilarán realmente).
4) Instale y autentique el Capgo CLI
Capgo Build is triggered via the Capgo CLI. With bun, use bunx:
bunx @capgo/cli@latest login
__CAPGO_KEEP_1__ __CAPGO_KEEP_2__
export CAPGO_TOKEN="your_api_key_here"
Con __CAPGO_KEEP_3__, utilice
O establezca su token mediante la variable de entorno en su shell/CI:
- 5) Configure la firma de iOS para compilaciones en la nube
.p12Para compilar iOS necesita material de firma: - Certificado de distribución de Apple (
.mobileprovision) - App Store Connect API key (
AuthKey_XXXXXX.p8Perfil de configuración (
Clave de App Store Connect Capgo (
- ) y metadatos (ID de clave, ID de emisor, ID de equipo) Si todavía necesita generar estos archivos, consulte la documentación __CAPGO_KEEP_0__:
- How to Get iOS Certificates and Provisioning Profiles
El camino más fácil es: crear/exportar estos una vez (a menudo utilizando cualquier Mac disponible, un compañero de equipo o una alquiler a corto plazo), luego reutilizarlos desde Windows para cada construcción subsiguiente.
Una vez que tenga los archivos localmente, guarde los archivos para Capgo Build:
bunx @capgo/cli@latest build credentials save \
--platform ios \
--certificate ./cert.p12 \
--p12-password "password" \
--provisioning-profile ./profile.mobileprovision \
--apple-key ./AuthKey.p8 \
--apple-key-id "KEY123" \
--apple-issuer-id "issuer-uuid" \
--apple-team-id "team-id"
Consejo: en CI, almacene los archivos de credenciales base64 codificados como secretos, los desencripte en tiempo de ejecución, luego ejecute el mismo comando. build credentials save 6) Desencadene una construcción de iOS desde Windows
Desde su carpeta de aplicación:
Verá registros en tiempo real en su terminal. Si su clave de App Store Connect está configurada, __CAPGO_KEEP_0__ Build puede enviar la construcción resultante a TestFlight automáticamente.
bun run build
bunx cap sync ios
bunx @capgo/cli@latest build com.example.app --platform ios --build-mode release
You will see real-time logs in your terminal. If your App Store Connect key is configured, Capgo Build can submit the resulting build to TestFlight automatically.
__CAPGO_KEEP_0__ Build es para cambios nativos:
agregar/remover Capgo plugins
- adding/removing Capacitor plugins
- modificar __CAPGO_KEEP_0__ permisos
- cambiar iconos/pantalla de inicio
- actualizar Capacitor
- cualquier cambio en Swift/Objective-C
Para ajustes de interfaz de usuario diarios y correcciones de JavaScript, generalmente deseas Actualizaciones en vivo (OTA), de modo que no se reconstruya el binario nativo cada vez.
Un buen flujo de trabajo de equipo es:
- Usar Actualizaciones en vivo para cambios web frecuentes.
- Usar Capgo Build ocasionalmente cuando se necesitan cambios nativos.
Problemas comunes de Windows (y soluciones)
- Olvidar
cap sync: si tus cambios de interfaz de usuario están faltando en la compilación de iOS, es probable que hayas construido la aplicación web pero no la sincronizasteios/. - No se está comprometiendo
ios/: Capgo Compila el proyecto nativo. Si el folder no está en git (o no está en tu contexto de compilación), la compilación no puede reproducir tu aplicación. - Cambios de plugin sin recompilación nativa: agregar un plugin es un cambio nativo; planifica una Capgo Compila (y una presentación en la tienda) después.
Resumen
No puedes ejecutar Xcode en Windows, pero puedes enviar aplicaciones iOS desde Windows: Envuelve tu aplicación web con __CAPGO_KEEP_0__ (
- Wrap your web app with Capacitor (
ios/Compila los activos web localmente, luego - Utiliza __CAPGO_KEEP_0__ Compila para compilar, firmar y enviar tu binario iOS desde el __CAPGO_KEEP_1__.
cap sync. - Use Capgo Build to compile, sign, and submit your iOS binary from the CLI.