Comparativa y selección
1. Qué es y por qué existe
Los cinco documentos anteriores describen unas treinta herramientas, una por una. Este las pone en la misma mesa y responde a la única pregunta que importa cuando hay que empezar a trabajar: cuál usar.
La respuesta no es una recomendación única, porque las herramientas de este ecosistema no son sustitutivas sino complementarias — y esa es exactamente la conclusión del documento. Lo que sí se puede dar es un mapa: qué hace cada una, en qué estado está, y dónde falla. La última columna de la tabla maestra es la que aporta valor; las otras están en cualquier README.
Todos los datos de estado son del 12 de agosto de 2026 y se han verificado uno a uno contra la API de GitHub, crates.io o la página oficial del fabricante. Es el dato que más rápido caduca de todo el corpus: compruébalo antes de instalar nada.
2. Tabla maestra
Estado según el último push al repositorio y la última versión publicada, ambos verificados el 12 de agosto de 2026.
2.1 Leer código
| Herramienta | Licencia | Lenguaje | Estado | Entrada | Salida | Fortaleza | Punto ciego |
|---|---|---|---|---|---|---|---|
| jadx | Apache-2.0 | Java | Activo · v1.5.6 (10-07-2026) · push 05-08-2026 | apk dex jar aab xapk apkm |
Java + recursos | El mejor decompilador de Dalvik que existe, y es gratis | Solo lee. No reempaqueta, no firma, no fusiona splits. Solo el 21 % de las apps de Play decompilan enteras |
| dex2jar | Apache-2.0 | Java | Semiabandonado · v2.4 (03-10-2023) · push 21-07-2024 | dex apk |
.jar |
Puente al ecosistema de decompiladores de Java | Falla al convertir en el 2,9 % de las apps de Play. 379 issues abiertas sin atender |
| CFR | MIT | Java | Anómalo · release 0.152 (11-12-2021) · push 04-06-2026 | class jar |
Java | El más robusto de los clásicos con Java moderno | Hay desarrollo pero no hay publicación desde 2021: se usa un binario de hace cinco años o se compila de master |
| Vineflower | Apache-2.0 | Java | Activo · v1.12.0 (29-04-2026) | class jar |
Java | Sucesor real de Fernflower; la mejor calidad de salida del grupo | No entiende Android: ni recursos, ni Kotlin metadata, ni manifiesto |
| Procyon | Otra | Java | Parado · v0.6.0 (21-02-2022) · push 12-06-2022 | class jar |
Java | Tratamiento propio de ciertas construcciones | Cuatro años sin correcciones. Tasa de fallo del 4,7 % de media ponderada |
| Bytecode Viewer | GPL-3.0 | Java | Activo · v2.13.2 (01-01-2026) · push 17-07-2026 | jar apk |
Java (varios decompiladores a la vez) | Ejecuta varios decompiladores en paralelo y los muestra comparados | GUI sin modo desatendido. GPL-3.0 condiciona su integración |
| JEB | Comercial | Java | Activo · v5.36 (enero 2026) | apk dex + binarios nativos |
Java + pseudo-C | Decompilador Dalvik propio, más decompiladores nativos, en un solo producto | Cerrado y de pago. No auditable, no reproducible sin licencia |
2.2 Desensamblar y editar
| Herramienta | Licencia | Lenguaje | Estado | Entrada | Salida | Fortaleza | Punto ciego |
|---|---|---|---|---|---|---|---|
baksmali / smali (google/smali) |
BSD-3-Clause + Apache-2.0 | Java | Repo vivo (push 14-07-2026) · última release 3.0.6 (08-05-2024) | dex |
smali, y de vuelta |
Fidelidad absoluta y round-trip garantizado. dexlib2 es la implementación de referencia del formato |
Dos años sin release. No toca recursos ni contenedor |
crate smali (azw413) |
GPL-3.0-only + comercial | Rust | Activo · v0.6.2 (05-08-2026) | smali dex |
smali dex |
El único de su clase en Rust, autocontenido y sin Java | La GPL-3.0 contamina cualquier motor que lo enlace. 23 ★ y un solo autor: bus factor de 1 |
| apktool | Apache-2.0 | Java | Activo · v3.0.3 (20-07-2026) · push 11-08-2026 | apk |
smali + res/ + apktool.yml |
Catorce años, todo el ecosistema de GUI encima, gestión de frameworks de fabricante | Depende de aapt2 para reconstruir, y de ahí sale la mayoría de sus fallos de reempaquetado. No firma |
| APKEditor | Apache-2.0 | Java | Activo · V1.4.9 (19-05-2026) · push 19-05-2026 | apk xapk apks apkm + directorio |
apk smali json xml |
Fusiona splits sin aapt2. Único del lote con CLI real. refactor deofusca recursos |
No firma ni alinea, así que el flujo no se cierra. No decompila a Java. Issues #211 y #213 abiertas desde 2025 sin respuesta |
| ARSCLib | Apache-2.0 | Java | Activo · push 01-07-2026 | arsc AXML |
arsc AXML |
Lee y escribe los binarios de recursos sin aapt2. Es lo que hace posible APKEditor |
Es una biblioteca, no una herramienta. Mismo autor que APKEditor: bus factor compartido |
2.3 Empaquetar, firmar e instalar
| Herramienta | Licencia | Lenguaje | Estado | Entrada | Salida | Fortaleza | Punto ciego |
|---|---|---|---|---|---|---|---|
aapt2 |
Apache-2.0 (AOSP) | C++ | Activo (Google) · 2.20-15087165 | Fuentes de recursos · apk |
arsc apk · volcados |
La autoridad sobre el formato. dump es el mejor inspector rápido que hay |
Compila, no reconstruye. Regenera en vez de editar, y rechaza lo que un APK real sí contiene |
bundletool |
Apache-2.0 | Java | Activo · v1.18.3 (15-12-2025) | aab apks |
apks apk |
El único que entiende AAB y la selección de splits por dispositivo |
No edita nada. get-device-spec e install-apks exigen adb y dispositivo |
apksigner |
Apache-2.0 (AOSP) | Java | Activo · 0.9 | apk |
apk firmado + .idsig |
La autoridad sobre la firma. El oráculo contra el que se valida todo lo demás | No construye nada. verify informa por rango de SDK, no por esquema presente, y eso induce a error |
zipalign |
Apache-2.0 (AOSP) | C++ | Activo | apk |
apk alineado |
Trivial de usar, -c es seguro siempre |
Destruye la firma si se ejecuta después de firmar |
keytool |
JDK | Java | Activo · OpenJDK 21 | — | Keystore PKCS#12 / JKS |
Viene con el JDK; genera y lista claves | No sabe nada de Android. Su salida está localizada al idioma del sistema: no se analiza con scripts |
| uber-apk-signer | Apache-2.0 | Java | Sin mantenimiento · v1.3.0 (16-02-2023) · push 30-10-2023 | apk |
apk firmado y alineado |
Encadena zipalign + apksigner + verificación en una orden, por lotes |
Tres años parado. Capa de conveniencia sobre dos herramientas oficiales que sí se mantienen |
2.4 Analizar
| Herramienta | Licencia | Lenguaje | Estado | Entrada | Salida | Fortaleza | Punto ciego |
|---|---|---|---|---|---|---|---|
| Ghidra | Apache-2.0 | Java | Muy activo · 12.1.2 (05-06-2026) · push 10-08-2026 | ELF so · apk dex cdex odex |
Desensamblado + pseudo-C | Decompilador nativo de calidad profesional, gratis y auditable | Multidex sin resolver (issue #4276). Para leer Java, jadx es mejor |
| radare2 | LGPLv3 | C | Muy activo · push 12-08-2026 | Binarios | Análisis, scripts | Scriptable de arriba abajo; natural en lotes y en CI | Curva pronunciada. Licencia mixta por plugin: zona gris corporativa |
| rizin | LGPL-3.0 | C | Muy activo · push 12-08-2026 | Binarios | Análisis, scripts | Fork con API estable y mejor documentación | Menos tracción y menos plugins que el original |
| Cutter | GPL-3.0 | C++ | Activo · push 03-08-2026 | Binarios | Análisis interactivo | La puerta de entrada a rizin sin línea de órdenes | GUI: no automatiza |
| IDA Pro | Comercial | — | Activo | Binarios | Desensamblado + pseudo-C | Decompiladores de referencia y depuración remota muy pulida | Precio, y suscripción desde octubre de 2024, sin perpetua |
| MobSF | GPL-3.0 | Python/JS | Muy activo · v4.5.2 (10-08-2026) | apk ipa appx + fuentes |
Informe navegable | Marca el suelo en cero: informe estático completo, gratis, en una pasada | No reporta el requisito de 16 KB. No fusiona splits, no correlaciona con la política de Play, no informa de cobertura de decompilación |
| APKiD | Dual GPL / comercial | YARA | Activo · v3.1.0 (09-04-2026) · push 27-07-2026 | apk dex so |
Identificación | Dice cómo se construyó el APK: compilador, ofuscador, packer, anti-análisis |
Solo identifica. No analiza ni extrae nada |
| semgrep | LGPL-2.1 | OCaml | Muy activo · push 12-08-2026 | Código fuente | Hallazgos | Reglas que se escriben con la sintaxis del lenguaje analizado | Necesita fuente, y el fuente decompilado es aproximado y no compila |
| Frida | wxWindows 3.1 | — | Muy activo · v17.17.0 (05-08-2026) | Proceso en ejecución | Trazas, hooks | Lo único que ve el comportamiento real | Detectable, y exige dispositivo. Deja de ser oráculo fiable si la app lo detecta |
| objection | GPL-3.0 | Python | Activo · v1.12.5 (02-06-2026) | Proceso en ejecución | Consola interactiva | El trabajo rutinario de auditoría sin escribir JavaScript | Hereda todo lo de Frida, y una capa más de indirección |
3. Árbol de decisión
¿QUÉ QUIERES HACER?
│
┌───────────────┬───────────┼───────────┬──────────────┬─────────────┐
▼ ▼ ▼ ▼ ▼ ▼
LEER EL MODIFICAR Y FUSIONAR AUDITAR AUTOMATIZAR SABER QUÉ
CÓDIGO REINSTALAR SPLITS SEGURIDAD EN CI ES ESTO
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
«Quiero leer el código»
¿el código está en DEX o en lib/*.so?
│
├── DEX ──▶ jadx (o jadx-gui si es exploratorio)
│ │
│ └── ¿"JADX ERROR" en lo que me importa?
│ ├── sí ──▶ dex2jar + Vineflower (funciona en ~96 % de esos casos)
│ │ └── ¿tampoco? ──▶ baksmali: el smali nunca falla
│ └── no ──▶ listo
│
└── .so ──▶ Ghidra (radare2/rizin si son muchos y hay que automatizar)
«Quiero modificar y reinstalar»
¿qué toco?
│
├── solo código ──▶ apktool d -r ──▶ editar smali ──▶ apktool b
│
├── solo recursos ─▶ APKEditor decode -t xml ──▶ editar ──▶ APKEditor build
│
└── ambos ────────▶ APKEditor decode ──▶ editar ──▶ APKEditor build
(apktool si necesitas frameworks de fabricante)
│
▼
zipalign -p -f 4 ← SIEMPRE antes de firmar
│
▼
apksigner sign --v2 --v3 ← v1 sola NO se instala
│
▼
apksigner verify --verbose
│
▼
adb install -r
«Quiero fusionar splits»
.xapk / .apks / .apkm / carpeta de splits
│
├── ¿es un AAB? ──▶ bundletool build-apks + extract-apks
│
└── es un contenedor de splits ──▶ APKEditor merge
│
▼
zipalign ──▶ apksigner sign
(APKEditor no firma: hay que encadenar)
«Quiero auditar seguridad»
1. APKiD ¿packer? ¿ofuscador? ¿reempaquetado?
│
├── hay packer ──▶ PARA. Lo que decompiles es el stub, no la app.
│ Detectar e informar; desempaquetar está fuera de alcance.
│
▼
2. aapt2 dump badging + MobSF manifiesto, permisos, firma, red, secretos
│
▼
3. jadx --no-res + semgrep el código — sabiendo que puede faltar un 5 %
│
▼
4. Ghidra sobre lib/*.so si la lógica se movió al nativo
│
▼
5. Frida solo si lo anterior no bastó, y con autorización
«Quiero automatizar en CI»
Herramientas con modo desatendido real, verificado:
aapt2 · apksigner · zipalign · bundletool · jadx · apktool · APKEditor
APKiD · semgrep · radare2 / rizin
Herramientas que NO sirven:
Bytecode Viewer · Cutter · jadx-gui · MobSF (es servidor web, se usa por su API)
y once de las trece herramientas censadas en la sección 4
«Quiero saber qué es este fichero»
aapt2 dump packagename ─── el nombre del fichero miente
aapt2 dump badging ─── versión, SDK, permisos
unzip -l | grep toc.pb ─── ¿APK Set genuino o zip plano de splits?
APKiD ─── cómo se construyó
4. La tesis del ecosistema
Hasta aquí, la selección práctica. Lo que sigue es el hallazgo estructural, y se sostiene con
datos de dos procedencias: el censo de las trece herramientas de manipulación de APK que
enumera la sección 4.3 —las que se dedican a desempaquetar, editar y reempaquetar, contadas una
a una—, y la verificación de estado hecha para este bloque.
4.1 Quién fusiona splits y quién decompila a Java
De las trece herramientas censadas, la matriz de funcionalidades da esto:
| Herramientas | Cuáles | |
|---|---|---|
| Fusionan splits | 3 de 13 | APKEditor · APKToolGUI (AndnixSH) · APK Toolkit |
| Decompilan a Java | 2 de 13 | APKLab · Apk Studio |
| Hacen las dos cosas | 0 de 13 | — |
Cero. Y no es casualidad ni descuido: es una consecuencia de cómo están construidas. Las que
fusionan splits lo hacen con APKEditor o con su biblioteca ARSCLib, y APKEditor no decompila a
Java, solo a smali. Las que decompilan a Java lo hacen empotrando jadx, y jadx no fusiona
splits. Cada una hereda el punto ciego del motor que empaqueta.
La consecuencia operativa es directa y afecta al caso de uso más común de 2026: para un APK
moderno descargado como XAPK o APKS, hay que encadenar dos herramientas. No existe la
opción de elegir una.
La tabla maestra de la sección 2 confirma que el hueco no se ha cerrado desde entonces. jadx —sección 2.1— no fusiona; APKEditor —sección 2.2— no decompila a Java. Son las dos herramientas mejor mantenidas de sus respectivas categorías y son estrictamente complementarias.
4.2 Cuántas tienen modo desatendido de verdad
El recuento es tajante: APKEditor es el único con CLI real; todo lo demás del lote es GUI o extensión de editor.
Matizado con la columna de procesamiento por lotes de la matriz: APK Multi Tool y Tickle My
Android tienen batch genuino, pero son consolas de texto con menú numerado —Windows, scripts
.bat, la de 2016 y la de 2015 respectivamente— y ninguna de las dos está viva. Modo desatendido
utilizable hoy, en un pipeline, con códigos de salida: uno de trece.
Y ese uno tampoco cierra el ciclo, porque no firma.
4.3 Cuántas están vivas
| Grupo | Nº | Situación |
|---|---|---|
| A — Vigentes en 2026 | 5 | APKEditor · APKToolGUI (AndnixSH) · APKLab · Apk Studio · APK Toolkit |
| B — Abandono reciente | 3 | APK Editor Studio · INZ APKTool 2.4.0 Beta · INZ APKTool 2.0 |
| C — Obsoletas | 5 | APKToolGUI (INF1NUM) · APK Tools · APK Multi Tool · Tickle My Android · ApktoolFX |
Ocho de las trece llevan entre dos y nueve años sin una línea de código. Y no es un matiz
académico: cinco de ellas firman con esquema v1 o usan un apktool anterior a 2017, así que
el APK que producen no se instala en un Android moderno aunque la decompilación salga
bien. La sección 3.4 de Firma y empaquetado reproduce ese fallo
con salida real: Target SDK version 36 requires a minimum of signature scheme v2.
El reparto de esquemas de firma del lote:
| Esquema | Nº | Consecuencia |
|---|---|---|
Firma moderna (apksigner, v2/v3/v4) |
7 | Se instalan |
Solo v1 (signapk heredado) |
4 | No se instalan en Android 11+ con targetSdk moderno |
| No firman en absoluto | 2 | APKEditor por diseño; ApktoolFX por descuido, lo que rompe su propio flujo |
4.4 La paradoja del mercado
El dato más incómodo del censo:
| Herramienta | Descargas | Estado |
|---|---|---|
| APK Editor Studio | 802.000 | Abandonada desde el 19 de enero de 2025 |
| APKEditor | 454.000 | Activa |
| Apk Studio | 249.000 | Activa, con reservas |
| APKLab | 147.312 instalaciones | Activa |
| APKToolGUI (AndnixSH) | 97.000 | Activa |
La herramienta más descargada del sector es la que está abandonada, y por un margen grande: casi el doble que la siguiente. Su apktool congelado ya falla al reempaquetar aplicaciones modernas, el mantenedor no responde desde hace más de un año y medio, y la rama por defecto de su repositorio es una versión que nunca salió.
Es la base de usuarios más grande y más huérfana del ecosistema. Y explica por qué la métrica de descargas no dice nada sobre si una herramienta funciona hoy.
4.5 El bus factor
Tres de las cinco vivas dependen de una sola persona: APKEditor —mismo autor que ARSCLib, del que depende por completo—, APK Editor Studio y APKToolGUI. Puesto al lado de los grupos B y C de la sección 4.3 —ocho de las trece paradas—, es el riesgo que más pesa sobre el lote.
A lo que hay que añadir, de la verificación de este bloque: el crate smali de azw413 tiene
23 estrellas y un autor, y es la única implementación de su clase en Rust.
4.6 Y una advertencia sobre la cadena de suministro
Cinco de las trece son binarios cerrados distribuidos como ZIP por adjuntos de foro, a menudo
rehospedados por blogs de terceros, y algunas piden explícitamente desactivar el antivirus
antes de instalar. Son herramientas que firman APK.
Los falsos positivos de antivirus son reales y habituales en este tipo de software —APKToolGUI
da 0 de 20 motores en su build actual y su autor lo documenta—, pero la diferencia entre un
falso positivo verificable y un binario anónimo rehospedado es exactamente la auditabilidad. En
cualquier entorno donde importe la trazabilidad de qué firma tus APK, ese patrón es
descalificante.
5. Qué falta en el ecosistema
Sumando el censo de la sección 4 y la verificación de estado de este bloque, los huecos son concretos:
1. Nadie cierra el ciclo en un solo binario. Fusionar splits, decompilar, editar, reconstruir, alinear, firmar y verificar exige hoy encadenar entre tres y cinco herramientas de tres proyectos distintos, con formatos intermedios propios y sin contrato entre ellas.
2. Nadie informa de la cobertura de decompilación. Solo el 21 % de las aplicaciones de Play decompilan sin un solo fallo de método, y los fallos son silenciosos. Nadie te dice qué parte de lo que estás leyendo no es lo que la aplicación hace.
3. Nadie audita el requisito de 16 KB. Desde el 1 de febrero de 2027 Google Play no admite actualizaciones sin él. MobSF ni lo reporta.
4. Nadie correlaciona el manifiesto con la política de Play. Todas leen el targetSdk;
ninguna responde «esto será rechazado y por qué».
5. Nadie genera un SBOM desde el binario. Ninguna de las herramientas del lote produce un
inventario de componentes a partir del APK, y un SBOM derivado del manifiesto miente, porque
los SDK embeben componentes propios.
6. Nadie hace diff semántico entre dos APK. diffuse de Jake Wharton solo mira tamaño,
dex y arsc, y lleva sin release desde febrero de 2024.
7. Nadie deofusca recursos salvo APKEditor. Su verbo refactor es único en el lote.
8. No existe escritor de resources.arsc en Rust. El crate arsc está abandonado desde
2022 y resand es un proyecto personal. Hay cinco visores; ninguno escribe. Y sin escritor de
tabla de recursos no hay editor: hay un visor.
Fuentes
- Censo de las trece herramientas de manipulación de
APK— inventario propio cerrado el 12 de agosto de 2026, con los datos de cada herramienta tomados de su repositorio, su página de descargas y su documentación el 11 y el 12 de agosto de 2026. Las trece están enumeradas una a una en la sección 4.3. De aquí sale íntegra la sección 4: la matriz de funcionalidades con las columnas de merge, Java y batch; la clasificación en grupos A, B y C; el reparto de esquemas de firma; las cifras de descargas; el recuento de cuáles tienen CLI real; y la advertencia sobre la cadena de suministro. - A Large-Scale Empirical Study of Android App Decompilation — Noah Mauthe, Ulf Kargén,
Nahid Shahmehri. SANER 2021. https://www.ida.liu.se/~ulfka17/papers/SANER2021.pdf
Consultado el 12 de agosto de 2026; PDF descargado y extraído con
pdftotext. De aquí salen el 21 % de aplicaciones de Play que decompilan enteras, el 2,9 % de fallos dedex2jar, la media ponderada de fallo de Procyon del 4,733 % y el 96 % de complementariedad entre decompiladores citados en las tablas de la sección 2.1 y en el árbol de decisión. - Verificación de estado de cada herramienta vía la API de GitHub —
https://api.github.com/repos/<org>/<repo>y/releases/latestpara:skylot/jadx,pxb1988/dex2jar,leibnitz27/cfr,Vineflower/vineflower,mstrobel/procyon,Konloch/bytecode-viewer,google/smali,JesusFreke/smali,azw413/smali,iBotPeaches/Apktool,REAndroid/APKEditor,REAndroid/ARSCLib,google/bundletool,patrickfav/uber-apk-signer,NationalSecurityAgency/ghidra,radareorg/radare2,rizinorg/rizin,rizinorg/cutter,MobSF/Mobile-Security-Framework-MobSF,rednaga/APKiD,semgrep/semgrep,frida/fridaysensepost/objection. Consultados todos el 12 de agosto de 2026. De aquí salen todas las columnas de licencia, lenguaje, versión, fecha de release y fecha del último push de la tabla maestra de la sección 2. - crate
smalien crates.io — https://crates.io/api/v1/crates/smali Consultado el 12 de agosto de 2026. De aquí salen la licencia GPL-3.0-only y la versión 0.6.2 del 5 de agosto de 2026 de la fila correspondiente de la sección 2.2. - JEB Decompiler — página oficial de PNF Software — https://www.pnfsoftware.com/jeb/ Consultado el 12 de agosto de 2026. De aquí salen la naturaleza comercial, las ediciones y la versión 5.36 de enero de 2026 de la sección 2.1.
- IDA Pro — página oficial de Hex-Rays — https://hex-rays.com/ida-pro Consultado el 12 de agosto de 2026. De aquí salen el modelo de suscripción y las ediciones de la sección 2.4.
- Ejecuciones locales sobre el corpus y el SDK — realizadas el 12 de agosto de 2026 con
build-tools37.0.0 (aapt22.20-15087165,apksigner0.9,zipalign,d8,dexdump),bundletool1.18.3 y OpenJDK 21.0.10 sobre macOS Darwin 25.5.0. De aquí salen las versiones de las herramientas del SDK de la sección 2.3 y las comprobaciones de comportamiento que sostienen sus puntos ciegos, documentadas con salida real en Firma y empaquetado y en Desempaquetado y reempaquetado. - Documentos de este corpus — Alineación y zipalign
(la fecha del 1 de febrero de 2027 para el requisito de páginas de 16 KB del hueco 3),
Mapa del ecosistema (el estado de
diffusedel hueco 6) y Tabla de recursos (el estado del ecosistema Rust deresources.arscdel hueco 8).