MOBILE_DEPLOYMENT
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ámetro | Valor por Defecto | Comportamiento |
|---|---|---|
--platform | android y ios | Ejecuta para ambas plataformas en serie |
--config | auravantbeta | Usa configuración de mobile/config/auravantbeta |
--version | Auto-increment | Incrementa 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
| Comando | Descripción |
|---|---|
npm run status | Estado 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:
- Carga configuración desde
mobile/config/auravantbeta/.env - Ejecuta
npx cap build android --release - Firma el AAB con keystore configurado
- 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:
- Carga configuración desde
mobile/config/auravantbeta/.env - Ejecuta
xcodebuild archivecon configuración Release - Exporta IPA con
xcodebuild -exportArchive - 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)
-
Service Account:
- Ve a Google Cloud Console
- Crea service account con permisos de Google Play Developer
- Descarga JSON y guarda como
service-account.json
-
Keystore:
- Genera con:
keytool -genkey -v -keystore aura-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias Auravant - Guarda en
mobile/config/auravantbeta/keys/
- Genera con:
App Store Connect (iOS)
-
App-Specific Password:
- Ve a https://appleid.apple.com
- Sign-In and Security > App-Specific Passwords
- Genera nueva (formato: xxxx-xxxx-xxxx-xxxx)
-
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
npm run status- Verificar estadonpm run build:mobile <platform> <config>- Generar build- Test local del build
Staging
- Upload a tracks internos
npm run upload:play auravantbeta(internal track)npm run upload:ios auravantbeta(TestFlight)
Producción
- Promover desde tracks internos
- Configurar rollout gradual
- 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