Files
egutierrez 01042bc23c feat: add bash infra functions — Gitea, Android SDK, Mantine, Capacitor
Nuevas funciones bash: gestión Gitea (create_repo, list_repos, add_collaborator,
push_directory), install_android_sdk, install_mantine, frontend_doctor.
Pipelines: capacitor_build_apk y gitea_init_app.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:47:10 +02:00

3.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
capacitor_build_apk pipeline bash pipelines 1.0.0 impure capacitor_build_apk(web_app_dir: string, [app_id: string], [app_name: string]) -> void Pipeline que convierte una web app en un APK de Android usando Capacitor. Valida el entorno (ANDROID_HOME, Java 17+), construye el bundle web si no existe dist/, inicializa Capacitor si no está configurado, añade la plataforma Android, sincroniza y compila el APK con Gradle. El APK final queda en el directorio raíz de la web app.
android
apk
capacitor
mobile
build
pipeline
bash
install_android_sdk_bash_infra
false error_go_core
name desc
web_app_dir directorio raíz de la web app; debe contener package.json; si no existe dist/ se ejecuta pnpm build automáticamente
name desc
app_id identificador de la app Android en formato reverse-DNS (default: com.fnregistry.app)
name desc
app_name nombre visible de la app Android; si se omite, se lee del campo name de package.json
APK de debug en <web_app_dir>/<app_name>.apk; imprime ruta y tamaño en MB al finalizar false
bash/functions/pipelines/capacitor_build_apk.sh

Ejemplo

# Build con defaults (app-id y app-name desde package.json)
./bash/functions/pipelines/capacitor_build_apk.sh ~/projects/my-web-app

# Build especificando app-id y app-name
./bash/functions/pipelines/capacitor_build_apk.sh ~/projects/my-web-app \
  --app-id com.miempresa.miapp \
  --app-name "Mi Aplicación"

Flujo

  1. Validación — verifica que web_app_dir existe, tiene package.json, que ANDROID_HOME está seteado (o sourcea $HOME/android-sdk/env.sh) y que Java 17+ está disponible.
  2. Build web — si no existe dist/, ejecuta pnpm build en el directorio de la app.
  3. Init Capacitor — si no existe capacitor.config.ts, instala @capacitor/core, @capacitor/cli y @capacitor/android via npm y genera el archivo de configuración con el appId, appName y webDir: dist.
  4. Add Android — si no existe el directorio android/, ejecuta npx cap add android.
  5. Sync — ejecuta npx cap sync android para copiar los assets web al proyecto Android.
  6. Build APK — ejecuta ./gradlew assembleDebug desde android/; si falla sale con exit 1.
  7. Copia APK — copia android/app/build/outputs/apk/debug/app-debug.apk a <web_app_dir>/<app_name>.apk.
  8. Resultado — imprime la ruta del APK y su tamaño en MB.

Requisitos

  • Node.js y pnpm disponibles en PATH
  • Java 17+ disponible en PATH
  • Android SDK instalado: ANDROID_HOME seteado, o bien $HOME/android-sdk/env.sh existente (generado por install_android_sdk)
  • Gradle wrapper presente en el directorio android/ (generado por cap add android)

Notas

El pipeline usa set -euo pipefail — cualquier fallo detiene la ejecución inmediatamente.

El APK generado es un debug build, apto para desarrollo y pruebas. Para publicar en Play Store se necesita un release build firmado (assembleRelease con un keystore).

install_android_sdk_bash_infra se referencia como dependencia previa: el usuario debe haberlo ejecutado (o haber instalado el SDK manualmente) antes de invocar este pipeline.

La detección del app_name desde package.json usa node -e inline, lo que requiere que Node.js esté disponible. Si el campo name no existe en el JSON, se usa el valor por defecto app.

Para instalar el APK en un dispositivo Android conectado por USB (con depuración USB activada):

adb install <web_app_dir>/<app_name>.apk