L'ecosistema Android utilizza una varietà di formati di file per il confezionamento, la distribuzione e l'archiviazione dei dati delle app. Se hai mai scaricato un'app da una fonte di terze parti, probabilmente hai riscontrato estensioni di file oltre al familiare APK. Formati come XAPK, APKS, APKM, AAB e OBB hanno ciascuno uno scopo specifico nel ciclo di vita delle app Android.
Questa guida vuole essere un riferimento completo per tutti i principali formati di file Android. Gli sviluppatori, gli utenti esperti che eseguono il sideload delle app e i lettori curiosi che vogliono semplicemente sapere cosa contengono effettivamente questi file troveranno tutti i formati spiegati in un linguaggio semplice di seguito.
APK: kit di pacchetti Android
L'APK è il formato file fondamentale per le applicazioni Android. È stato il formato di installazione standard sin dall'inizio di Android e rimane il formato che il sistema operativo Android comprende nativamente per l'installazione delle app.
Cosa contiene
Un file APK è essenzialmente un archivio ZIP con una struttura interna specifica:
- AndroidManifest.xml, file XML binario che dichiara il nome del pacchetto, i componenti, le autorizzazioni e i requisiti dell'app
- classes.dex (e classes2.dex, ecc.), bytecode Dalvik compilato contenente il codice Java/Kotlin dell'app
- resources.arsc, Tabella delle risorse compilata che associa gli ID delle risorse ai relativi valori
- res/, directory contenente risorse come layout, drawable e stringhe a cui fa riferimento l'ID
- assets/, File di risorse grezze a cui l'app accede in fase di esecuzione tramite AssetManager
- lib/, librerie native organizzate per architettura della CPU (ad esempio, lib/arm64-v8a/)
- META-INF/, File di firma e informazioni sul certificato
Quando lo incontri
I file APK sono ciò che scarichi durante il sideload di app da fonti di terze parti. Sono anche ciò che viene installato sul tuo dispositivo dal Play Store, sebbene le moderne installazioni del Play Store spesso utilizzino APK divisi generati dagli app bundle.
Come gestirlo
I file APK possono essere installati direttamente su Android aprendoli con un file manager o utilizzando adb install. Puoi anche esaminarne i contenuti rinominando l'estensione in .zip ed estraendola, oppure utilizzando il nostro Verificatore APK per ispezionare firme e metadati.
AAB: pacchetto di app Android
L'Android App Bundle è il formato di pubblicazione di Google per il Play Store. Da agosto 2021, tutte le nuove app sul Play Store devono essere inviate come AAB anziché come APK.
Cosa contiene
Un file AAB utilizza un formato basato su buffer di protocollo e contiene:
- Modulo base: Codice e risorse dell'app core richiesti su ogni dispositivo
- Suddivisioni della configurazione: Risorse organizzate per densità dello schermo, architettura della CPU e lingua
- Moduli di funzionalità dinamiche: Funzionalità opzionali scaricabili su richiesta
- Metadati del pacchetto: Istruzioni per Google Play su come generare APK specifici per il dispositivo
Quando lo incontri
Come utente normale, in genere non incontri direttamente i file AAB. Vengono utilizzati dagli sviluppatori durante il processo di creazione e caricamento. Tuttavia, se ottieni un file AAB (magari dagli artefatti di compilazione di un progetto open source), devi convertirlo nel formato APK prima dell'installazione.
Come gestirlo
Utilizza l'utilità della riga di comando bundletool di Google o il nostro Convertitore da AAB a APK per generare un APK installabile da un file AAB. Il processo di conversione crea un APK universale (più grande, funziona ovunque) o APK specifici per il dispositivo (più piccoli, destinati al dispositivo).
XAPK: APK esteso
XAPK è un formato contenitore reso popolare da APKPure che raggruppa un APK insieme ai file di dati OBB associati o divide le configurazioni APK in un unico pacchetto scaricabile.
Cosa contiene
Un file XAPK è un archivio ZIP contenente:
- Un file APK di base (l'applicazione principale)
- File OBB (dati di espansione per giochi e app di grandi dimensioni)
- Facoltativamente, dividi i file APK per diverse configurazioni del dispositivo
- Un file manifest.json che descrive il contenuto del pacchetto e le istruzioni di installazione
- Un file di icone a scopo di visualizzazione
Quando lo incontri
Incontri file XAPK durante il download di app o giochi di grandi dimensioni da repository di app di terze parti. I giochi che richiedono file di dati aggiuntivi (precedentemente distribuiti come file OBB) vengono comunemente impacchettati come XAPK per semplificare il processo di download in un unico file.
Come gestirlo
I file XAPK non possono essere installati direttamente dal programma di installazione del pacchetto predefinito di Android. Hai bisogno di un'app di installazione XAPK dedicata oppure puoi utilizzare il nostro Convertitore da XAPK a APK per estrarre l'APK di base. Per i giochi che richiedono dati OBB, dovrai anche estrarre e posizionare i file OBB nella directory corretta utilizzando il nostro Estrattore OBB.
APK: insieme di APK
Il formato APKS è l'output del bundletool di Google durante la generazione di APK specifici del dispositivo da un file AAB. Viene utilizzato anche da alcuni strumenti di backup delle app per archiviare installazioni APK divise.
Cosa contiene
Un file APKS è un archivio ZIP contenente:
- toc.pb, Un sommario del buffer di protocollo che descrive la struttura divisa
- splits/, Directory contenente l'APK di base e tutti gli APK suddivisi di configurazione
- Facoltativamente, APK autonomi per dispositivi che non supportano installazioni divise
Quando lo incontri
Incontri file APKS quando utilizzi bundletool localmente, quando esegui il backup delle app installate dal Play Store o quando scarichi da determinati repository di terze parti che preservano la struttura APK divisa.
Come gestirlo
Puoi installare i file APK utilizzando il comando install-apks di bundletool o convertirli in un singolo APK utilizzando il nostro Fusione da APKS a APK. Tieni presente che l'unione di APK divisi in un APK universale può aumentare le dimensioni del file poiché tutte le risorse di configurazione vengono combinate.
APKM: pacchetto APKMirror
APKM è un formato contenitore proprietario creato da APKMirror per la distribuzione di app costituite da più APK divisi. Ha uno scopo simile a XAPK e APKS ma utilizza la struttura propria di APKMirror.
Cosa contiene
Un file APKM è un archivio ZIP contenente:
- Un file APK di base
- File APK divisi per varie configurazioni (densità, ABI, lingua)
- Un file di metadati che descrive la struttura del pacchetto
Quando lo incontri
Incontri file APKM esclusivamente durante il download da APKMirror. Il sito utilizza questo formato per le app distribuite come app bundle sul Play Store e quindi costituite da più APK suddivisi.
Come gestirlo
I file APKM richiedono l'app APKMirror Installer per l'installazione diretta oppure puoi estrarre il contenuto (poiché si tratta di un file ZIP) e installare manualmente gli APK divisi utilizzando il comando install-multiple di ADB. L'APK di base può anche essere estratto e installato in modalità autonoma, sebbene alcune funzionalità potrebbero essere limitate senza la suddivisione della configurazione.
OBB: Blob binario opaco
I file OBB sono file di espansione utilizzati dalle app Android (principalmente giochi) per archiviare grandi quantità di dati che superano il limite di dimensione APK del Play Store. Sebbene Google abbia in gran parte sostituito questo sistema con Play Asset Delivery, molte app esistenti utilizzano ancora file OBB.
Cosa contiene
I file OBB possono contenere qualsiasi tipo di dati di cui l'app ha bisogno:
- Texture di gioco e modelli 3D
- File audio e colonne sonore
- Contenuti video
- Dati e mappe di livello
- Qualsiasi dato binario di grandi dimensioni che lo sviluppatore sceglie di archiviare esternamente
Il formato dei dati all'interno di un file OBB dipende interamente dallo sviluppatore. Alcuni utilizzano la compressione ZIP, altri utilizzano formati binari personalizzati. La parola "opaco" nel nome riflette il fatto che Android tratta il file come una scatola nera.
Quando lo incontri
I file OBB vengono rilevati durante il sideload di giochi di grandi dimensioni o quando sono raggruppati all'interno di pacchetti XAPK. Sono archiviati in /Android/obb/[package.name]/ nella memoria condivisa del dispositivo.
Come gestirlo
I file OBB devono essere inseriti nella directory corretta affinché l'app possa trovarli. Il nome del file in genere segue il modello main.[version].[package.name].obb o patch.[version].[package.name].obb. Utilizza il nostro Estrattore OBB per estrarre file OBB dai pacchetti XAPK.
DEX: eseguibile Dalvik
I file DEX contengono il bytecode compilato che viene eseguito nell'ambiente runtime di Android. Si trovano all'interno dei file APK ma possono anche esistere indipendentemente durante lo sviluppo e il debug.
Cosa contiene
Un file DEX contiene:
- Bytecode Java/Kotlin compilato nel formato di istruzioni Dalvik
- Costanti stringa e definizioni di tipo
- Metodo e riferimenti sul campo
- Definizioni di classi e loro gerarchie
Dettagli tecnici
Un singolo file DEX ha un limite di riferimento del metodo di 65.536 (il "limite di 64 KB"). Le app che superano questo limite utilizzano più file DEX (classes.dex, classes2.dex e così via), una tecnica chiamata multidex. I moderni strumenti di creazione lo gestiscono automaticamente.
File ODEX, VDEX e ART
Queste sono versioni ottimizzate dei file DEX creati da Android Runtime durante o dopo l'installazione:
- ODEX (DEX ottimizzato): Contiene codice macchina nativo compilato in anticipo per i metodi utilizzati di frequente. Generato durante la manutenzione inattiva in base ai profili di utilizzo.
- VDEX (DEX verificato): Contiene il bytecode DEX verificato con risultati di verifica precalcolati. Ciò accelera i successivi avvii e lanci di app saltando la nuova verifica.
- ART (immagine runtime Android): Contiene oggetti di classe preinizializzati e dati heap. Ciò consente al runtime di ignorare il caricamento e l'inizializzazione delle classi per le classi framework comuni durante l'avvio.
Questi file sono generati dal sistema e non sono qualcosa con cui gli utenti in genere interagiscono direttamente. Sono archiviati in /data/dalvik-cache/ o insieme all'APK in /data/app/.
SO: oggetto condiviso (librerie native)
I file con estensione .so sono librerie condivise native compilate per architetture CPU specifiche. Contengono codice macchina scritto in C, C++ o Rust che viene eseguito direttamente sul processore senza il sovraccarico del runtime Dalvik/ART.
Varianti di architettura
- armeabi-v7a, ARM a 32 bit (la maggior parte dei dispositivi meno recenti)
- arm64-v8a, ARM a 64 bit (la maggior parte dei telefoni moderni)
- x86, Intel/AMD a 32 bit (alcuni tablet ed emulatori)
- x86_64, Intel/AMD a 64 bit (Chromebook ed emulatori)
Quando un APK contiene librerie native, deve includere l'architettura corretta per il dispositivo di destinazione. Se viene inclusa l'architettura sbagliata, l'app si bloccherà con un UnsatisfiedLinkError.
File XML su Android
Android utilizza ampiamente XML, ma in due forme diverse:
XML binario
All'interno dei file APK, le risorse XML (layout, manifest, file stringa) sono archiviate in un formato binario compilato chiamato AXML. Questo formato è più compatto e più veloce da analizzare rispetto al testo XML. Strumenti come aapt2 o apktool possono decompilare l'XML binario in testo leggibile.
Testo XML
Durante lo sviluppo, i file XML sono in formato testo standard. Il processo di compilazione li compila in XML binario per l'inclusione nell'APK. I file di configurazione come network_security_config.xml e i file di risorse nella directory res/ iniziano come testo XML.
File di mappatura ProGuard/R8
Sebbene non siano un formato specifico per Android, i file di mappatura (mapping.txt sono importanti per comprendere le app offuscate). Quando gli sviluppatori utilizzano strumenti di riduzione del codice come R8, i nomi delle classi e dei metodi vengono sostituiti con identificatori brevi e privi di significato. Il file di mappatura registra le traduzioni dei nomi da originale a offuscato, essenziali per leggere i rapporti sugli arresti anomali.
Formato di backup Android (AB)
I file con estensione .ab sono archivi di backup Android creati da adb backup. Contengono un archivio tar (opzionalmente compresso e crittografato) della directory dei dati di un'app. Questo formato è stato deprecato a favore delle soluzioni di backup basate su cloud, ma è ancora utilizzato da alcuni strumenti di backup.
IMG e immagini delle partizioni
Sebbene non siano correlate alle app, le immagini del sistema Android utilizzano diversi formati che vale la pena menzionare:
- sistema.img: La partizione di sistema di sola lettura contenente il framework Android e le app preinstallate
- boot.img: Contiene il kernel Linux e il ramdisk iniziale
- venditore.img: Driver e firmware specifici dell'hardware
- super.img: Contenitore di partizioni dinamiche utilizzato nei dispositivi moderni (Android 10+)
Tabella di confronto dei formati
Ecco un rapido riferimento che confronta i principali formati di distribuzione delle app:
- APK: File singolo, installabile direttamente, universale (tutte le configurazioni incluse), dimensioni più grandi
- Il formato di pubblicazione AAB:, non installabile direttamente, richiede l'elaborazione da parte del Play Store
- Contenitore XAPK: (APK + OBB/split), richiede programma di installazione o estrazione, utilizzato da APKPure
- Contenitore APK: (APK divisi), formato bundletool, richiede programma di installazione o fusione
- Il contenitore APKM: (APK divisi), formato APKMirror, richiede il relativo programma di installazione
Scegliere lo strumento giusto
A seconda del formato con cui stai lavorando, sono appropriati diversi strumenti:
- Hai un XAPK? Utilizza il nostro Convertitore da XAPK a APK per estrarre l'APK installabile
- Hai un AAB? Utilizza il nostro Convertitore da AAB a APK per generare un APK universale
- Hai APK suddivisi (APKS)? Usa il nostro Fusione da APKS a APK per combinarli
- Hai bisogno di verificare un APK? Utilizza il nostro Verificatore APK per controllare le firme
- Hai bisogno di file OBB da un XAPK? Utilizza il nostro Estrattore OBB per decomprimere i file di espansione
Quale formato di pacchetto Android dovresti utilizzare?
La varietà di formati di file dell'ecosistema Android riflette l'evoluzione della piattaforma da semplici APK a file singolo a sofisticati sistemi di distribuzione modulare. Ogni formato esiste per risolvere un problema specifico: gli AAB riducono le dimensioni dei download, gli XAPK semplificano la distribuzione di app multi-file, gli OBB gestiscono dati di gioco di grandi dimensioni e gli APK divisi consentono l'ottimizzazione specifica del dispositivo.
Una volta compresi questi formati, puoi gestire qualsiasi pacchetto Android in cui ti imbatti, sia che tu stia effettuando il sideload di app, eseguendo il backup del tuo dispositivo o sviluppando le tue applicazioni. Il punto fondamentale è che la maggior parte di questi formati sono in definitiva contenitori che contengono file APK in varie configurazioni e, con gli strumenti giusti, puoi sempre estrarre ciò di cui hai bisogno.