.fw files.wiki
APK

Archivos APK

Paquete de Android

Un archivo .APK suele ser un paquete de aplicación de Android; Alpine Linux también usa .apk para paquetes de software instalables.

Android Package (APK)

Más común
Desarrollador
Google / Open Handset Alliance
Categoría
Ejecutables y paquetes
Tipo MIME
application/vnd.android.package-archive
Formato
Contenedor
Bytes mágicos
50 4B 03 04
Primera versión
2008
Última versión
No single file-format version; current Android APKs use ZIP plus Android signature schemes v1-v4
Estándar abierto
No

Alpine Linux Package (APK)

Desarrollador
Alpine Linux project
Tipo MIME
application/vnd.alpine.apk
Formato
Contenedor
Bytes mágicos
1F 8B
Primera versión
2005
Última versión
apk-tools 2.x package format
Estándar abierto
Sí

Abrir un archivo .APK en línea

Leyendo el archivo…

¿Qué es un archivo .APK?

Los archivos .APK suelen consistir en Android Packages o paquetes de aplicaciones instalables usados en dispositivos Android, que incluyen teléfonos, tabletas, televisores, relojes, emuladores y tiendas de aplicaciones. Desarrollado por Google en colaboración con la Open Handset Alliance, el formato Android Package se comercializó por primera vez junto con Android en 2008. El APK de Android contiene el tipo MIME application/vnd.android.package-archive y el código del software compilado, así como los recursos y bibliotecas requeridos por el instalador/runtime de Android. Es común que los usuarios vean APKs al cargar aplicaciones de forma lateral, ejecutar aplicaciones en pruebas en Android Studio, así como en CI, la instalación en BlueStacks y en imágenes de Android Emulator, el almacenamiento de apps instaladas y la inspección de muestras maliciosas. Los nombres comunes de los archivos APK son app-release.apk, base.apk y split_config.arm64_v8a.apk.

Además del APK descrito anteriormente, existe otro formato APK, conocido como Alpine Linux Package, usado en Alpine Linux y en la gestión de paquetes apk. En la mayoría de los casos, ambos formatos difieren debido a distintos magic (bytes iniciales), por lo que, en la mayoría de las veces, se puede encontrar que un APK de Android consiste en los bytes iniciales 50 4B 03 04, que se usan en archivos zip; por el contrario, Alpine usa bytes iniciales gzip de archivos que comienzan con 1F 8B. Por lo general, el nombre del archivo de Alpine consiste en el nombre, el número de versión, una release y la arquitectura. Los formatos relacionados de distribución de Android tienen diferentes sufijos, como .aab (Android app bundles), .apks (sets), .apkm y .xapk.

Cómo abrir un archivo .APK

Abrir un archivo .APK en Windows

  1. 1 Ve a la carpeta donde está tu archivo en Explorador de archivos. Normalmente, los archivos descargados terminan en Descargas.
  2. 2 Haz doble clic en tu archivo .APK si tienes una aplicación para archivos .apk en tu equipo. Si no se abre, pasa al paso tres.
  3. 3 Haz clic derecho en tu archivo .APK -> selecciona Abrir con -> Elegir otra aplicación.
  4. 4 Elige BlueStacks App Player en la lista (Windows 11: elige Siempre). En Windows 10 -> marca "Usar siempre esta aplicación para abrir archivos .apk" y haz clic en Aceptar.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Windows

Abrir un archivo .APK en macOS

  1. 1 En la app Finder, localiza tu archivo .APK.
  2. 2 Solo haz doble clic en tu archivo .APK para abrir automáticamente el programa asociado con él.
  3. 3 ¿Necesitas otra app en tu Mac? Haz Control-clic en el archivo (o clic derecho con el mouse). En el menú emergente, selecciona Abrir con -> BlueStacks App Player.
  4. 4 Si no aparece en la lista, elige Otra… y busca la aplicación manualmente.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para macOS

Abrir un archivo .APK en Linux

  1. 1 Abre tu gestor de archivos. Según el escritorio, puede llamarse Archivos (GNOME), Dolphin (KDE Plasma), Nemo (Cinnamon) o Thunar (Xfce).
  2. 2 Haz doble clic en el archivo.
  3. 3 O elige otro programa haciendo clic derecho en el archivo -> Abrir con -> Android Studio.
  4. 4 Instala Android Studio (si no está instalado en tu equipo) desde el centro de software, el repositorio o Flathub.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Linux

Abrir un archivo .APK en Android

  1. 1 Abre Archivos u otra app de gestión de archivos.
  2. 2 En Descargas, busca el archivo .APK y ábrelo tocándolo.
  3. 3 Se mostrará una lista de apps capaces de abrir el archivo. Toca Instalador de paquetes de Android y pulsa Siempre para asociar de forma permanente este tipo de archivo con esta app.
  4. 4 ¿No hay ninguna app capaz de abrir este archivo? Descarga Instalador de paquetes de Android desde Google Play Store.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para Android

Abrir un archivo .APK en línea

  1. 1 Ve al visor en línea en la parte superior de esta página.
  2. 2 Arrastra el archivo hasta allí o selecciónalo, y su contenido aparecerá en la pestaña de tu navegador. El archivo no se sube.

¿Sigue sin abrirse? Consulta los problemas comunes y sus soluciones, o ábrelo en tu navegador.

Programas para En línea

Más detalles sobre cómo abrir archivos .APK

En Android, descarga un .apk confiable usando cualquier aplicación (incluidas Files, Chrome, Drive), que luego se pasa a Android Package Installer. Si Android rechaza el procedimiento de instalación, ve a Settings - Apps - Special app access - Install unknown apps y permite solo que esa aplicación fuente acceda a ese instalador de aplicaciones en particular. Android gestiona las instalaciones de Android APK (la extensión de archivo está relacionada con archivos con el MIME Type application/vnd.android.package-archive), no paquetes de Alpine Linux.

Los usuarios de Windows, macOS y Linux podrían abrir el archivo APK para analizar aspectos como el tamaño del APK, el archivo Android Manifest, el archivo APK Dex, los archivos de recursos, el archivo de librerías nativas, etc., usando la aplicación gratuita Android Studio mediante el menú Profile o Debug APK. Android Studio no cuesta nada. Apktool se usa para desensamblar recursos de Android, instrucciones XML y smali, y resources.arsc de Android .apks. Jadx y JADX-GUI se pueden usar para ingeniería inversa de classes.dex (classes2.dex). La aplicación 7-Zip podría usarse para ver paquetes Android .apk, ya que los primeros bytes de estas aplicaciones (ZIP magic 50 4B 03 04) hacen que estos .apks sean adecuados para desempaquetar rápidamente sus iconos, archivos asset o directorios lib/<abi>, o manifests.

Aplicaciones basadas en Android como BlueStacks app player y emuladores Android similares pueden ejecutar muchos archivos APK instalados por el instalador, aunque algunos pueden requerir acceso a Google Play services, capacidades relacionadas con el hardware (como una cámara, acelerómetro) o una arquitectura compatible (CPUs). Un archivo APK no puede ejecutarse en ningún lugar en iOS debido a la falta de las bibliotecas necesarias. Revisa el archivo APK ya sea usando la descompresión de 7-Zip en PC, analízalo en Android Studio, Apktool o Jadx (programación similar a Java), o intenta obtener en App Stores la app oficial de iOS del desarrollador (en caso de desarrollo).

Para Alpine Linux, por lo general la extensión .apk apunta a los paquetes de Alpine Linux que contienen gzip magic 1f 8b. Para usar APK localmente, solo ejecuta comandos apk add <filename>.apk (para descargar localmente e instalar el APK localmente y mostrar la información del paquete disponible), usa tar solo para verlo manualmente, pero nunca confíes en dependencias. Al hacer doble clic, si se abre la aplicación incorrecta, comprueba la firma del archivo y usa el diálogo Open With para verlo con la aplicación correcta solo si es incorrecta.

Detalles técnicos

El esquema de firma de APK consiste en datos del esquema heredado de firma JAR v1 en la carpeta META-INF (es decir, MANIFEST.MF, CERT.SF y/o CERT.RSA/CERT.DSA). Los APK modernos además tienen v2, v3, v3.1 o incluso v4 del esquema de firma de APK. En comparación con v1, que hace la firma de entradas JAR separadas, v2/v3 y los siguientes cubren el archivo ZIP completo con mejor seguridad. Las herramientas de compilación de Android colocan las firmas de los esquemas 2 y superiores antes de la sección del directorio central de ZIP.

Los archivos APK se comprimen de forma individual para cada archivo. Los archivos DEX, los datos XML y otros contenidos podrían estar comprimidos con Deflate, pero para archivos multimedia o bibliotecas nativas, los archivos se dejan en formato sin comprimir. Un programa especial llamado zipalign comprueba y corrige la disposición de los archivos APK asegurando que el inicio de sección de los recursos sin comprimir esté alineado en límites de 4 bytes, lo que hace posible un mapeo eficiente en memoria en la plataforma Android. No existe un número de versión del formato APK: un APK contemporáneo combina el formato ZIP con metadatos de Android y esquemas de firma. El tamaño de un APK puede alcanzar valores de megabytes o incluso cientos de MB; Google Play a menudo distribuye aplicaciones compiladas desde .aab en forma de APK dividido de APK o incluso versiones divididas de APK generadas por el mismo. El tipo MIME registrado para APK es application/vnd.android.package-archive, aunque algunas aplicaciones mostrarán los archivos APK como application/zip.

Por otro lado, el archivo APK de las distribuciones de Alpine Linux no está relacionado con el APK de Android. Es solo un archivo tar comprimido con gzip que comienza con los bytes mágicos 1F 8B en el byte 0.

Cómo convertir archivos .APK

Para APKs compilados en Android, renombrar app.apk a app.zip o ejecutar 7-Zip para ejecutar "7z x app.apk -oapp_apk" simplemente revela la estructura zip del archivo. No ocurre ninguna decodificación de los recursos compilados resources.arsc o classes.dex. Si necesitas el código fuente, jadx puede convertir classes.dex con jadx -d app_java app.apk, aunque la operación produce una decompilación del código fuente sin los comentarios asociados ni otra información como los nombres originales de las variables locales, etc.

Hablando de parches, normalmente apktool d app.apk -o app_decoded es más útil, ya que esto permite decodificar recursos y producir archivos smali necesarios para reconstruir. Después de hacer los cambios necesarios en ellos, debes realizar la reconstrucción ejecutando apktool b app_decoded -o rebuilt-unsigned.apk; después, Android SDK requiere el uso de Build Tools y ejecutar los comandos: zipalign -p -f 4 rebuilt-unsigned.apk aligned.apk y luego apksigner sign --ks keystore.jks --out signed.apk aligned.apk. Android rechaza instalar cualquier APK que esté sin firmar, desalineado o que contenga firmas inconsistentes.

Desafortunadamente, no existe una transformación fiable de un APK a un AAB en un solo paso para las apps de terceros ya completadas. bundletool funciona a partir del proyecto original de Gradle. Aunque las imágenes de iconos normalmente se extraen usando métodos de archivo ZIP, los archivos relacionados con la densidad de los assets deben procesarse mediante el proceso de decodificación de recursos en su lugar. Alpine .apk es único en estos términos: tar -xzf package.apk puede descomprimir su formato tar comprimido con gzip, aunque los archivos planos pierden el estado de confianza por parte del gestor de paquetes hasta volver a empaquetarlos y re-firmarlos.

Convertir aHerramientaComando / nota
Extracted Android APK contents 7-Zip 7z x app.apk -oapp_apk Descomprime el contenedor ZIP; no decodifica XML binario de Android, resources.arsc ni bytecode DEX en el código fuente original.
Decompiled Java source directory jadx jadx -d app_java app.apk Produce código legible similar a Java a partir de archivos DEX; los nombres, comentarios, scripts de compilación y parte del flujo de control pueden no coincidir con la aplicación original.
Decoded smali/resources project Apktool apktool d app.apk -o app_decoded Es mejor para inspeccionar recursos o aplicar parches; no se recupera el código fuente de Java/Kotlin, solo bytecode smali y recursos decodificados.
Rebuilt unsigned Android APK Apktool apktool b app_decoded -o rebuilt-unsigned.apk Normalmente, el archivo reconstruido debe pasar por zipalign y firmarse antes de que Android lo instale.
Aligned and signed Android APK Android SDK Build Tools zipalign -p -f 4 rebuilt-unsigned.apk aligned.apk && apksigner sign --ks keystore.jks --out signed.apk aligned.apk Usa herramientas de compilación de Android para preparar un APK reconstruido para la instalación; la firma cambia la identidad de la firma del paquete.
Extracted Alpine package filesystem tree GNU tar mkdir -p alpine_pkg && tar -xzf package.apk -C alpine_pkg Funciona con paquetes .apk de Alpine porque son archivos tar comprimidos con gzip, no APK de Android en ZIP.
Alpine package metadata text GNU tar tar -xOf package.apk .PKGINFO > PKGINFO.txt Extrae solo el archivo de metadatos del paquete; los scripts del mantenedor y los archivos de carga útil permanecen en el archivo.

Problemas comunes y soluciones

El mensaje de error "App not installed" de Android es un mensaje general sobre un fallo del instalador. Las principales razones de esto incluyen que el certificado de la app instalada sea diferente del de la APK con la que se ha creado, que versionCode sea menor que el de una de las compilaciones instaladas, un problema de compatibilidad de targetSdkVersion/OS en el teléfono, etc. Usando adb install, podemos obtener detalles más específicos sobre el código de error del instalador, comprobar la compatibilidad de los paquetes y versionCodes y, si es posible, desinstalar el paquete antiguo.

El mensaje "There was a problem parsing the package" normalmente sugiere que hay corrupción en la transferencia del archivo durante el proceso de descarga, durante la transferencia por USB o durante el proceso de descarga del navegador, que la APK se ha compilado usando una versión posterior de Android, o que este archivo simplemente no es en absoluto un archivo APK de tipo app de Android. Se puede volver a descargar, validar su longitud correcta y que la APK comience con la secuencia de bytes mágicos ZIP "magic byte sequence" 50 4B 03 04 y no comience con otra secuencia.

El mensaje "INSTALL_FAILED_NO_MATCHING_ABIS": esto ocurre por falta de bibliotecas nativas en la APK para una ABI de CPU dada en nuestro caso; podemos intentar usar una APK para la ABI adecuada o usar una imagen de sistema de emulador apropiada en esta situación.

La razón del mensaje INSTALL_FAILED_UPDATE_INCOMPATIBLE es el uso de claves diferentes para la APK y la app ya instalada; desinstalar la app antigua elimina este problema, pero también quitará tu app instalada previamente (incluidos sus datos), a menos que la respaldes.

Para las apps en split APK, también debemos instalar los splits correspondientes; instalar el split APK por sí solo falla (en este caso, instala todos los split APK, incluido base.apk, en la línea de comandos o usa el instalador habitual de la tienda/bundle).

Si la utilidad de archivado muestra una APK pero no puede extraer el contenido debido a un directorio central truncado, simplemente vuelve a descargar ese archivo comprobando la longitud o incluso el SHA-256 del archivo.

Los archivos .apk creados para el sistema Alpine Linux son simplemente tar comprimidos con gzip estándar y tienen bytes mágicos 'magic bytes' 1F 8B; por lo tanto, las herramientas de android APK no reconocen ese archivo y fallan al intentar analizar e instalar un archivo apk. De la misma manera, las apk-tools instaladas en Alpine no reconocen el formato de archivo Android APK. Los principales problemas de instalación aquí son dependencias de paquetes faltantes/no instaladas, firmas de clave de paquete desconocidas o no confiables, o claves diferentes del repositorio; actualizar las claves y/o los repositorios suele solucionarlo.

Consideraciones de seguridad

Un APK de Android consiste en paquetes de aplicaciones ejecutables. Un APK puede hacer solicitudes de permisos de Android, importar código nativo desde lib/<abi>/, iniciar procesos en segundo plano, usar redes y más. Obtén APKs solo de ubicaciones confiables, ya que los paquetes cargados manualmente quedarán excluidos de algunas revisiones de las tiendas de aplicaciones, porque podrían hacerse pasar por software legítimo, imitando su iconografía o sus etiquetas e incluso el nombre del paquete. Si importa, apksigner verify --print-certs seguido de comparar las huellas digitales del certificado puede utilizarse para ver si esta aplicación en particular es una versión confiable.

La información del APK puede darte el nombre del paquete, la versión, la lista de permisos solicitados, la versión mínima de SDK, el certificado de firma, el uso de SDKs de analítica, las ABIs en uso o el punto de contacto del desarrollador. Analizar un archivo APK puede revelar fragmentos de software propietario, claves de API, URLs usadas y más; utiliza software de análisis privado para aplicaciones sensibles. Ejecuta descompiladores y emuladores para APKs potencialmente inseguros solo en una máquina virtual separada.

Alpine .apk puede venir equipado con scripts escritos por el empaquetador del software, que se ejecutarán durante el proceso de instalación o actualización de tu software. Tanto el formato APK de Android como Alpine apk carecen de compatibilidad con macros al estilo Office, pero ambos son capaces de entregar código y pueden abusar de las rutinas de análisis del instalador y de otro software de biblioteca.

Historia y versiones

Android 1.0 se lanzó comercialmente en el año 2008, utilizando APK como el paquete de aplicación instalable usado en dispositivos móviles de Google y de la Open Handset Alliance, siguiendo las convenciones de código de bytes Zip/JAR y DEX. Aunque ha habido modificaciones en el formato de código de bytes .dex, en la compilación de recursos mediante la utilidad aapt/aapt2 y en el entorno de ejecución ART, el mismo archivo de instalación (APK) mantuvo su número mágico ZIP 50 4B 03 04 a través de diferentes versiones de Android.

Solo ha habido cambios y actualizaciones en los mecanismos de firma del formato mediante APK Signature Scheme V2 en Android 7.0 (2016) para proteger todos los archivos APK fuera de la firma JAR en el directorio META-INF de los archivos. APK signature schemes V3 se introdujo en Android 9 (2018) para permitir la rotación de claves. También se introdujo en Android 11 V4 Signature Schemes en la instalación incremental para que las aplicaciones de Android residan en un archivo de firma adicional además del formato de archivo APK.

Aunque Android 1.0 está documentado en los documentos de la plataforma Android en lugar de en documentos de formato abierto ISO, existe el uso y la documentación de la instalación APK en otros proyectos abiertos que usan su formato de archivos APK en el formato Android App Bundle lanzado para su despliegue en Google Play desde 2018. Además, aunque Google usa APK para sus formatos de instalación de Android, existe Alpine Linux APK Tools y sus archivos APK desde mediados de los 2000.

La definición de AAB describe un formato de archivo Android App Bundle usado por Google Play para crear APK específicos para cada dispositivo. No obstante, la mayoría de los dispositivos Android no puede instalar .AAB directamente. El término APKS describe el conjunto de APK que se ha creado usando bundletool, por el cual el conjunto de APK incluye uno o más split APK seleccionados destinados a un dispositivo determinado. Los formatos XAPK y APKM no son formatos de archivo nativos. En su lugar, incluyen un archivo APK de terceros combinado con split APK y paquetes de expansión para un APK. Se necesitan estos formatos por parte de los programas de instalación correspondientes, ya que no forman parte de los paquetes nativos usados en instalaciones de Android. Los archivos .dex contienen códigos ejecutables de Android o bytecode compilado usado en procesos de decompilación. Sin embargo, .dex por sí solo carecería de metadatos de recursos, empaquetado e instalación. .jar se usaba en la firma de APK, pero no forma parte del proceso de instalación de Android. .ipa significa el paquete de iOS de Apple, que no puede ejecutarse en Android. En relación con los archivos APK de Alpine, .apk es el formato de paquete de Alpine, mientras que deb o RPM implica Linux basado en Debian o en Red Hat.

Comentarios (0)

Respondiendo a

Aún no hay comentarios. Sé el primero en compartir tu experiencia con este tipo de archivo.