# APK (formato)

Un archivo con extensión .apk (Android Application Package, significado en español: Paquete de Aplicación Android) es un paquete para el sistema operativo Android. Este formato es una variante del formato JAR de Java y se usa para distribuir e instalar componentes empaquetados para la plataforma Android para teléfonos inteligentes y tabletas, así como también algunas distribuciones enfocadas a su uso en ordenadores personales de escritorio y portátiles (notebook y netbook, respectivamente), por ejemplo Remix OS.
Los archivos APK son análogos a otros paquetes de software como APPX en Microsoft Windows o paquetes Deb en sistemas operativos basados en Debian como Ubuntu. Para crear un archivo APK, primero se compila un programa para Android y luego todas sus partes se empaquetan en un solo archivo. Un archivo APK contiene todo el código de ese programa (como archivos .dex), recursos, activos, certificados y archivo de manifest. Como es el caso con muchos formatos de archivo, los archivos APK pueden tener cualquier nombre necesario, siempre que el nombre del archivo termine en ".apk".
El formato .APK es básicamente un archivo comprimido en ZIP con diferente extensión, por lo cual pueden ser abiertos e inspeccionados usando un software archivador de ficheros como 7-Zip, PeaZip, WinZip, WinRAR o Ark.

## Contenido

Un archivo APK es un archivo que normalmente contiene los siguientes archivos y directorios:
* META-INF directorio:
** MANIFEST.MF: el archivo manifest
** CERT.RSA: el certificado de la aplicación
** CERT.SF: la lista de recursos y un resumen SHA-1 de las líneas correspondientes en el archivo MANIFEST.MF; por ejemplo:
* lib: El directorio que contiene el código compilado que es específico de una capa de software de un procesador, el directorio se divide en más directorios dentro de él:
** armeabi: Código compilado solo para todos los procesadores basados en <ARM
** armeabi-v7a: Código compilado solo para todos los procesadores ARMv7 y posteriores
** arm64-v8a: Código compilado solo para todos los procesadores ARMv8 arm64 y posteriores
** x86: Código compilado solo para procesadores <x86
** x86_64: Código compilado solo para procesadores x86-64
** mips: Código compilado solo para procesadores MIPS>
* res: El directorio que contiene recursos no compilados en resources.arsc (ver más abajo).
* assets: Un directorio que contiene recursos de aplicaciones, que puede ser recuperado por AssetManager.
* AndroidManifest.xml: Un archivo de manifiesto adicional de Android, que describe el nombre, la versión, los derechos de acceso y los archivos de bibliotecas referenciados para la aplicación. Este archivo puede estar en Android binario XML que se puede convertir en XML de texto claro legible por humanos con herramientas específicas.>
* classes.dex: Las clases compiladas en el <formato de archivo dex, comprensible por la máquina virtual Dalvik y por Android Runtime.
* resources.arsc: Un archivo que contiene recursos precompilados, como XML binario, por ejemplo.>
El tipo MIME definido para .apk es application/vnd.android.package-archive.
A su vez, durante el desarrollo de una aplicación los parámetros para que la misma se ejecute en distintos dispositivos son definidos de manera cautelosa, esto con el fin de que las mismas puedan ser compatibles a partir de una versión en especial o bien desde la última, para que así versiones posteriores de Android puedan también ser capaces de ejecutarla sin problema alguno.
En algunos casos, las mismas, al ser programadas y compiladas, dependiendo de su fin y objetivo, pueden o no requerir algún tipo de autorización "Root" o SuperUsuario, mientras que en otras más de uso general puede ser opcional u obviarse este requisito; algunos son juegos y otros programas y/o aplicaciones.