Files
fn_registry/bash/functions/infra/gradle_run.md
T
egutierrez 27ae829a1e fix(infra): gradle_run detecta android-sdk (install_android_sdk default) en orden correcto
ANDROID_HOME resolution ahora busca en orden:
  1. $HOME/android-sdk  — path que instala install_android_sdk_bash_infra
  2. $HOME/Android/Sdk  — default Android Studio Linux
  3. WSL2 Windows path  — $ANDROID_SDK_WIN o /mnt/c/Users/$USER/.../Android/Sdk

Cada candidato se valida con platform-tools/ presente (no solo directorio raiz).

Fix: issue 0076

Co-Authored-By: fn-orquestador <noreply@anthropic.com>
2026-05-15 14:01:36 +02:00

2.9 KiB

name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, notes
name kind lang domain version purity signature description tags params output uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path notes
gradle_run function bash infra 1.1.0 impure gradle_run(project_dir: string, task...: string) -> int Wrapper canonico para invocar gradlew Android en WSL2 con JDK 17 + ANDROID_HOME validados.
android
gradle
kotlin
build
name desc
project_dir Path absoluto al proyecto Gradle (debe contener gradlew)
name desc
task Tarea(s) Gradle a ejecutar (ej. assembleDebug, :app:test). Variadic
Stdout/stderr del build Gradle. Exit code = exit code de gradlew. Exit 1 si JDK17 missing, exit 2 si no hay gradlew.
false error_go_core
false
bash/functions/infra/gradle_run.sh Las demas funciones gradle_* lo sourcean. Reutiliza patron de adb_wsl_bash_infra para ser source-able+ejecutable. Cubre SDK Linux en $HOME/android-sdk (install_android_sdk_bash_infra), $HOME/Android/Sdk (Android Studio), y SDK Windows (/mnt/c/...) montado en WSL.

Ejemplo

# Como libreria (en otro script gradle_*)
source "$(dirname "${BASH_SOURCE[0]}")/gradle_run.sh"
gradle_run "$project_dir" assembleDebug

# Directo
bash bash/functions/infra/gradle_run.sh /path/to/MyApp assembleDebug
bash bash/functions/infra/gradle_run.sh /path/to/MyApp :app:test :app:lint

Comportamiento de resolucion

JAVA_HOME

Si no esta fijado en el entorno, busca en orden:

  1. /usr/lib/jvm/java-17-openjdk-amd64
  2. /usr/lib/jvm/temurin-17-jdk-amd64
  3. /opt/android-studio-jbr/jbr

Si ninguno existe → error en stderr y return 1.

ANDROID_HOME

Si no esta fijado, busca en orden (requiere que el directorio tenga platform-tools/):

  1. $HOME/android-sdk — default de install_android_sdk_bash_infra (lowercase)
  2. $HOME/Android/Sdk — default de Android Studio en Linux
  3. $ANDROID_SDK_WIN (o /mnt/c/Users/$USER/AppData/Local/Android/Sdk) — SDK Windows montado en WSL2

Si ninguno existe con platform-tools/, lo deja vacio — gradle mostrara el error adecuado para builds JVM puros

Exit codes

Codigo Significado
0 Build exitoso
1 JDK 17 no encontrado
2 ./gradlew no existe en project_dir
* Exit code propagado de gradlew

Notas

Source-able y ejecutable directo. Al sourcear, el caller importa la funcion gradle_run sin ejecutarla. Al ejecutar directamente, delega "$@" a gradle_run.

No exporta JAVA_HOME/ANDROID_HOME al entorno del shell padre — los variables se pasan solo al subshell de gradlew para evitar contaminar el entorno.

Capability growth log

  • v1.1.0 (2026-05-15) — ANDROID_HOME detection order: prioriza $HOME/android-sdk (install_android_sdk default) sobre $HOME/Android/Sdk; requiere platform-tools/ presente; anade WSL2 Windows path como fallback explicito (issue 0076)