Saltar al contenido principal

MOBILE_DEPLOYMENT

Ver en Git


Mobile Deployment Guide

Quick Start

# Ver estado actual
npm run status

# Build y deploy completo
npm run build:mobile -- --platform=android --config=auravantbeta
npm run upload:play -- --config=auravantbeta

npm run build:mobile -- --platform=ios --config=auravantbeta
npm run upload:ios -- --config=auravantbeta

# Con versión específica
npm run build:mobile -- --platform=android --config=auravantbeta --version=3.0.1
npm run deploy:mobile -- --platform=ios --config=auravantbeta --version=3.0.1

Valores por Defecto

ParámetroValor por DefectoComportamiento
--platformandroid y iosEjecuta para ambas plataformas en serie
--configauravantbetaUsa configuración de mobile/config/auravantbeta
--versionAuto-incrementIncrementa automáticamente la versión actual
# Estos comandos son equivalentes:
npm run build:mobile
npm run build:mobile -- --platform=android --platform=ios --config=auravantbeta

# Deploy mínimo (ambas plataformas, config default, version auto)
npm run deploy:mobile

Scripts Disponibles

ComandoDescripción
npm run statusEstado de builds y uploads
npm run build:mobile -- --platform=<platform> --config=<config> [--version=<version>]Generar build
npm run deploy:mobile -- --platform=<platform> --config=<config> [--version=<version>]Build + upload completo
npm run upload:play -- --config=<config>Subir Android a Google Play
npm run upload:ios -- --config=<config>Subir iOS a App Store Connect
npm run validate:apple -- --config=<config>Validar credenciales Apple
npm run check:play -- --config=<config>Estado en Google Play

Gestión de Builds

Directorio builds/

Todos los builds se copian automáticamente al directorio builds/ con el formato:

  • Android: {config}-{timestamp}.aab
  • iOS: {config}-{timestamp}.ipa
# Ejemplo de archivos generados
builds/
├── auravantbeta-2025-12-31T09-19-47.ipa
├── auravantbeta-2025-12-31T12-19-09.ipa
└── auravantbeta-2025-12-30T12-00-35.aab

No necesitas hacer cp manual - el script de build ya lo incluye.

Limpieza de Builds Antiguos

# Limpiar builds de más de 7 días
find builds/ -name "*.aab" -o -name "*.ipa" -mtime +7 -delete

# Mantener solo los últimos 5 builds por plataforma
ls -t builds/*.ipa | tail -n +6 | xargs rm -f
ls -t builds/*.aab | tail -n +6 | xargs rm -f

Configuración Inicial

1. Estructura de Configuración

mobile/config/
├── auravantbeta/
│ ├── .env # Configuración principal
│ ├── keys/aura-key.jks # Keystore Android
│ ├── service-account.json # Google Play API
│ └── GoogleService-Info.plist

2. Variables de Entorno (.env)

# Android
ANDROID_KEYSTORE_PATH="mobile/config/auravantbeta/keys/aura-key.jks"
ANDROID_KEYSTORE_PASSWORD="password"
ANDROID_KEY_ALIAS="alias"
ANDROID_KEY_PASSWORD="password"

# Google Play
GOOGLE_PLAY_SERVICE_ACCOUNT="mobile/config/auravantbeta/service-account.json"
GOOGLE_PLAY_PACKAGE_NAME="com.auravantbeta"
GOOGLE_PLAY_TRACK="internal"

# iOS
APPLE_ID="your-apple-id@example.com"
APPLE_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx" # App-specific password
APPLE_TEAM_ID="TEAM123456"
APPLE_BUNDLE_ID="com.auravantbeta"

Proceso de Build

Android

# 1. Build AAB
npm run build:mobile -- --platform=android --config=auravantbeta

# Con versión específica
npm run build:mobile -- --platform=android --config=auravantbeta --version=3.0.1

# 2. Verificar build
ls builds/*.aab

# 3. Upload a Google Play
npm run upload:play -- --config=auravantbeta

Proceso interno:

  1. Carga configuración desde mobile/config/auravantbeta/.env
  2. Ejecuta npx cap build android --release
  3. Firma el AAB con keystore configurado
  4. Automáticamente copia AAB a builds/ con timestamp

iOS

# 1. Build IPA
npm run build:mobile -- --platform=ios --config=auravantbeta

# Con versión específica
npm run build:mobile -- --platform=ios --config=auravantbeta --version=3.0.1

# 2. Verificar build
ls builds/*.ipa

# 3. Upload a App Store Connect
npm run upload:ios -- --config=auravantbeta

Proceso interno:

  1. Carga configuración desde mobile/config/auravantbeta/.env
  2. Ejecuta xcodebuild archive con configuración Release
  3. Exporta IPA con xcodebuild -exportArchive
  4. Automáticamente copia IPA a builds/ con timestamp

Scripts Detallados

build.js

Ubicación: mobile/scripts/build.js

Genera builds para Android e iOS con configuración específica.

// Uso
node mobile/scripts/build.js <platform> <config>

// Funciones principales:
- loadConfig(configDir) // Carga variables de entorno
- buildAndroid(config) // Build AAB + copia automática
- buildIOS(config) // Build IPA + copia automática
- copyToBuildsDir() // Integrado en build process

auto-upload.js

Ubicación: scripts/auto-upload.js

Upload automático a Google Play Console.

// Uso
node scripts/auto-upload.js <config>

// Proceso:
1. Autentica con service account JSON
2. Sube AAB a track configurado (internal/alpha/beta)
3. Actualiza release notes
4. Configura rollout percentage (opcional)

ios-upload.js

Ubicación: scripts/ios-upload.js

Upload automático a App Store Connect.

// Uso  
node scripts/ios-upload.js <config>

// Proceso:
1. Valida credenciales Apple
2. Usa xcrun altool para upload
3. Maneja errores y sugiere alternativas
4. Proporciona UUID de delivery

validate-apple-credentials.js

Ubicación: scripts/validate-apple-credentials.js

Valida credenciales de Apple antes del upload.

// Validaciones:
- Formato de Apple ID
- Longitud de app-specific password
- Test de autenticación con altool --list-apps
- Verificación de acceso a App Store Connect

build-status.js

Ubicación: scripts/build-status.js

Muestra estado actual de builds y uploads.

// Información mostrada:
- Último build Android (.aab)
- Último build iOS (.ipa)
- Timestamps de creación
- Estado de uploads
- Comandos disponibles
- Próximos pasos

Configuración de Credenciales

Google Play (Android)

  1. Service Account:

    • Ve a Google Cloud Console
    • Crea service account con permisos de Google Play Developer
    • Descarga JSON y guarda como service-account.json
  2. Keystore:

    • Genera con: keytool -genkey -v -keystore aura-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias Auravant
    • Guarda en mobile/config/auravantbeta/keys/

App Store Connect (iOS)

  1. App-Specific Password:

  2. Team ID:

    • Ve a Apple Developer Account
    • Membership > Team ID

Troubleshooting

Errores Comunes Android

# Error: Keystore not found
# Solución: Verificar ANDROID_KEYSTORE_PATH en .env

# Error: Google Play API authentication failed
# Solución: Verificar service-account.json y permisos

# Error: Package name mismatch
# Solución: Verificar GOOGLE_PLAY_PACKAGE_NAME

Errores Comunes iOS

# Error: Invalid credentials
# Solución: Generar nueva app-specific password

# Error: Team not found
# Solución: Verificar APPLE_TEAM_ID en developer account

# Error: Bundle ID mismatch
# Solución: Verificar APPLE_BUNDLE_ID en App Store Connect

Comandos de Debug

# Validar configuración Android
npm run check:play auravantbeta

# Validar configuración iOS
npm run validate:apple auravantbeta

# Ver logs detallados
DEBUG=* npm run build:mobile android auravantbeta

Flujo de Trabajo Recomendado

Desarrollo

  1. npm run status - Verificar estado
  2. npm run build:mobile <platform> <config> - Generar build
  3. Test local del build

Staging

  1. Upload a tracks internos
  2. npm run upload:play auravantbeta (internal track)
  3. npm run upload:ios auravantbeta (TestFlight)

Producción

  1. Promover desde tracks internos
  2. Configurar rollout gradual
  3. Monitorear métricas post-deploy

Archivos de Configuración

capacitor.config.json

Configuración base de Capacitor con plugins y permisos.

android/app/build.gradle

Configuración de build Android, signing configs y versioning.

ios/App/App.xcodeproj

Proyecto Xcode con configuración de signing y provisioning profiles.

ExportOptions.plist (iOS)

Configuración de export para App Store distribution.


Monitoreo y Logs

Ubicaciones de Logs

  • Android builds: android/app/build/outputs/
  • iOS builds: ios/App/output/
  • Upload logs: Salida de consola de scripts

Métricas Importantes

  • Tiempo de build
  • Tamaño de archivos (.aab/.ipa)
  • Success rate de uploads
  • Tiempo de procesamiento en stores