APK (Android Package Kit) es un formato de archivo comprimido utilizado para distribuir e instalar aplicaciones en Android. Cada aplicación que el usuario descarga de Google Play o instala manualmente es un archivo APK. Según Android Open Source Project, 2026, el formato se basa en el estándar ZIP y contiene código compilado, recursos, un manifiesto y una firma digital.
Puntos clave
APK (Android Package Kit) es un formato de archivo en el que se empaqueta una aplicación Android para su distribución. Técnicamente, APK es un archivo ZIP con una estructura específica que contiene todos los componentes necesarios para que la aplicación funcione en un dispositivo.
El formato APK apareció con la primera versión de Android en 2008. Se basó en el estándar JAR (Java Archive), que a su vez se basa en ZIP. Esta herencia garantizó la compatibilidad con las herramientas de archivo existentes: cualquier archivador abre APK como un ZIP normal.
Google Play es el canal principal de distribución de APK, pero el formato también se utiliza en otros escenarios: instalación directa mediante navegador (sideloading), tiendas corporativas de aplicaciones, pruebas en dispositivos de desarrollador e instalación en emuladores. Según Statista, aproximadamente el 15% de las instalaciones de aplicaciones Android en 2025 se realizan fuera de Google Play.
La estructura interna del APK está estrictamente regulada: cada aplicación debe contener archivos y directorios específicos. La violación de la estructura provoca errores de instalación.
| Archivo/Directorio | Propósito |
|---|---|
| AndroidManifest.xml | Manifiesto de la aplicación: permisos, componentes, versión del SDK |
| classes.dex | Código de bytes DEX compilado (puede haber varios archivos) |
| resources.arsc | Recursos compilados: cadenas, estilos, diseños |
| res/ | Recursos no compilados: imágenes, fuentes, XML |
| lib/ | Bibliotecas nativas (.so) para diferentes arquitecturas de CPU |
| META-INF/ | Metadatos: certificados, listas de archivos, hashes |
El manifiesto es el archivo de configuración central de la aplicación. En forma binaria compilada (no XML legible), contiene el nombre del paquete, la versión, la lista de actividades, servicios, permisos y requisitos del SDK. Sin manifiesto, el sistema no sabe cómo ejecutar la aplicación.
El código fuente en Java o Kotlin se compila en archivos DEX (Dalvik Executable). El archivo principal se llama classes.dex. Si el código de bytes supera el límite de 64K métodos, se crean classes2.dex, classes3.dex, etc.: el mecanismo multidex.
El directorio lib/ contiene bibliotecas C/C++ compiladas para diferentes arquitecturas: armeabi-v7a, arm64-v8a, x86, x86_64. Cada biblioteca tiene la extensión .so (Shared Object). Las aplicaciones modernas generalmente incluyen solo arm64-v8a.
La compilación de APK es un proceso de varias etapas automatizado por el sistema de compilación Gradle y Android Gradle Plugin. Cada etapa transforma los archivos fuente en componentes del archivo final.
El código fuente se compila en código de bytes Java (.class), luego se convierte a DEX mediante la herramienta d8 (anteriormente dx). Los recursos se compilan en formato binario mediante AAPT2. Todos los componentes se empaquetan en un archivo ZIP y se firman con una firma digital.
// build.gradle.kts — configuración básica de compilación de APK
android {
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt")
)
}
}
}
ProGuard o R8 ofuscan el código, eliminan clases y métodos no utilizados, reduciendo el tamaño del APK. Sin ofuscación, el APK contiene nombres de clase completos, lo que facilita la descompilación. R8 también realiza optimización del código de bytes a nivel DEX.
La firma digital es un elemento obligatorio del APK. Android no instala paquetes sin firmar. La firma garantiza que la aplicación no ha sido modificada después de su publicación y determina a quién pertenece el paquete.
v1 (JAR signing) es el esquema original basado en la firma de cada archivo del archivo. Vulnerabilidad: se pueden eliminar archivos de META-INF sin ser detectados. v2 (APK Signature Scheme v2) apareció en Android 7.0: se firma todo el archivo completo, evitando modificaciones. v3 admite rotación de claves y v4 admite instalación incremental.
Google Play exige v2 o superior para todas las aplicaciones nuevas desde agosto de 2021. Se recomienda firmar el APK con los tres esquemas para máxima compatibilidad con diferentes versiones de Android.
En build.gradle se especifican el almacén de claves, la contraseña y el alias. La clave privada se almacena en un repositorio cifrado. Para publicar en Google Play se utiliza App Signing: Google guarda la clave privada y el desarrollador sube el APK firmado.
La instalación de APK se realiza a través del administrador de paquetes del sistema PackageManager. El proceso incluye verificación de firma, análisis del manifiesto, copia de archivos y optimización de DEX mediante dex2oat.
La herramienta ADB (Android Debug Bridge) permite instalar APK directamente desde el ordenador del desarrollador. El comando `adb install app.apk` copia el archivo al dispositivo e inicia la instalación. El indicador -r reinstala la aplicación conservando los datos, el indicador -d permite instalar una versión con versionCode más bajo.
A partir de Android 8.0, el sistema requiere confirmación para la instalación desde fuentes desconocidas para cada aplicación por separado. Android 14 reforzó el control: la instalación de APK a través de tiendas de terceros solo es posible después de un permiso explícito en la configuración. Google Play Protect escanea cada APK durante la instalación en busca de código malicioso.
Para aplicaciones de más de 150 MB, Google Play admite archivos de expansión: paquetes OBB adicionales de hasta 2 GB cada uno. Los archivos OBB no se incluyen en el APK, sino que se descargan por separado después de la instalación. El formato admite dos tipos: main (recursos base) y patch (actualizaciones).
// Verificación de versión de APK mediante PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Version: ${info.versionName}")
En dispositivos con ART (Android Runtime), después de la instalación se inicia la compilación de DEX en código nativo mediante dex2oat. El proceso puede tardar varios segundos y aumenta el tamaño de la aplicación instalada, pero acelera su inicio.
AAB (Android App Bundle) es un formato que Google promueve como alternativa al APK para publicar en Google Play. La diferencia es fundamental: AAB no se instala directamente, sino que sirve como contenedor del cual Google Play genera APK optimizados.
| Parámetro | APK | AAB |
|---|---|---|
| Tamaño de descarga | Archivo completo | Solo componentes necesarios |
| Instalación directa | Sí | No (generación de APK) |
| Distribución | Cualquier canal | Google Play |
| Control de versiones | Versión en manifiesto | Dynamic Delivery |
| Publicación | Google Play + terceros | Google Play |
Google Play exige AAB desde agosto de 2021 para nuevas aplicaciones. Sin embargo, APK sigue siendo el formato principal para la distribución fuera de Google Play: a través de sitios web, tiendas corporativas y pruebas.
Los desarrolladores se encuentran regularmente con problemas al compilar e instalar APK. La mayoría están relacionados con incompatibilidad de versiones, firma o estructura del archivo.
Este error ocurre al intentar instalar un APK con el mismo nombre de paquete pero una firma diferente. Android no permite reinstalar una aplicación con un certificado modificado. La solución es eliminar la versión anterior antes de la instalación.
Si el proyecto supera el límite de 65536 métodos, la compilación falla con un error dex. La solución es habilitar multidex en build.gradle u optimizar las dependencias eliminando bibliotecas no utilizadas.
Google Play limita el tamaño del APK a 150 MB. Para aplicaciones más grandes se utilizan archivos de expansión APK (OBB). Se recomienda reducir el tamaño mediante R8, imágenes WebP y Android App Bundle. Cada megabyte adicional afecta negativamente la conversión de instalación: según Google, cada 10 MB reducen la conversión en un 1%.
APK se puede descompilar con herramientas como JADX, APKTool o Bytecode Viewer. JADX restaura el código Java original a partir de DEX, lo que hace que las aplicaciones sin ofuscación sean completamente legibles. Para proteger el código se utiliza ProGuard/R8, que renombra clases, métodos y campos con nombres cortos ilegibles y elimina información de depuración.
Para analizar el contenido del APK se utilizan Android Studio Profiler, apkanalyzer (herramienta CLI de Android SDK) y utilidades de terceros. apkanalyzer muestra el tamaño de cada componente del APK: DEX, recursos, bibliotecas nativas y firma. El análisis ayuda a identificar qué dependencias ocupan más espacio y tomar decisiones sobre su reemplazo o eliminación.
Preguntas frecuentes
Sí, cualquier archivador (7-Zip, WinRAR) abre APK como ZIP. Se puede ver el contenido, pero para descompilar el código se necesitan herramientas especiales: JADX o apktool.
XAPK es un formato no oficial utilizado por algunas tiendas de terceros. Combina APK con archivos OBB adicionales en un solo archivo. Google Play y la documentación oficial de Android no utilizan XAPK.
Android Studio firma automáticamente la compilación de depuración con debug.keystore al ejecutarla en un dispositivo. Para distribuir una versión de prueba al equipo se requiere firma con clave de lanzamiento o el uso de App Signing.
Use R8 para ofuscación y minimización, convierta imágenes a WebP, elimine recursos no utilizados mediante Lint y, para proyectos grandes, cambie a Android App Bundle con Dynamic Delivery.
No: cualquier modificación del APK después de la firma rompe la firma digital. Para actualizar, es necesario compilar y firmar una nueva versión con un versionCode incrementado.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también