cb6d9e61d1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
99 lines
2.9 KiB
Markdown
99 lines
2.9 KiB
Markdown
---
|
|
name: adb_wsl
|
|
kind: function
|
|
lang: bash
|
|
domain: infra
|
|
version: "1.0.0"
|
|
purity: impure
|
|
signature: "source adb_wsl.sh [ADB=<path>] [ANDROID_SDK_WIN=<sdk_root>]"
|
|
description: "Wrapper sourceable para usar adb.exe Windows desde WSL2. Resuelve binario, convierte paths, espera boot del emulador."
|
|
tags: ["android", "adb", "wsl", "windows"]
|
|
params:
|
|
- name: ADB
|
|
desc: "Env var opcional. Path absoluto a adb.exe. Si no se fija, se construye desde ANDROID_SDK_WIN o el default /mnt/c/Users/lucas/AppData/Local/Android/Sdk."
|
|
- name: ANDROID_SDK_WIN
|
|
desc: "Env var opcional. Raiz del Android SDK montado en WSL. Default: /mnt/c/Users/lucas/AppData/Local/Android/Sdk."
|
|
output: "Source-able shell helpers: adb_run, adb_devices, adb_wsl_to_win, adb_wait_boot. Define ADB env var apuntando a Windows adb.exe via ANDROID_SDK_WIN."
|
|
uses_functions: []
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: "error_go_core"
|
|
imports: []
|
|
tested: false
|
|
tests: []
|
|
test_file_path: ""
|
|
file_path: "bash/functions/infra/adb_wsl.sh"
|
|
---
|
|
|
|
## Uso
|
|
|
|
```bash
|
|
# Sourcear (usa SDK default)
|
|
source bash/functions/infra/adb_wsl.sh
|
|
|
|
# Sourcear con SDK custom
|
|
ANDROID_SDK_WIN=/mnt/d/Android/Sdk source bash/functions/infra/adb_wsl.sh
|
|
|
|
# Sourcear con binario fijo
|
|
ADB=/mnt/c/my/tools/adb.exe source bash/functions/infra/adb_wsl.sh
|
|
```
|
|
|
|
## Funciones expuestas
|
|
|
|
### `adb_run "<args...>"`
|
|
|
|
Ejecuta `$ADB` con los argumentos dados. Retorna el exit code de `adb.exe`.
|
|
|
|
```bash
|
|
adb_run shell ls /sdcard/
|
|
adb_run install app.apk
|
|
```
|
|
|
|
### `adb_devices`
|
|
|
|
Alias de `adb_run devices`. Lista dispositivos/emuladores conectados.
|
|
|
|
```bash
|
|
adb_devices
|
|
# List of devices attached
|
|
# emulator-5554 device
|
|
```
|
|
|
|
### `adb_wsl_to_win <path_wsl>`
|
|
|
|
Convierte un path WSL a formato Windows con `wslpath -w`. Si `wslpath` no está disponible retorna el path sin convertir.
|
|
|
|
```bash
|
|
win_path=$(adb_wsl_to_win /home/lucas/proyecto/app.apk)
|
|
# C:\Users\lucas\AppData\Local\... (o la ruta Windows equivalente)
|
|
adb_run install "$win_path"
|
|
```
|
|
|
|
### `adb_wait_boot [timeout_s]`
|
|
|
|
Espera a que el emulador/dispositivo complete el boot (`sys.boot_completed = 1`). Útil tras lanzar un AVD en CI.
|
|
|
|
```bash
|
|
adb_wait_boot # timeout 120s
|
|
adb_wait_boot 60 # timeout 60s
|
|
```
|
|
|
|
Retorna `0` si el boot se completó, `1` si expiró el timeout.
|
|
|
|
## Smoke test
|
|
|
|
```bash
|
|
bash bash/functions/infra/adb_wsl.sh --self-test
|
|
# OK
|
|
```
|
|
|
|
## Notas
|
|
|
|
- El script es **source-able**: define funciones en el shell actual, no crea subshell.
|
|
- `ADB` se resuelve una sola vez al sourcing. Si el binario no existe en disco, la carga falla con mensaje en stderr y `return 1` / `exit 1`.
|
|
- `adb_wait_boot` hace polling cada 3 segundos. Ajustar `interval` si el emulador es especialmente lento.
|
|
- En WSL2 `wslpath` siempre está disponible; el fallback existe para entornos Linux puros que accidentalmente sourceen el archivo.
|
|
- Si el emulador requiere `-s <serial>`, pasar el flag directamente a `adb_run`: `adb_run -s emulator-5554 shell ...`.
|
|
---
|