Convertir APK a DEX
Extrae classes.dex y los archivos multidex de un APK usando 7-Zip o unzip.
Convierte archivos APK en línea
Todavía no tenemos un conversor en línea específico para APK a DEX, pero puedes convertir archivos APK en línea a estos formatos:
¿Quiere convertir APK a DEX?
Háganoslo saber. Elegimos qué conversiones añadir a continuación según el interés.
Cómo convertir un archivo apk a dex
- Archivos
- Aún sin calificaciones.
Algunas herramientas de análisis de Android aceptan un archivo DEX independiente en lugar de un APK, y extraerlo puede reducir un paquete de aplicación a su bytecode ejecutable para inspeccionarlo o archivarlo. Un APK normalmente ya contiene uno o más archivos DEX, por lo que esta tarea suele consistir en una extracción y no en una conversión de formato.
Qué es el formato APK
Un APK es un paquete de aplicaciones de Android almacenado como un archivo basado en ZIP. Android Studio y las herramientas de compilación de Gradle producen APK que contienen el código de la aplicación, los recursos compilados, el manifiesto, los recursos adicionales, las bibliotecas nativas, los certificados y los metadatos del paquete.
El código ejecutable normalmente se almacena en classes.dex. Las aplicaciones multidex también contienen classes2.dex, classes3.dex y archivos con números superiores. Las canalizaciones de compilación de Android generalmente generan DEX con d8; R8 también puede reducir y optimizar el código. Los proyectos antiguos pueden utilizar dx.
Qué es el formato DEX
DEX, o Dalvik Executable, es bytecode de Android para los entornos de ejecución Dalvik y ART. Un archivo DEX independiente resulta útil para las herramientas que aceptan bytecode sin un APK, para conservar únicamente el código ejecutable o para inspeccionar clases con herramientas como baksmali o JADX.
DEX no es una aplicación instalable y no contiene los recursos, el manifiesto, las bibliotecas nativas, los recursos adicionales ni la información de firma del APK. Tampoco es código fuente Java. JADX puede producir una salida similar a Java para su inspección, pero la descompilación pierde los comentarios y el formato, y es posible que no reconstruya exactamente el flujo de control ni los tipos originales.
Cómo extraer DEX de un APK
- Conserva una copia sin modificar del APK y analiza los archivos desconocidos antes de abrirlos o extraerlos.
- Enumera el contenido del paquete con
unzip -l app.apken Linux o macOS, o abre el APK con 7-Zip en Windows. No es necesario cambiar el nombre de.apka.zip, ya que ambos formatos utilizan un contenedor ZIP. - Extrae todas las entradas que coincidan con
classes*.dex. En un shell, crea un directorio de salida y ejecutamkdir -p dex-output && unzip -j app.apk 'classes*.dex' -d dex-output. En 7-Zip, selecciona las entradas DEX y elige 7-Zip → Extract To. - Verifica que la salida incluya todos los archivos DEX numerados, no solo
classes.dex. Conserva los nombres de archivo originales, porque los archivos multidex representan conjuntamente el bytecode de la aplicación.
7-Zip es una opción práctica para equipos de escritorio con Windows, mientras que la utilidad estándar unzip es suficiente en Linux y macOS. Estas herramientas extraen los archivos existentes sin recompilar ni volver a comprimir el código de la aplicación.
Cuándo es realmente necesaria la recompilación
Si el código DEX se ha editado o generado a partir de smali u otra entrada, utiliza d8 del Android SDK para compilarlo, por ejemplo d8 --output out classes.jar cuando la entrada es un JAR compatible. Reemplazar archivos DEX dentro de un APK es una operación de recompilación, no una simple extracción; el paquete recompilado debe alinearse y firmarse antes de que Android pueda instalarlo. Dex2jar no es la herramienta correcta para convertir APK a DEX: convierte el bytecode DEX en archivos JAR compatibles con Java para su análisis.
Limitaciones de compatibilidad y seguridad
Extraer DEX conserva el bytecode presente en el APK, pero un archivo independiente puede depender de otros archivos DEX, recursos, bibliotecas nativas o clases del paquete. Combinar archivos multidex en uno solo no es una conversión neutra y puede superar los límites de referencias a métodos de DEX o requerir una recompilación con dependencias compatibles y un nivel de API adecuado.
Cambiar cualquier archivo DEX invalida la firma original del APK cuando se recompila el paquete. Un DEX independiente no tiene firma de APK y no se puede instalar por sí solo. Algunos paquetes protegidos o inusuales pueden cargar código adicional durante la ejecución, almacenar código fuera de las entradas habituales classes*.dex o utilizar APK divididos; por lo tanto, extraer las entradas visibles puede no capturar todo el código ejecutable.
Los convertidores de APK a DEX en línea son innecesarios para los paquetes habituales y no son adecuados para archivos propietarios, firmados o que no sean de confianza, porque la carga expone el código de la aplicación y posiblemente secretos integrados. La extracción local con 7-Zip o unzip es más segura y produce directamente los archivos DEX necesarios.
APK vs DEX: comparación de formatos
Cómo se comparan los formatos APK y DEX en las propiedades que más importan para esta conversión.
| Propiedad | .APK Android Package | .DEX Dalvik Executable |
|---|---|---|
| Estándar abierto | No | No |
| Compresión | Ambos | — |
| Tamaño de archivo típico | Medio | Pequeño |
| Se abre en un navegador web | No | No |
| Edición posterior | No editable directamente | No editable directamente |
| Compatibilidad con metadata | Básico | Básico |
| Legible como texto plano | No | No |
| Más adecuado para | Incrustación en aplicaciones | Incrustación en aplicaciones |
| Introducido | 2008 | 2008 |
| Desarrollador | ||
| Tipo MIME | application/vnd.android.package-archive | — |
La información sobre extensiones y tipos de archivo la proporciona File-Extensions.org
La base de datos actualmente no contiene ningún convertidor de archivos apk.