¿Qué es el formato de archivo APK?
Un archivo con la extensión .apk contiene un archivo comprimido con una aplicación, juego o firmware para el sistema Android. Los paquetes APK se basan en el formato de contenedor ZIP/JAR, lo que significa que cualquier herramienta de archivo estándar puede abrir e inspeccionar su contenido. Google Play originalmente imponía un límite de 100 MB en las descargas de .apk, con hasta dos archivos de expansión de hasta 2 GB cada uno para recursos adicionales; desde agosto de 2021, Google Play requiere que las nuevas aplicaciones se publiquen como .AAB (Android App Bundles), que generan APK divididos optimizados para el dispositivo en el momento de la instalación en lugar de enviar un único paquete monolítico.
Estructura del archivo APK
La estructura de los archivos APK se basa en el archivo JAR; pueden contener las siguientes subcarpetas y archivos:
res: con una descripción de los recursos en forma no compilada,lib: contiene fuentes compiladas y bibliotecas de aplicaciones, divididas según diferentes plataformas informáticas (por ejemplo,arm64-v8a,x86_64),META-INF: con archivos que contienen información sobre el paquete, por ejemplo, el archivoMANIFEST.MFo certificados,assets: que contiene varios recursos utilizados por la aplicación,classes.dex: código de bytes Dalvik/ART compilado ejecutado por el entorno de ejecución de Android,AndroidManifest.xml: manifiesto codificado en binario que declara los permisos, componentes y requisitos de SDK de la aplicación,resources.arsc: tabla de recursos precompilada que asigna ID a cadenas, diseños y elementos gráficos.
Los archivos Android Package se utilizan para crear y distribuir programas para plataformas móviles que operan en el sistema Android. El contenido de los archivos .apk se puede descomprimir con la mayoría de los programas de descompresión que admiten la compresión ZIP, o inspeccionarse simplemente cambiando el nombre del archivo a .zip. Para mantener la integridad, los paquetes están protegidos por APK Signature Scheme v2/v3 (y v4 para actualizaciones incrementales), y la instalación se rechaza si la firma no coincide. La instalación de paquetes .apk desde fuera de Play Store no está permitida de forma predeterminada: los usuarios deben habilitar el permiso Instalar aplicaciones desconocidas en la configuración de Android o enviar el paquete a través de adb install app.apk. Las aplicaciones demasiado grandes para un solo .apk pueden distribuirse como .XAPK, que agrupa un APK base con uno o más APK divididos en un solo archivo.
Seguridad y protección
RIESGO: HIGHAPK es el vector número 1 de malware en Android: la carga lateral elude el escaneo de Google Play Protect. Lista de verificación de riesgos para los usuarios: instale solo desde fuentes confiables (Google Play, F-Droid, APKMirror, que verifica las firmas con las del desarrollador), verifique que los permisos solicitados coincidan con el propósito de la aplicación, nunca instale un APK que haya llegado sin solicitarlo a través de chat/SMS (campañas de «smishing») y compare la firma de la aplicación al actualizar. El truco de cambiar el nombre a .zip le permite inspeccionar el contenido antes de instalarlo.
Detalles del formato
en pocas palabrasProgramas que abren archivos APK
Detalles técnicos
especificación profunda| Codificación | Binario |
| Orden de bytes | Little-endian |
| Contenedor | Archivo ZIP (también válido como JAR) |
| Compresión | DEFLATE por entrada; las entradas sensibles a la alineación se almacenan sin comprimir (método STORED) y alineadas con zipalign |
| Firma / integridad | APK Signature Scheme v2/v3 (bloque insertado antes del directorio central ZIP); v4 para actualizaciones incrementales en el dispositivo; instalación rechazada si la firma no coincide |
| Bytes mágicos | 50 4B 03 04 - encabezado de archivo local ZIP estándar «PK» en el desplazamiento 0; se distingue del ZIP simple por la presencia de AndroidManifest.xml y classes.dex |
| Archivos internos | AndroidManifest.xml, classes.dex (+ classes2.dex …), resources.arsc, res/, lib/, assets/, META-INF/ |
| Código de bytes | Dalvik Executable (DEX) en classes.dex: compilado a partir de código fuente Java/Kotlin, ejecutado por ART (Android Runtime) |
| Alineación | zipalign impone un límite de 4 bytes para las entradas sin comprimir; Android 15+ apunta a una alineación de página de 16 KB |
| Formato del manifiesto | XML codificado en binario (AXML) que declara el nombre del paquete, los permisos, los componentes Activity/Service/Provider, minSdkVersion, targetSdkVersion |
| Diseño de biblioteca nativa | Subdirectorio lib/<ABI> por arquitectura: arm64-v8a, armeabi-v7a, x86, x86_64 |
| Tabla de recursos | resources.arsc: archivo binario plano que asigna ID de recursos enteros a cadenas, diseños, elementos gráficos y variantes de configuración |
| Tamaño típico | 2 MB - 1.5 GB; los APK de aplicaciones base suelen tener entre 5 y 100 MB; los juegos con recursos agrupados alcanzan el rango superior |
| Tipo MIME | application/vnd.android.package-archive |
| Plataforma | Android (nativo); ejecutable en Windows, Linux, macOS a través de emuladores (BlueStacks, Android Studio AVD, Waydroid) |
| Lanzado | 2008 (Android 1.0) |
| Última versión | APK Signature Scheme v3 (Android 9, 2018); v4 incremental (Android 11, 2020) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | source.android.com |