--- name: install_android_sdk kind: function lang: bash domain: infra version: "1.0.0" purity: impure signature: "install_android_sdk() -> void" description: "Descarga e instala Android SDK command-line tools y JDK 17 localmente (sin root/sudo) en $ANDROID_SDK_DIR (default: $HOME/android-sdk). Idempotente: detecta instalacion existente y sale sin hacer nada. Genera env.sh con JAVA_HOME, ANDROID_HOME y PATH listos para hacer source." tags: [android, sdk, jdk, java, install, infra, mobile] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: [] output: "sin salida estructurada; imprime progreso y resumen final con rutas de instalacion" tested: false tests: [] test_file_path: "" file_path: "bash/functions/infra/install_android_sdk.sh" --- ## Ejemplo ```bash # Instalacion en directorio por defecto ($HOME/android-sdk) source install_android_sdk.sh # Instalacion en directorio personalizado ANDROID_SDK_DIR=/opt/android source install_android_sdk.sh # Si ya esta instalado: # Android SDK ya instalado en: /home/user/android-sdk # Instalacion completa imprime: # Descargando JDK 17... # JDK 17 instalado: /home/user/android-sdk/jdk-17/jdk-17.0.x+y # Descargando Android cmdline-tools... # cmdline-tools instalados # Aceptando licencias de Android SDK... # Instalando platform-tools, platforms;android-34, build-tools;34.0.0... # # Android SDK instalado en: /home/user/android-sdk # JDK 17: /home/user/android-sdk/jdk-17/jdk-17.0.x+y # Para activar: source /home/user/android-sdk/env.sh # Activar entorno en sesion actual source ~/android-sdk/env.sh ``` ## Notas Requiere `curl` y `unzip` (disponibles en la mayoria de distros Linux). No requiere root ni sudo. El JDK se descarga desde Adoptium (Eclipse Temurin) via su API oficial. La URL de cmdline-tools apunta a la version 11076708 (2024). Si Google actualiza la version, cambiar la URL con el nuevo numero de build. La reorganizacion del zip es necesaria porque Google distribuye cmdline-tools con estructura `cmdline-tools/bin/...` pero sdkmanager espera estar en `cmdline-tools/latest/bin/sdkmanager` para que Android Studio y otras herramientas lo detecten correctamente. El archivo `env.sh` generado en `$ANDROID_SDK_DIR/env.sh` contiene las variables de entorno necesarias (`JAVA_HOME`, `ANDROID_HOME`, `ANDROID_SDK_ROOT`, `PATH`) y puede hacerse source desde `.bashrc`, `.zshrc` o desde scripts de CI. Paquetes instalados: `platform-tools` (adb, fastboot), `platforms;android-34` (API 34), `build-tools;34.0.0`.