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:
- 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.
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.
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
Aún no hay comentarios.