Mapa del ecosistema
1. Por qué hace falta un mapa
Quien llega al dominio se encuentra treinta nombres —jadx, apktool, APKEditor, ARSCLib, baksmali, dex2jar, MobSF, APKiD, JEB— sin ninguna forma evidente de saber cuáles siguen vivos, cuál hace qué y cuál puede usar dentro de un producto. Las listas que circulan por la red no ayudan: mezclan herramientas mantenidas con proyectos que llevan ocho años sin un commit, y casi nunca dicen la licencia.
Este documento pone eso en orden con datos medidos, no con opiniones: repositorio,
licencia exacta, lenguaje, última release, última actividad y concentración de autoría, todo
consultado el 12 de agosto de 2026 contra la API pública de GitHub y las páginas oficiales de
cada proyecto. Los nombres de formato y de concepto que aparecen aquí —AXML,
resources.arsc, DEX, smali, split, packer, mapping.txt— están definidos en el
glosario y explicados en Anatomía de un APK.
De ese ejercicio salen tres conclusiones que conviene adelantar, porque cambian cómo se lee el resto:
- El ecosistema tiene dos mitades con incentivos opuestos. Google construye para el que hace la aplicación; la comunidad, para el que la abre. Ninguna herramienta oficial está pensada para analizar código ajeno, y eso explica los huecos de la sección 5.
- La mitad que importa depende de muy poca gente. Nueve de los proyectos medidos tienen un solo autor por encima del 85 % de los commits, y tres de los más usados llevan más de un año sin una sola línea nueva (sección 4).
- La licencia decide la arquitectura, no el marketing. Que jadx sea Apache-2.0 y el crate
smalisea GPL-3.0-only es la diferencia entre embeber y aislar en un subproceso (sección 6).
2. Las tres familias
2.1 Google y AOSP: el instrumental del que construye
Todo lo que hace falta para producir un APK lo publica Google, está en el SDK y funciona. Son las mismas herramientas que se han ejecutado en la sección 2.6 de Anatomía de un APK.
| Herramienta | Qué hace | Dónde vive |
|---|---|---|
aapt2 |
Compila res/ y el manifiesto a resources.arsc y AXML |
AOSP frameworks/base/tools/aapt2 + Maven |
D8 |
Bytecode JVM → DEX |
r8.googlesource.com/r8 |
R8 |
D8 + shrinking, optimización y ofuscación. Produce mapping.txt |
El mismo repositorio |
retrace |
Aplica mapping.txt en sentido inverso sobre trazas de pila |
Dentro de R8 |
apksig / apksigner |
Firma y verificación v1 a v4 | AOSP tools/apksig |
zipalign |
Alineación de entradas stored a 4 bytes y 16 KiB |
AOSP build/tools/zipalign |
bundletool |
AAB → APK Set, generación de splits e instalación |
github.com/google/bundletool |
dexdump |
Volcado de la estructura y el bytecode de un DEX |
AOSP art/dexdump |
smali / baksmali |
Ensamblador y desensamblador DEX ↔ texto |
github.com/google/smali |
Dos matices que la versión corta de esta lista suele perder.
No todas son Apache-2.0. D8 y R8 son BSD-3-Clause («Copyright (c) 2016, the R8
project authors»), y smali/baksmali es BSD-3-Clause de Ben Gruver: Google adoptó el
proyecto pero no lo relicenció. apksig, bundletool, aapt2, zipalign y dexdump sí son
Apache-2.0. Para embeber, la diferencia importa poco —ambas familias son permisivas— pero para
atribuir, no: BSD-3-Clause obliga a reproducir el aviso de copyright y Apache-2.0 añade la
concesión de patentes y la obligación de señalar los cambios.
Y todas tienen el mismo sesgo: están hechas para el desarrollador que tiene el código
fuente delante. aapt2 compila pero no descompila una tabla de recursos a un árbol res/
editable; apksigner firma y verifica pero no diagnostica por qué falló; bundletool genera
splits pero no los fusiona. Google no publica ninguna herramienta para abrir una aplicación
ajena, y esa ausencia es la razón de existir de la familia siguiente.
2.2 La comunidad: el instrumental del que analiza
Aquí está todo lo que Google no hace. Por función:
| Función | Proyectos |
|---|---|
DEX → Java |
jadx (directo), dex2jar + Vineflower / CFR (en dos pasos), Bytecode Viewer (los agrupa) |
| Desempaquetar y reempaquetar | Apktool (vía aapt2), APKEditor (motor propio) |
Leer y escribir resources.arsc sin aapt2 |
ARSCLib |
| Fusionar splits | APKEditor |
Identificar compilador, ofuscador y packer |
APKiD |
| Escaneo estático y dinámico completo | MobSF |
| Análisis de código nativo | Ghidra, radare2 |
| Instrumentación dinámica | Frida |
| Firmar sin el SDK | uber-apk-signer |
| Comparar dos APK | diffuse |
Tres cosas que conviene saber de esta familia antes de mirar la tabla de la sección 3.
No hay redundancia. Para casi cada función hay un proyecto de referencia y ninguna
alternativa comparable. Solo la decompilación a Java tiene dos rutas de verdad, y la segunda
—dex2jar más un decompilador de Java— depende de un proyecto sin commits desde julio de 2024.
Están encadenados. APKEditor es una interfaz de línea de órdenes sobre ARSCLib, y ambos son del mismo autor. APKLab orquesta Apktool, jadx y uber-apk-signer. Apk Studio orquesta Apktool y jadx. Un fallo en Apktool sale simultáneamente en cuatro herramientas.
Ninguna cierra el ciclo. Es la conclusión que la sección 5 desarrolla con datos.
2.3 Comercial
| Producto | Fabricante | Qué es |
|---|---|---|
| JEB | PNF Software | Plataforma de ingeniería inversa con decompilador Dalvik propio, depurador y API de scripting. Su argumento frente a jadx es la resistencia a la ofuscación: «auto-decrypt contents, unreflect API calls, and clean-up many types of obfuscated code» |
| IDA Pro | Hex-Rays | Desensamblador y decompilador general. En Android se usa sobre el código nativo, no sobre el DEX |
| DexGuard | Guardsquare | Protector de Android: el hermano de pago de ProGuard. Cifrado de strings y clases, ofuscación de flujo de control, comprobaciones de integridad |
| DexProtector | Licel | Protector con obfuscación, cifrado y virtualización, más RASP y atestación de dispositivo. Versión publicada en su web el día de la consulta: 16.1.31 |
| Virbox | 深盾科技 (SenseShield, China) | Familia de protección con Virbox Protector y un módulo de Android 应用加固 (hardening de APK). Representa el mercado chino de packers, donde la penetración es un orden de magnitud mayor que en Play |
Los dos primeros son herramientas para el analista; los tres últimos son herramientas contra el analista, y aparecen en este corpus porque hay que saber identificarlas. Ver Ofuscadores comerciales y Packers y protectores.
Precios verificados. PNF Software publica los suyos: JEB Android 1.200 $ por usuario y año, JEB Pro 2.000 $, JEB Pro Floating 4.000 $ por asiento y JEB Pro OEM 8.000 $ por servidor y año. ⚠️ sin verificar: los precios de IDA Pro, DexGuard, DexProtector y Virbox no son públicos —Hex-Rays sirve su tabla por JavaScript y los otros tres piden contacto comercial—, así que este documento no da ninguna cifra para ellos.
3. Tabla maestra verificada
3.1 Cómo se ha medido
- Licencia, lenguaje, fecha del último
push, estado de archivado y número de issues abiertas: endpointGET /repos/{org}/{repo}de la API de GitHub, consultado el 12 de agosto de 2026. - Última release:
GET /repos/{org}/{repo}/releases/latest. Cuando un proyecto no publica releases, la columna dice—. - Licencias que GitHub clasifica como
NOASSERTION: resueltas leyendo el fichero de licencia del propio repositorio. - Fechas en formato ISO
AAAA-MM-DD.
Tres avisos sobre lo que estos números no dicen. pushed_at marca el último empujón a
cualquier rama, y puede ser un commit de un bot de dependencias: la sección 4 separa las dos
cosas. open_issues_count de la API suma issues y pull requests abiertos, así que la
columna «Issues» es una cota superior. Y las estrellas miden notoriedad, no salud; están en la
tabla porque calibran el tamaño de la comunidad, no porque signifiquen que algo funcione.
3.2 Google y AOSP
| Proyecto | Quién | Licencia | Lenguaje | Versión estable | Última actividad | Posee |
|---|---|---|---|---|---|---|
aapt2 |
Google / AOSP | Apache-2.0 | C++ | 9.3.1-15703166 (Maven) |
2026-08-06 (Maven) | resources.arsc, AXML (escritura) |
D8 / R8 |
BSD-3-Clause | Java | 9.3.17 (Maven) |
2026-08-12 (Maven) | DEX (escritura), mapping.txt |
|
apksig / apksigner |
Google / AOSP | Apache-2.0 | Java | 9.3.1 (Maven) |
2026-08-06 (Maven) | Firma v1 a v4 |
zipalign |
Google / AOSP | Apache-2.0 | C++ | build-tools 37.0.0 | — | Alineación del ZIP |
bundletool |
Apache-2.0 | Java | 1.18.3 (2025-12-15) |
2025-12-15 | AAB, APK Set, splits |
|
smali / baksmali |
Google (fork de Ben Gruver) | BSD-3-Clause | Java | 3.0.6 (2024-05-08) |
2026-07-14 | DEX ↔ smali |
dexdump |
Google / AOSP | Apache-2.0 | C++ | build-tools 37.0.0 | — | Volcado de DEX |
zipalign y dexdump no tienen release propia: se versionan con las build-tools. Las
fechas «(Maven)» son la de lastUpdated del maven-metadata.xml del artefacto, que es lo más
cercano a una fecha de publicación que expone maven.google.com.
3.3 Comunidad
| Proyecto | Quién mantiene | Licencia | Lenguaje | Última release | Último push | ★ | Issues | Posee |
|---|---|---|---|---|---|---|---|---|
| jadx | skylot (Skylot) | Apache-2.0 | Java | v1.5.6 · 2026-07-10 |
2026-08-05 | 50.030 | 441 | DEX → Java |
| Apktool | iBotPeaches (Connor Tumbleson) | Apache-2.0 | Java | v3.0.3 · 2026-07-20 |
2026-08-11 | 25.265 | 77 | Desempaquetado y reempaquetado |
| ARSCLib | REAndroid | Apache-2.0 | Java | V1.4.0 · 2026-07-01 |
2026-07-01 | 402 | 18 | resources.arsc, AXML |
| APKEditor | REAndroid | Apache-2.0 | Java | V1.4.9 · 2026-05-19 |
2026-05-19 | 2.269 | 36 | Merge de splits, refactor |
| Vineflower | jaskarth y equipo | Apache-2.0 | Java | 1.12.0 · 2026-04-29 |
2026-07-11 | 2.299 | 97 | Bytecode JVM → Java |
| CFR | leibnitz27 (Lee Benfield) | MIT | Java | 0.152 · 2021-12-11 |
2026-06-04 | 2.657 | 150 | Bytecode JVM → Java |
| dex2jar | pxb1988 (Panxiaobo) | Apache-2.0 | Java | v2.4 · 2023-10-03 |
2024-07-21 | 13.132 | 379 | DEX → .jar |
| APKiD | rednaga (enovella, CalebFenton, AbhiTheModder) | GPL-3.0 o comercial | Python + YARA | v3.1.0 · 2026-04-09 |
2026-07-27 | 2.553 | 84 | Huellas de compilador y packer |
| MobSF | ajinabraham (Ajin Abraham) | GPL-3.0 | Python | v4.5.2 · 2026-08-10 |
2026-08-10 | 21.587 | 19 | Escaneo estático y dinámico |
| Bytecode Viewer | Konloch | GPL-3.0 | Java | v2.13.2 · 2026-01-01 |
2026-07-17 | 15.590 | 103 | Agregador de decompiladores |
| uber-apk-signer | patrickfav (Patrick Favre-Bulle) | Apache-2.0 | Java | v1.3.0 · 2023-02-16 |
2023-10-30 | 2.703 | 11 | Firma por lotes |
| diffuse | JakeWharton | Apache-2.0 | Kotlin | 0.3.0 · 2024-02-21 |
2026-08-07 | 2.187 | 25 | Diff de tamaño entre APK |
| ProGuard | Guardsquare | GPL-2.0 | Java | v7.9.1 · 2026-04-09 |
2026-08-07 | 3.633 | 179 | Shrinking y ofuscación, mapping.txt |
| Ghidra | NSA | Apache-2.0 | Java | 12.1.2 · 2026-06-05 |
2026-08-10 | 72.258 | 1.913 | Análisis de código nativo |
| radare2 | radareorg (pancake) | LGPL-3.0 y otras | C | 6.2.0 · 2026-08-07 |
2026-08-12 | 24.557 | 822 | Análisis de código nativo |
| Frida | frida (oleavr) | wxWindows Library Licence 3.1 | C / Vala | 17.17.0 · 2026-08-05 |
2026-08-11 | 21.604 | 1.956 | Instrumentación dinámica |
| APKLab | surendrajat | AGPL-3.0 | TypeScript | — | 2026-07-16 | 3.942 | 24 | Orquestador en VS Code |
| Apk Studio | vaibhavpandeyvpz | LGPL-3.0 | C++ / Qt | v6.3.0 · 2026-01-05 |
2026-01-05 | 4.599 | 3 | IDE de escritorio |
| APKToolGUI | AndnixSH | Unlicense | C# | v3.4.0.0 · 2026-06-04 |
2026-06-04 | 1.361 | 1 | GUI de Windows |
| APK Editor Studio | kefir500 | GPL-3.0 | C++ / Qt | v1.7.2 · 2025-01-19 |
2025-01-19 | 1.642 | 55 | GUI de metadatos |
| smali (crate de Rust) | azw413 | GPL-3.0-only | Rust | — | 2026-08-05 | 23 | 0 | DEX ↔ smali en Rust |
| JesusFreke/smali | — | BSD-3-Clause | Java | — | 2024-01-17 | 6.631 | 143 | Archivado. Sucedido por google/smali |
| Obfuscapk | ClaudiuGeorgiu | MIT | Python | v1.3.0 · 2022-01-06 |
2024-07-27 | 1.268 | 0 | Archivado. Ofuscador de investigación |
| enjarify | Google (Storyyeller) | Apache-2.0 | Python | — | 2021-11-07 | 953 | 8 | DEX → .jar. Sin mantenimiento |
| ClassyShark | Apache-2.0 | Java | 8.2 · 2018-07-25 |
2023-05-19 | 7.562 | 41 | Archivado. Visor de DEX |
Cuatro lecturas inmediatas de esa tabla:
- CFR lleva casi cinco años sin release (
0.152, diciembre de 2021) pero recibió commits en junio de 2026. Es el caso que demuestra que mirar solo la fecha de release engaña, y también al revés. - dex2jar y uber-apk-signer están congelados. Uno es la mitad de la ruta alternativa de decompilación; el otro, el firmador que embeben APKLab y Apk Studio.
- APKEditor y ARSCLib son el mismo autor. Es el único camino del ecosistema para fusionar splits, y depende de una persona.
- Cuatro proyectos están formalmente archivados —
JesusFreke/smali, Obfuscapk, ClassyShark— o inactivos de hecho —enjarify—, y los tres primeros aún aparecen como recomendación en listas y tutoriales que circulan hoy.
4. Bus factor y salud del ecosistema
Es la sección con más valor de este documento, y la que sostiene su tesis más incómoda: el bus factor es lo que ha matado a buena parte de las herramientas que aparecen en este mapa.
4.1 La medida
Tres números por proyecto, todos del endpoint de contribuidores y del listado de commits de la API de GitHub, consultados el 12 de agosto de 2026:
- Concentración histórica: porcentaje de commits del autor principal sobre el total de todos los contribuidores del repositorio.
- Commits en los últimos 12 meses: desde el 12 de agosto de 2025, sobre la rama por defecto.
- Autores humanos en esos 12 meses: cuántas personas distintas han hecho al menos un
commit. Los bots se descuentan, porque un repositorio con 116 commits de
renovate[bot]y 5 de su autor no está más vivo que uno con 5 commits.
4.2 La tabla
| Proyecto | Autor principal | Su cuota histórica | Commits 12 m | Autores humanos 12 m |
|---|---|---|---|---|
| APK Editor Studio | kefir500 | 100 % | 0 | 0 |
| dex2jar | pxb1988 | 92 % | 0 | 0 |
| uber-apk-signer | patrickfav | 95 % | 0 | 0 |
| ARSCLib | REAndroid | 97 % | 95 | 2 |
| APKEditor | REAndroid | 93 % | 24 | 3 |
| CFR | leibnitz27 | 94 % | 84 | 4 |
| APKLab | surendrajat | 87 % | 57 | 3 |
| APKToolGUI | AndnixSH | 85 % | 38 | 3 |
| jadx | skylot | 74 % | 191 | 31 |
| Bytecode Viewer | Konloch | 73 % | 22 | 3 |
| Apktool | iBotPeaches | 66 % | 100 | 8 |
| Apk Studio | vaibhavpandeyvpz | 63 % | 14 | 2 |
| MobSF | ajinabraham | 62 % | 27 | 12 |
| Vineflower | jaskarth | 47 % | 153 | 12 |
| APKiD | enovella | 38 % | 26 | 4 |
| diffuse | JakeWharton | 49 % | 135 (116 de renovate[bot]) |
3 |
| google/smali | JesusFreke (histórico) | 87 % | 16 | 2 |
| bundletool | plecesne | 35 % | 2 | 2 |
4.3 Qué dice, leída de arriba abajo
Tres proyectos están muertos y aún se recomiendan. APK Editor Studio, dex2jar y uber-apk-signer tienen cero commits en doce meses. Y los tres son casos distintos de lo mismo:
- APK Editor Studio lleva desde enero de 2025 sin un commit, con su rama por
defecto llamada
1.8.0, una versión que nunca salió. Un único autor, con el 100 % de los commits. Además embebe Apktool en vez de descargarlo, así que sus usuarios están anclados a una versión congelada que ya falla al reempaquetar aplicaciones modernas. - dex2jar tiene 13.132 estrellas, 379 issues abiertas y ningún commit desde julio de 2024.
Es la puerta de entrada de toda la ruta «
DEX→.jar→ decompilador de Java», que sigue siendo la alternativa estándar a jadx. - uber-apk-signer es el firmador que embeben APKLab y Apk Studio. Su última release es de febrero de 2023. Un cambio en los esquemas de firma de Android no llega a sus usuarios.
Los dos proyectos críticos para la fusión de splits son de una sola persona. ARSCLib concentra el 97 % de los commits en REAndroid y tuvo dos autores humanos en un año; APKEditor, el 93 % y tres. Y no son dos proyectos independientes: APKEditor está construido sobre ARSCLib y ambos son del mismo autor, así que en la práctica es un bus factor de 1 para la única herramienta del ecosistema que fusiona splits. La app de Android más usada para des-splitear, AntiSplit-M, también está construida sobre ARSCLib. Es una dependencia de tres niveles sobre una persona.
Los proyectos sanos comparten un patrón. jadx (31 autores humanos en un año), Vineflower (12), MobSF (12) y Apktool (8) tienen una comunidad real por debajo del mantenedor principal. No es casualidad que sean también los que tienen gobernanza visible: jadx y MobSF publican código de conducta y guía de contribución; Apktool, guía de contribución. Ninguno de los tres proyectos muertos tenía nada de eso. Matiz honesto: en MobSF, once de esos doce autores aportaron un solo commit en todo el año, así que la anchura de la base es menor de lo que parece; en Vineflower y en jadx la carga sí está repartida de verdad.
Los números altos de commits no siempre son vida. diffuse acumula 135 commits en doce
meses, de los que 116 son de renovate[bot] y 5 de su autor. Su última release es de febrero
de 2024. El repositorio se mantiene al día en dependencias mientras el producto no avanza; y
un observador que solo mire pushed_at lo clasificaría como activo.
Y hay un caso de sucesión bien hecha, que conviene señalar porque es el único: cuando Ben
Gruver dejó smali/baksmali, Google adoptó el proyecto en google/smali conservando la
licencia BSD-3-Clause original, y el repositorio de origen se archivó apuntando al nuevo. Es
lento —16 commits en doce meses, y la última release es de mayo de 2024— pero está vivo y tiene
respaldo institucional.
4.4 Qué pasa cuando uno muere
No desaparece de golpe: se degrada en cuatro fases, y reconocerlas ahorra tiempo.
- Las issues dejan de responderse y siguen abriéndose. Es la primera señal, y es visible: 379 issues abiertas en dex2jar, 441 en jadx —que sí responde—, 55 en APK Editor Studio.
- Las dependencias se congelan. El proyecto sigue funcionando pero con la versión de
Apktool, de
aapt2o del SDK que tenía el día que se paró. - Empieza a fallar sobre entradas nuevas. Un
targetSdknuevo, un esquema de firma nuevo, un formato de contenedor nuevo. El usuario lo vive como «esta herramienta ya no funciona con esta app», sin saber por qué. - Alguien forkea, o nadie. Lo primero pasó con APKToolGUI, cuyo fork de AndnixSH desplazó al original y es el que sigue publicando releases (sección 3.3). Lo segundo es lo normal.
La mitigación conocida es aburrida y funciona: CI pública, gobernanza abierta y no embeber los motores externos, sino descargarlos. APKLab hace lo último y por eso hereda las correcciones de Apktool y jadx sin re-empaquetarlas; APK Editor Studio hace lo contrario y por eso arrastró a sus usuarios a un Apktool congelado.
5. Los huecos del ecosistema
Cruzar las funciones de la sección 2.2 con la tabla de la sección 3 lleva a una conclusión incómoda: ninguna herramienta cierra el ciclo completo.
5.1 Quién fusiona y quién decompila
| Fusiona splits | Decompila a Java | Firma con esquema moderno | |
|---|---|---|---|
| APKEditor | ✅ | ❌ (solo smali) |
❌ (por diseño: es un motor) |
| jadx | ❌ | ✅ | ❌ |
| Apktool | ❌ | ❌ (solo smali) |
❌ |
| APKLab | ❌ | ✅ | ✅ (vía uber-apk-signer) |
| Apk Studio | ❌ | ✅ | ✅ (vía uber-apk-signer) |
| APKToolGUI | ✅ (vía APKEditor) | ❌ | ✅ (vía apksigner) |
| MobSF | ❌ | ✅ (vía jadx) | ❌ |
La casilla que falta en todas las filas es la misma. Las que unen splits no decompilan a
Java; las que decompilan a Java no unen splits. Para un APK moderno descargado como .xapk
o .apks —que es la forma normal de conseguir una aplicación de Play fuera de Play— hay que
encadenar dos herramientas.
5.2 Interfaz gráfica frente a modo desatendido
Buena parte del instrumental de manipulación son interfaces gráficas o extensiones de editor sin modo desatendido de verdad: APKLab vive dentro de VS Code, Apk Studio es un IDE de escritorio, APKToolGUI es una GUI de Windows y APK Editor Studio una GUI de metadatos (sección 3.3). Eso las descarta para CI, para análisis por lotes y para cualquier flujo automatizado, y deja el trabajo guionizable en los motores que envuelven. Ghidra, radare2, MobSF y APKiD sí tienen modo headless, pero ninguno de los cuatro hace merge, edición ni reempaquetado.
5.3 Lo que no hace nadie
Estos son los huecos que ninguna herramienta del ecosistema cubre, cada uno con lo más cercano que existe:
| Hueco | Lo más cercano que hay |
|---|---|
| Fusionar splits y decompilar a Java en un solo flujo | Encadenar APKEditor y jadx a mano |
| Cobertura de decompilación explícita: «jadx recuperó el 96 % de los métodos, estos 40 fallaron y por qué» | Nada. Los fallos de jadx son por método y silenciosos |
| Auditoría y parcheo de 16 KB sin tener el fuente | Scripts sueltos de AOSP. MobSF no lo reporta |
| Diff semántico entre dos versiones: permisos, componentes, dominios, SDKs | diffuse, que solo mira tamaño, dex y arsc, y no publica release desde febrero de 2024 |
| SBOM desde el binario en CycloneDX o SPDX | Herramientas que lo derivan del build.gradle, no del APK |
Linter de política de Play correlacionando targetSdk con el calendario real |
Todas leen el targetSdk; ninguna lo cruza con la política |
Escritor de resources.arsc en Rust |
Ninguno. El crate arsc está abandonado desde 2022 |
Ese conjunto de casillas vacías es el diagnóstico honesto del ecosistema: los huecos están ahí lo use quien los use, y quien vaya a trabajar con APK se lleva de esta tabla la lista de lo que va a tener que resolver a mano.
6. Licencias y sus consecuencias prácticas
Es un tema que pilla tarde: se elige la herramienta por lo que hace, se construye alrededor, y al ir a distribuir el producto aparece el problema. La regla que lo resume: la licencia no decide si puedes usar algo, decide cómo tienes que integrarlo.
| Familia | Proyectos del ecosistema | Qué permite | Consecuencia práctica |
|---|---|---|---|
| Permisiva — Apache-2.0, MIT, BSD-3-Clause | jadx, Apktool, ARSCLib, APKEditor, dex2jar, Vineflower, CFR, bundletool, apksig, aapt2, D8/R8, smali de Google, Ghidra, diffuse, uber-apk-signer |
Enlazar y redistribuir dentro de un producto cerrado, con atribución | Se puede embeber. Apache-2.0 añade una concesión expresa de patentes y la obligación de señalar los cambios |
| Copyleft débil — LGPL-3.0 | radare2 (con partes GPL), Apk Studio | Enlazar dinámicamente desde un producto cerrado si el usuario puede sustituir la biblioteca | Viable, pero obliga a enlazado dinámico y a publicar los cambios de la propia biblioteca |
| Copyleft fuerte — GPL-2.0, GPL-3.0 | ProGuard, MobSF, Bytecode Viewer, APK Editor Studio, APKiD, crate smali de azw413 |
Enlazar contagia: el producto resultante tiene que distribuirse bajo la misma licencia | Hay que aislarlo en un subproceso. Invocar un binario por línea de órdenes e intercambiar ficheros no es «obra derivada» |
| AGPL-3.0 | APKLab | Como GPL-3.0, y además cubre el uso en red: ofrecerlo como servicio obliga a publicar el fuente | Descarta el SaaS cerrado, no solo la distribución cerrada |
| Sin licencia o ambigua | APKToolGUI (Unlicense elegida por el forkeador sobre un upstream sin licencia), APK Toolkit y las herramientas de foro (ninguna declarada) | Nada, formalmente | Sin licencia no significa dominio público: significa todos los derechos reservados. Zona gris real para uso corporativo |
El caso que hay que entender es el del crate smali. Es un ensamblador y desensamblador
DEX completo escrito en Rust —lo único de su clase— y es GPL-3.0-only con licencia
comercial de pago. Enlazarlo desde un motor con licencia permisiva convierte el motor entero
en GPL-3.0. La salida practicable es usarlo como
binario aislado en proceso separado, con una frontera de licencia limpia. Lo mismo aplica
a jadx aunque su licencia no lo exija, y ahí el motivo es otro: un fallo de memoria en el
subproceso no se lleva la aplicación por delante.
El caso de licencia doble. APKiD se distribuye bajo GPL-3.0 o bajo una licencia
comercial perpetua y sin royalties que permite redistribuir el binario pero prohíbe
redistribuir el fuente. Es el patrón clásico del open core de herramienta de seguridad, y hay
que reconocerlo: la presencia de un LICENSE.GPL junto a un LICENSE.COMMERCIAL en la raíz
del repositorio significa que la opción libre existe pero tiene condiciones.
7. Cómo se financia todo esto
La respuesta corta: casi nada de esto se financia, y por eso la sección 4 sale como sale.
La clasificación siguiente sale de mirar el fichero FUNDING.yml de cada repositorio y el
producto comercial de cada organización, el 12 de agosto de 2026.
| Modelo | Quién | Qué garantiza |
|---|---|---|
| Presupuesto corporativo | aapt2, D8/R8, apksig, zipalign, bundletool, google/smali |
Continuidad mientras Android exista. Y exactamente cero interés en las funciones de análisis |
| Presupuesto institucional | Ghidra (NSA) | Continuidad, con la agenda de su patrocinador |
| Open core | ProGuard → DexGuard (Guardsquare), APKiD (GPL-3.0 o comercial) | El producto libre existe porque alimenta al de pago. La consecuencia es que las funciones más valiosas migran hacia arriba |
| Donaciones declaradas | Apktool (GitHub Sponsors + Buy Me a Coffee), MobSF (GitHub Sponsors + donación directa), Frida (GitHub Sponsors), APK Editor Studio (Patreon, Ko-fi, Liberapay, PayPal) | Nada por sí solas. Complementan, no sostienen |
| Nada | jadx, ARSCLib, APKEditor, Vineflower, CFR, dex2jar, APKLab, ProGuard como repositorio | La disponibilidad del mantenedor y su interés. Cuando uno de los dos se acaba, el proyecto se para |
Dos lecturas incómodas de esa tabla. La primera: jadx —el decompilador de referencia, 50.030 estrellas, presente en MobSF, APKLab, Apk Studio y en la mayoría de los flujos de trabajo del mundo— no tiene fichero de patrocinio, y ARSCLib y APKEditor, de los que depende toda la fusión de splits del ecosistema, tampoco.
La segunda desmonta la solución fácil: APK Editor Studio sí tenía cuatro vías de donación declaradas —Patreon, Ko-fi, Liberapay y PayPal— y murió igual. Las donaciones no compran tiempo de un mantenedor que ya no está; lo que lo habría salvado es lo de la sección 4.4, que es un segundo mantenedor.
A eso se suman tres factores agravantes propios del dominio:
- El suelo de cero. MobSF, jadx, Apktool y Ghidra son gratuitos y buenos. Cualquier producto de pago que intente cobrar por el escaneo estático básico compite contra ellos, y pierde. La monetización viable está en lo que ellos no dan: cumplimiento, ejecución gestionada, trabajo en equipo.
- Los falsos positivos de antivirus. Es el dolor transversal del sector: son herramientas que desempaquetan y firman APK, y los motores de detección las marcan. Varias piden explícitamente desactivar el antivirus antes de instalar, lo que las descalifica en cualquier entorno corporativo y estrecha aún más su base de usuarios de pago.
- La cadena de suministro. Parte del instrumental que circula —las herramientas de foro de la sección 6, sin licencia declarada— son binarios cerrados de autor anónimo distribuidos como ZIP en adjuntos y rehosteados por blogs de terceros. Son herramientas que firman APK. La diferencia entre un falso positivo verificable y un binario anónimo rehosteado es exactamente la auditabilidad.
La conclusión práctica, para quien vaya a apoyarse en algo de este mapa: mira la fecha del último commit y el número de autores humanos antes que las estrellas, y prefiere el proyecto que descarga sus motores al que los embebe. Los dos datos están en las tablas de las secciones 3 y 4, y volverlos a medir cuesta dos llamadas a la API de GitHub.
Fuentes
- API pública de GitHub —
https://api.github.com/repos/{org}/{repo},/releases/latest,/contributors,/commits?since=…,/community/profiley/contents/{fichero}Consultada el 12 de agosto de 2026 para los 28 repositorios de las secciones 3 y 4. De aquí salen íntegras la licencia, el lenguaje, la versión y fecha de la última release, la fecha del últimopush, el estado de archivado, el número de estrellas y de issues abiertas de la sección 3; los porcentajes de concentración y los recuentos de autores de la sección 4; y el contenido de los ficherosFUNDING.ymlde la sección 7. - Fichero
LICENSEde R8 — https://r8.googlesource.com/r8/+/refs/heads/main/LICENSE Consultado el 12 de agosto de 2026. De aquí sale queD8yR8son BSD-3-Clause y no Apache-2.0, corrigiendo la suposición habitual (secciones 2.1 y 3.2). - Fichero
LICENSEde apksig en AOSP — https://android.googlesource.com/platform/tools/apksig/+/refs/heads/main/LICENSE Consultado el 12 de agosto de 2026. Confirma Apache-2.0 paraapksig/apksigner. - Fichero
LICENSEdegoogle/smali— https://github.com/google/smali/blob/master/LICENSE Consultado el 12 de agosto de 2026. De aquí sale la atribución a Ben Gruver y la licencia BSD-3-Clause conservada tras la adopción por Google (secciones 2.1, 3.2 y 4.3). LICENSE.COMMERCIALde APKiD — https://github.com/rednaga/APKiD/blob/master/LICENSE.COMMERCIAL Consultado el 12 de agosto de 2026. De aquí salen los términos de la licencia comercial perpetua y sin royalties que conviven conLICENSE.GPL(secciones 3.3 y 6).- Índice de artefactos de
maven.google.com—com/android/tools/build/gradle,.../aapt2,.../apksigycom/android/tools/r8, ficherosmaven-metadata.xmlConsultados el 12 de agosto de 2026. De aquí salen las versiones estables 9.3.1 de AGP,aapt2yapksig, la 9.3.17 de R8 y sus fechas delastUpdated(sección 3.2). - JEB Decompiler — PNF Software — https://www.pnfsoftware.com/jeb/ y https://www.pnfsoftware.com/jeb/buy Consultados el 12 de agosto de 2026. De aquí salen la descripción del decompilador Dalvik y los cuatro precios de licencia de la sección 2.3.
- IDA Pro — Hex-Rays — https://hex-rays.com/ida-pro y https://hex-rays.com/pricing Consultados el 12 de agosto de 2026. De aquí sale la descripción del producto. La tabla de precios se sirve por JavaScript y no se ha podido leer, de ahí la marca de la sección 2.3.
- DexGuard — Guardsquare — https://www.guardsquare.com/dexguard Consultado el 12 de agosto de 2026. De aquí sale la descripción del producto y su relación con ProGuard.
- DexProtector — Licel — https://licelus.com/products/dexprotector Consultado el 12 de agosto de 2026. De aquí salen las capacidades declaradas —obfuscación, cifrado, virtualización, RASP, atestación— y la versión 16.1.31 (sección 2.3).
- Virbox / 深盾科技 — https://virbox.com/ (redirige a https://lm.virbox.com/)
Consultado el 12 de agosto de 2026. De aquí salen la existencia de
Virbox Protectory del módulo de hardening de APK de Android (sección 2.3).