efc9911925
Design system Compose (kotlin/functions/ui, modulo Gradle `fn.compose:ui`):
- FnTokens + FnTheme con la paleta heredada al hex de cpp/DESIGN_SYSTEM.md
(Mantine v9 dark + indigo), identica a la web @fn_library y a las apps C++.
- 26 componentes Compose (Layout/Display/Inputs/Feedback/Data/Charts) +
FnTheme + FnTokens registrados en el registry (28 entradas kind=component
lang=kt domain=ui), descubribles via fn_search. Habilitan init_kotlin_app.
Recuperacion: el commit cb6d9e6 habia anadido `kotlin/functions/ui/` al
.gitignore, por eso el design system nunca se versiono y se perdio del working
tree. Des-ignorado; el .gitignore interno del modulo ya excluye
build/.gradle/local.properties. La gallery (apps/gallery_kt) se recupero del
sub-repo Gitea y sus 27 componentes se reconstruyeron con su MainActivity como
contrato exacto.
Toolbelt Android Linux-first (antes asumia WSL2 + Windows):
- adb_wsl 1.1.0, android_emulator_start 1.1.0, android_emulator_list 1.1.0:
resuelven adb/emulator nativos del SDK ($ANDROID_HOME), .exe solo fallback WSL2.
- android_emulator_start: fix `timeout adb_run wait-for-device` (timeout no puede
ejecutar una funcion del shell; ahora invoca el binario $ADB directamente).
- install_android_sdk 1.0.1: fix licencias bajo pipefail (SIGPIPE de `yes`) +
trap EXIT con variable unbound.
- docs/capabilities/android.md regenerado Linux-first + seccion design system.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.0 KiB
3.0 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
| 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 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| android_emulator_start | function | bash | infra | 1.1.0 | impure | android_emulator_start(avd_name: string, timeout_s: int) -> string | Arranca un AVD Android en background y espera a que termine de bootear. Linux-first: resuelve el emulator/adb nativos del SDK; fallback a binarios .exe solo bajo WSL2. Idempotente: si ya hay un emulador corriendo, imprime 'already running' y su serial sin lanzar otro. |
|
|
Serial del device emulado (ej. emulator-5554) en stdout. Exit 0 = boot completo, exit 1 = timeout o emulador murio. |
|
false | error_go_core | false | bash/functions/infra/android_emulator_start.sh |
Ejemplo
source ~/android-sdk/env.sh # exporta ANDROID_HOME -> resuelve emulator/adb nativos
source bash/functions/infra/android_emulator_start.sh
# Arrancar AVD con timeout por defecto (180s)
serial=$(android_emulator_start "Pixel_API34")
echo "Emulador listo: $serial" # emulator-5554
# Con timeout personalizado
serial=$(android_emulator_start "Pixel_API34" 300)
Para ver la ventana del emulador en un escritorio Linux, exporta DISPLAY (y XAUTHORITY) antes de invocar.
Cuando usarla
Cuando un script necesita un emulador booteado antes de instalar un APK o correr tests instrumentados (gradle_instrumented_test, run_kotlin_app_tests). Es idempotente, así que se puede llamar al principio de cualquier pipeline sin comprobar antes si ya hay uno arriba.
Gotchas
- Linux-first. Resuelve
EMULATOR/ADBdesde$ANDROID_HOME/{emulator/emulator, platform-tools/adb}o del PATH;emulator.exe/adb.exesolo como fallback bajo WSL2. Override manual conEMULATOR=/ADB=. - Necesita
DISPLAYpara ventana. Sin un servidor X accesible el emulador puede fallar al abrir ventana. Para headless/CI añade-no-window(editar la función o lanzar el emulador aparte). - Aceleración KVM. Requiere acceso a
/dev/kvm(grupokvmo ACL). Sin ella el boot es lentísimo o falla. - Log del emulador en
/tmp/emulator_<avd>.log, PID en/tmp/emulator_<avd>.pid. - El timeout total se reparte: primera mitad para
adb wait-for-device, segunda parasys.boot_completed=1.
Capability growth log
- v1.1.0 (2026-06-03) — Linux-first: resuelve emulator/adb nativos del SDK (
$ANDROID_HOME) antes que los.exede Windows (ahora solo fallback WSL2); se elimina el default hardcodeado/mnt/c/Users/lucas/.... fix:timeout <n> adb_run wait-for-devicefallaba siempre porquetimeoutno puede ejecutar la función shelladb_run; ahora invoca el binario"$ADB"directamente.