Volver al inicio

Desarrollo de iOS en Windows sin Mac — GitHub Actions

El artículo describe el desarrollo y publicación de apps iOS en Windows sin Mac usando GitHub Actions, XcodeGen y Claude Code. Dos ejemplos en App Store: mensajero y calculadora. Instrucciones completas sobre certificados y pipeline.

iOS sin Mac: de Windows a App Store en 15 min
Advertisement 728x90

Desarrollo de Apps iOS en Windows con GitHub Actions y XcodeGen

Dos apps iOS—el mensajero cifrado Dark Message y la calculadora de ingeniería HVAC—están publicadas en la App Store. Se desarrollaron completamente en Windows sin un MacBook. El proceso: el código se escribe localmente, con compilación y firma en máquinas virtuales macOS en GitHub Actions. El tiempo desde el push al repositorio hasta la compilación en un iPhone es de 15 minutos.

Esto evita el requisito de Xcode en macOS. GitHub proporciona runners gratuitos con macOS, donde Xcode está instalado. La configuración incluye una Cuenta de Desarrollador de Apple, XcodeGen para generar el proyecto desde YAML, una pipeline de CI/CD y certificados de firma.

Rutas de Desarrollo para Diferentes Niveles de Habilidad

La elección del enfoque depende de las habilidades:

Google AdInline article slot
  • Codificación con IA: Claude Code genera código SwiftUI a partir de descripciones. Funciona en la terminal en Windows. Ejemplo de prompt: "App iOS en SwiftUI, cifrado AES-256-GCM con PBKDF2, pantallas de entrada/descifrado."
  • Programador sin Mac: Tu propio código Swift + IA configura la infraestructura (XcodeGen, GitHub Actions, certificados).
  • Hardcore: Estructura manual del proyecto, configuración YAML, pipeline. Iteraciones vía TestFlight sin vista previa local.

Instalación de Claude Code:

npm install -g @anthropic-ai/claude-code
claude

La IA crea archivos, edita basándose en feedback. Sin vista previa, pero las compilaciones en la nube lo compensan.

Paso 1: Cuenta de Desarrollador de Apple desde Rusia

Crea un Apple ID en appleid.apple.com (país ≠ Rusia). Regístrate en developer.apple.com/programs/enroll como Individual. Pago $99/año—usa una tarjeta extranjera (Bybit o similar). Acceso a App Store Connect en 24–48 horas.

Google AdInline article slot

Paso 2: Estructura del Proyecto y XcodeGen

XcodeGen genera .xcodeproj desde project.yml sin Xcode. Ejemplo de configuración:

name: DarkMessage
options:
  bundleIdPrefix: com.darkmessage
  deploymentTarget:
    iOS: "15.0"
  xcodeVersion: "15.0"
targets:
  DarkMessage:
    type: application
    platform: iOS
    sources:
      - path: Sources
    resources:
      - path: Resources
    settings:
      base:
        PRODUCT_BUNDLE_IDENTIFIER: com.darkmessage.ios
        MARKETING_VERSION: "1.0.0"
        CURRENT_PROJECT_VERSION: "1"
        SWIFT_VERSION: "5.9"
        TARGETED_DEVICE_FAMILY: "1,2"
        INFOPLIST_VALUES:
          UILaunchScreen: {}
    dependencies: []

Estructura del repositorio:

  • Sources/: App.swift, Views/, Models/, Services/ (CryptoService.swift).
  • Resources/Assets.xcassets/.
  • project.yml.
  • .github/workflows/build.yml.

Ventajas de YAML: compacto (30 líneas), sin conflictos en Git, editable en VS Code.

Google AdInline article slot

Paso 3: Repositorio y GitHub Actions

Inicialización:

git init
git add .
git commit -m "Commit inicial"
git remote add origin https://github.com/usuario/repo.git
git push -u origin main

Los runners de Actions con macOS compilan el proyecto: xcodegen generate, xcodebuild, firma, subida a TestFlight/App Store.

Paso 4: Firma de Código sin Mac

Requerido:

  • Certificado de Distribución (.p12).
  • Perfil de Provisionamiento (.mobileprovision).
  • Clave API de App Store Connect.

Genera CSR en Windows con OpenSSL:

openssl genrsa -out ios_dist.key 2048
openssl req -new -key ios_dist.key -out ios_dist.csr -subj "/CN=Tu Nombre/[email protected]"

Sube CSR a developer.apple.com/account/resources/certificates → Apple Distribution → descarga .cer. Convierte a .p12:

openssl x509 -inform der -in ios_dist.cer -inkey ios_dist.key -out ios_dist.p12

Perfil de Provisionamiento: developer.apple.com → Profiles → + → App Store → bundle ID → certificado.

Clave API: App Store Connect → Users and Access → Keys → + → App Manager.

Almacena secretos en GitHub Settings → Secrets: CERTIFICATE_P12_BASE64, PROVISIONING_PROFILE_BASE64, APPSTORE_API_KEY.

Paso 5: Workflow YAML para CI/CD

Ejemplo .github/workflows/build.yml (simplificado):

name: Compilación iOS
on: [push]
jobs:
  build:
    runs-on: macos-13
    steps:
      - uses: actions/checkout@v4
      - name: Generar proyecto Xcode
        uses: maxim-lobanov/setup-xcodegen@v1
        with:
          xcodegen-version: '2.35.0'
      - run: xcodegen generate
      - name: Importar certificado
        env:
          CERTIFICATE_P12: ${{ secrets.CERTIFICATE_P12_BASE64 }}
        run: |
          echo $CERTIFICATE_P12 | base64 --decode > cert.p12
          security import cert.p12 -k ~/Library/Keychains/login.keychain
      # ... firma, archivo, subida

El workflow completo incluye xcodebuild archive, xcrun altool o xcrun notarytool para la App Store.

Puntos Clave

  • GitHub Actions con macOS son gratuitos para repos públicos (2000 min/mes).
  • XcodeGen simplifica la gestión de proyectos sin Xcode.
  • La firma de código se automatiza vía secretos codificados en base64.
  • Iteraciones: 15 minutos desde push hasta TestFlight.
  • Adecuado para proyectos puntuales; para producción, un Mac acelera el desarrollo.

— Editorial Team

Advertisement 728x90

Leer después