Qu'est-ce que le format de fichier APK ?
Un fichier avec l'extension .apk contient une archive compressée avec une application, un jeu ou un micrologiciel pour le système Android. Les paquets APK sont basés sur le format de conteneur ZIP/JAR, ce qui signifie que n'importe quel outil d'archivage standard peut ouvrir et inspecter leur contenu. Google Play imposait initialement une limite de 100 Mo sur les téléchargements .apk, avec jusqu'à deux fichiers d'extension allant jusqu'à 2 Go chacun pour les ressources supplémentaires ; depuis août 2021, Google Play exige que les nouvelles applications soient publiées sous forme de .AAB (Android App Bundles), qui génèrent des APK fractionnés optimisés pour l'appareil au moment de l'installation plutôt que d'expédier un seul paquet monolithique.
Structure d'un fichier APK
La structure des fichiers APK est basée sur l'archive JAR - ils peuvent contenir les sous-dossiers et fichiers suivants :
res- avec une description des ressources sous une forme non compilée,lib- contient les sources compilées et les bibliothèques d'applications, divisées selon les différentes plateformes informatiques (ex:arm64-v8a,x86_64),META-INF- avec des fichiers contenant des informations sur le paquet, par exemple le fichierMANIFEST.MFou des certificats,assets- qui contient diverses ressources utilisées par l'application,classes.dex- bytecode Dalvik/ART compilé exécuté par l'environnement d'exécution Android,AndroidManifest.xml- manifeste encodé en binaire déclarant les permissions, les composants et les exigences SDK de l'application,resources.arsc- table de ressources précompilée mappant les identifiants aux chaînes, mises en page et éléments graphiques.
Les fichiers Android Package sont utilisés pour créer et distribuer des programmes pour les plateformes mobiles fonctionnant sous le système Android. Le contenu des fichiers .apk peut être décompressé avec la plupart des programmes de décompression prenant en charge la compression ZIP, ou inspecté en renommant simplement le fichier en .zip. Pour maintenir l'intégrité, les paquets sont protégés par l'APK Signature Scheme v2/v3 (et v4 pour les mises à jour incrémentielles), l'installation étant refusée si la signature ne correspond pas. L'installation de paquets .apk provenant de l'extérieur du Play Store n'est pas autorisée par défaut - les utilisateurs doivent activer la permission Installer des applications inconnues dans les paramètres Android, ou pousser le paquet via adb install app.apk. Les applications trop volumineuses pour un seul .apk peuvent être distribuées sous forme de .XAPK, qui regroupe un APK de base avec un ou plusieurs APK fractionnés dans une seule archive.
Sécurité et sûreté
RISQUE : HIGHL'APK est le vecteur n°1 des logiciels malveillants sur Android : le chargement latéral contourne l'analyse de Google Play Protect. Liste de contrôle des risques pour les utilisateurs : installez uniquement à partir de sources fiables (Google Play, F-Droid, APKMirror - qui vérifie les signatures par rapport à celles du développeur), vérifiez que les permissions demandées correspondent à l'objectif de l'application, n'installez jamais un APK arrivé de manière non sollicitée par chat/SMS (campagnes de « smishing ») et comparez la signature de l'application lors de la mise à jour. L'astuce consistant à renommer en .zip vous permet d'inspecter le contenu avant l'installation.
Détails du format
en brefProgrammes qui ouvrent les fichiers APK
Détails techniques
spécifications approfondies| Encodage | Binaire |
| Boutisme (Byte order) | Little-endian |
| Conteneur | Archive ZIP (également valide en tant que JAR) |
| Compression | DEFLATE par entrée ; les entrées sensibles à l'alignement sont stockées non compressées (méthode STORED) et alignées (zipaligned) |
| Signature / intégrité | APK Signature Scheme v2/v3 (bloc inséré avant le répertoire central ZIP) ; v4 pour les mises à jour incrémentielles sur l'appareil ; installation refusée en cas de non-correspondance de signature |
| Signature de fichier (Magic bytes) | 50 4B 03 04 - en-tête de fichier local ZIP standard « PK » à l'offset 0 ; se distingue d'un simple ZIP par la présence de AndroidManifest.xml et classes.dex |
| Fichiers internes | AndroidManifest.xml, classes.dex (+ classes2.dex …), resources.arsc, res/, lib/, assets/, META-INF/ |
| Bytecode | Dalvik Executable (DEX) dans classes.dex - compilé à partir des sources Java/Kotlin, exécuté par ART (Android Runtime) |
| Alignement | zipalign impose une limite de 4 octets pour les entrées non compressées ; Android 15+ cible un alignement de page de 16 Ko |
| Format du manifeste | XML encodé en binaire (AXML) déclarant le nom du paquet, les permissions, les composants Activity/Service/Provider, minSdkVersion, targetSdkVersion |
| Disposition des bibliothèques natives | Sous-répertoire lib/<ABI>/ par architecture : arm64-v8a, armeabi-v7a, x86, x86_64 |
| Table des ressources | resources.arsc - fichier binaire plat mappant les identifiants de ressources entiers aux chaînes, mises en page, éléments graphiques et variantes de configuration |
| Taille typique | 2 Mo - 1,5 Go ; les APK d'applications de base font généralement 5 à 100 Mo ; les jeux avec ressources intégrées atteignent la plage supérieure |
| Type MIME | application/vnd.android.package-archive |
| Plateforme | Android (natif) ; exécutable sur Windows, Linux, macOS via des émulateurs (BlueStacks, Android Studio AVD, Waydroid) |
| Publié | 2008 (Android 1.0) |
| Dernière version | APK Signature Scheme v3 (Android 9, 2018); v4 incremental (Android 11, 2020) |
| Standard ouvert | Oui · libre de droits |
| Spécification | source.android.com |