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>
This commit is contained in:
@@ -3,7 +3,7 @@ name: gradle_run
|
|||||||
kind: function
|
kind: function
|
||||||
lang: bash
|
lang: bash
|
||||||
domain: infra
|
domain: infra
|
||||||
version: "1.0.0"
|
version: "1.1.0"
|
||||||
purity: impure
|
purity: impure
|
||||||
signature: "gradle_run(project_dir: string, task...: string) -> int"
|
signature: "gradle_run(project_dir: string, task...: string) -> int"
|
||||||
description: "Wrapper canonico para invocar gradlew Android en WSL2 con JDK 17 + ANDROID_HOME validados."
|
description: "Wrapper canonico para invocar gradlew Android en WSL2 con JDK 17 + ANDROID_HOME validados."
|
||||||
@@ -24,7 +24,7 @@ tested: false
|
|||||||
tests: []
|
tests: []
|
||||||
test_file_path: ""
|
test_file_path: ""
|
||||||
file_path: "bash/functions/infra/gradle_run.sh"
|
file_path: "bash/functions/infra/gradle_run.sh"
|
||||||
notes: "Las demas funciones gradle_* lo sourcean. Reutiliza patron de adb_wsl_bash_infra para ser source-able+ejecutable. Cubre tanto SDK Linux (~/Android/Sdk via install_android_sdk) como SDK Windows (/mnt/c/...) montado en WSL."
|
notes: "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
|
## Ejemplo
|
||||||
@@ -50,10 +50,12 @@ Si no esta fijado en el entorno, busca en orden:
|
|||||||
Si ninguno existe → error en stderr y `return 1`.
|
Si ninguno existe → error en stderr y `return 1`.
|
||||||
|
|
||||||
### ANDROID_HOME
|
### ANDROID_HOME
|
||||||
Si no esta fijado:
|
Si no esta fijado, busca en orden (requiere que el directorio tenga `platform-tools/`):
|
||||||
1. Intenta `$HOME/Android/Sdk` (SDK Linux via `install_android_sdk_bash_infra`)
|
1. `$HOME/android-sdk` — default de `install_android_sdk_bash_infra` (lowercase)
|
||||||
2. Si no existe, intenta `$ANDROID_SDK_WIN` (SDK Windows montado en `/mnt/c/...`)
|
2. `$HOME/Android/Sdk` — default de Android Studio en Linux
|
||||||
3. Si ninguno, lo deja vacio — gradle mostrara el error adecuado para builds JVM puros
|
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
|
## Exit codes
|
||||||
|
|
||||||
@@ -69,4 +71,8 @@ Si no esta fijado:
|
|||||||
Source-able y ejecutable directo. Al sourcear, el caller importa la funcion `gradle_run` sin ejecutarla. Al ejecutar directamente, delega `"$@"` a `gradle_run`.
|
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.
|
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)
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -44,16 +44,25 @@ gradle_run() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- Resolver ANDROID_HOME ---------------------------------------------
|
# ---- Resolver ANDROID_HOME ---------------------------------------------
|
||||||
|
# Orden de busqueda (de mas probable a menos para entorno Linux/WSL2):
|
||||||
|
# 1. $HOME/android-sdk — instalado por install_android_sdk_bash_infra (default)
|
||||||
|
# 2. $HOME/Android/Sdk — ruta de Android Studio en Linux
|
||||||
|
# 3. $ANDROID_SDK_WIN — SDK Windows montado en WSL2 via /mnt/c/...
|
||||||
|
# Solo se acepta un candidato si tiene platform-tools/, no solo el directorio raiz.
|
||||||
local android_home="${ANDROID_HOME:-}"
|
local android_home="${ANDROID_HOME:-}"
|
||||||
if [[ -z "$android_home" ]]; then
|
if [[ -z "$android_home" ]]; then
|
||||||
local _default_linux="$HOME/Android/Sdk"
|
local _sdk_candidates=(
|
||||||
if [[ -d "$_default_linux" ]]; then
|
"$HOME/android-sdk"
|
||||||
android_home="$_default_linux"
|
"$HOME/Android/Sdk"
|
||||||
elif [[ -n "${ANDROID_SDK_WIN:-}" && -d "${ANDROID_SDK_WIN}" ]]; then
|
"${ANDROID_SDK_WIN:-/mnt/c/Users/$USER/AppData/Local/Android/Sdk}"
|
||||||
# SDK Windows montado en WSL via /mnt/c/...
|
)
|
||||||
android_home="${ANDROID_SDK_WIN}"
|
for _candidate in "${_sdk_candidates[@]}"; do
|
||||||
fi
|
if [[ -d "$_candidate" && -d "$_candidate/platform-tools" ]]; then
|
||||||
unset _default_linux
|
android_home="$_candidate"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset _sdk_candidates _candidate
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ANDROID_HOME puede quedar vacio si no hay SDK instalado; gradle mostrara
|
# ANDROID_HOME puede quedar vacio si no hay SDK instalado; gradle mostrara
|
||||||
|
|||||||
Reference in New Issue
Block a user