Registro histórico anterior al builder APK. Las afirmaciones de ausencia de ejecución corresponden a esa etapa. Consulta la evidencia Android posterior.
Resultados DEX históricos — 2026-10-13
Este informe corresponde al hito inicial del generador DEX, anterior al runtime
APK. Las pruebas registradas se ejecutaron sobre código real en este workspace;
en esa etapa aún no se habían validado la instalación ni la ejecución de un APK
en Android. Consulta la evidencia Android posterior para esos
resultados. summary.json recoge los casos, la cobertura y los hashes de esta
etapa histórica.
En esta página
Validación
| Comprobación | Resultado y evidencia |
|---|---|
| Suite Go | Pasa; unit-tests.txt, tests.jsonl |
| Cobertura conjunta de paquetes | 84.0%; coverage.out, coverage-summary.txt |
go vet ./... |
Exit 0, sin hallazgos; vet.txt vacío corresponde a éxito |
go test -race ./... |
Pasa; race.txt |
| Fuzz ULEB128/SLEB128, 10 s, dos workers | 552944 ejecuciones, sin fallo; fuzz-leb.txt |
| Fuzz MUTF-8, 10 s, dos workers | 271686 ejecuciones, sin fallo; fuzz-mutf8.txt |
| Fuzz parser, 15 s, dos workers, semillas Answer y Activity | 256070 ejecuciones, sin fallo; fuzz-parser.txt |
| Mutación deliberada de la validación Adler-32 | La prueba detecta la mutación y falla; se restauró el código antes de la suite final; mutation-check.txt |
dexdump oficial AOSP |
Checksum, apertura y desensamblado de Answer/Activity pasan; external-tests.txt, *-dexdump.txt |
| Build sin proxy de módulos ni CGO | Pasa con GOTOOLCHAIN=local GOPROXY=off GOSUMDB=off CGO_ENABLED=0 |
| CLI sin herramientas en PATH | Generación/inspección pasan con PATH=/nonexistent; offline-cli.txt |
| Entrega ZIP | CRC correcto; reconstrucción desde extracción limpia sin proxy de módulos; binario y Answer DEX idénticos byte a byte (cmp, exit 0) |
| Dependencias | Cobra solo en cmd/koru; DEX, AXML, ARSC, APK y firmas siguen usando Go y la biblioteca estándar |
| Windows amd64/macOS arm64 | Compilación cruzada solamente; cross-builds.txt; no se ejecutaron en esos sistemas |
La cobertura conjunta usa go test -coverpkg=./... -coverprofile=... ./...:
instrumenta también llamadas entre paquetes. Es evidencia de alcance de las
pruebas, no una garantía de ausencia de errores.
Los registros de comandos y hashes de este informe corresponden al estado previo a la incorporación de Cobra. La suite vigente también cubre la ayuda generada, los comandos en inglés y la validación de argumentos. El CLI usa Cobra; el núcleo de empaquetado y formatos Android sigue escrito en Go y la biblioteca estándar.
El retoque posterior de presentación compacta la ayuda, alinea comandos/flags,
agrega ejemplos y usa la paleta del sitio solo en terminales interactivos. La
salida redirigida conserva los mensajes y la inspección DEX continúa siendo JSON.
La comprobación PTY cubrió truecolor, 256 colores, ANSI, fondo claro, NO_COLOR
vacío, TERM=dumb y salida redirigida; también confirmó mensajes byte a byte sin
cambios en modo pipe, JSON válido en DEX/APK y errores sin ANSI con código 1.
Medidas DEX
Host Linux amd64, CPU reportada por Go: AMD EPYC 9V74. Los benchmarks tienen
-benchmem y usan el IR preparado fuera de la región medida.
| Caso | Tiempo medio | Asignaciones | Bytes asignados/op | Archivo DEX |
|---|---|---|---|---|
Constructor binario de una clase con método estático answer()I |
6176 ns/op | 70 | 3926 B/op | 396 bytes en este fixture de benchmark |
| Activity, build público con parser/verificación incluida | 165560 ns/op | 1420 | 98460 B/op | 1848 bytes |
El archivo artifacts/answer.dex incluye además un constructor y ocupa 476 bytes;
no es el mismo fixture que el benchmark mínimo. El binario Linux se compila con
-trimpath, sin stripping y sin CGO; su tamaño y hash exactos están en
summary.json. Los bytes asignados no son una medida de memoria pico.
No se midieron compilación APK, instalación, tiempo de arranque, rendimiento del puente ni comparativas con Capacitor. No se afirma superioridad de rendimiento.
Reproducir
Los comandos están en el README principal. El compilador Go de la sesión está en
/workspace/tooling/go/bin, y la herramienta oficial de contraste en
/workspace/tooling/android-validation/dexdump. La herramienta de contraste no
se redistribuye con koru ni es dependencia del build. Procedencia y hashes figuran
en tooling.json; fuentes oficiales consultadas en ../specs/sources.json.
Para repetir el build/CLI sin disponibilidad de procesos auxiliares:
GOTOOLCHAIN=local GOPROXY=off GOSUMDB=off CGO_ENABLED=0 go build -trimpath -o bin/koru ./cmd/koru
PATH=/nonexistent ./bin/koru dex build examples/dex/answer.json --output answer.dex
PATH=/nonexistent ./bin/koru dex build --activity-experiment --output activity.dex
PATH=/nonexistent ./bin/koru dex inspect activity.dex
El binario no importa os/exec ni clientes de red. os/exec solo aparece en la
prueba externa optativa. dexdump verifica estructura/checksum y muestra código;
no ejecuta los métodos en ART ni verifica su renderizado en Android.