Nell'agosto 2021, Google ha preso una decisione che ha cambiato radicalmente il modo in cui vengono distribuite le app Android: tutte le nuove app inviate al Google Play Store devono utilizzare il formato Pacchetto di app Android (AAB) invece del tradizionale APK. Questo cambiamento ha interessato sviluppatori, utenti e l’intero ecosistema di distribuzione di app di terze parti. Ma cos’è esattamente un App Bundle, come funziona e perché dovrebbe interessarti?
Questa guida copre tutto, dagli aspetti tecnici interni del formato AAB alle implicazioni pratiche per gli utenti che desiderano condividere app con gli amici o installarle su dispositivi senza accesso al Play Store.
Che cos'è un pacchetto di app Android?
Un Android App Bundle è un formato di pubblicazione che contiene tutto il codice compilato e le risorse di un'app, ma rinvia la generazione dell'APK installabile finale a Google Play. Consideralo come un modello principale da cui i server di Google creano al volo pacchetti ottimizzati specifici per il dispositivo.
A differenza di un APK, che è un pacchetto pronto per l'installazione, un file AAB non può essere installato direttamente su un dispositivo. Si tratta di un artefatto di build che viene caricato sul Play Store, dove l'infrastruttura di Google lo elabora e genera APK su misura per ciascuna configurazione del dispositivo.
L'estensione del file è .aab e internamente utilizza un formato buffer di protocollo combinato con una struttura simile a ZIP. Contiene il bytecode DEX dell'app, risorse, risorse, librerie native e uno speciale file di metadati del pacchetto che indica a Google Play come dividere il contenuto.
Perché gli app bundle obbligatori da Google
La motivazione principale alla base degli App Bundle è ridurre le dimensioni di download delle app. Una tipica app Android deve supportare più densità di schermo (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), più architetture CPU (armeabi-v7a, arm64-v8a, x86, x86_64) e più lingue. Nel modello APK tradizionale, tutte queste risorse sono raggruppate in un unico file, anche se ogni dispositivo ne necessita solo di una frazione.
Considera un gioco che include librerie native per quattro architetture CPU e trame per cinque densità di schermo. L'APK universale potrebbe essere di 200 MB, ma una versione specifica del dispositivo contenente solo l'architettura e la densità rilevanti potrebbe essere di 80 MB. Si tratta di una riduzione del 60% delle dimensioni del download.
Google segnala che le app che utilizzano gli app bundle sono in media più piccole del 15% rispetto ai loro equivalenti APK universali. Per app e giochi di grandi dimensioni, il risparmio può essere molto più drammatico. Download più piccoli significano installazioni più veloci, minore consumo di larghezza di banda e meno installazioni abbandonate a causa di problemi di dimensioni.
Come funzionano internamente gli app bundle
La struttura del bundle
Un file AAB è organizzato in moduli, ciascuno dei quali contiene il proprio codice, risorse e risorse. La struttura più comune include:
- Modulo base: Contiene il codice dell'app principale e le risorse di cui ogni dispositivo ha bisogno. Questo è sempre installato.
- Suddivisioni della configurazione: Sezioni separate per risorse linguistiche, risorse per la densità dello schermo e librerie native ABI (architettura CPU).
- Moduli di funzionalità dinamiche: Moduli opzionali scaricabili su richiesta dopo l'installazione iniziale.
- Pacchetti di risorse: Risorse di grandi dimensioni come livelli di gioco o contenuti multimediali che possono essere forniti al momento dell'installazione, su richiesta o in background.
Generazione di APK suddivisi
Quando un utente scarica un'app dal Play Store, i server di Google esaminano la configurazione del dispositivo e generano una serie di APK suddivisi su misura per quello specifico dispositivo. Un'installazione tipica potrebbe includere:
- base.apk, Il codice dell'applicazione principale e le risorse essenziali
- split_config.arm64_v8a.apk, Librerie native per la CPU del dispositivo
- split_config.xxhdpi.apk, Risorse per la densità dello schermo del dispositivo
- split_config.en.apk, Risorse linguistiche per le impostazioni locali dell'utente
Questi APK divisi vengono installati insieme come un'unica app logica. Il gestore pacchetti Android li tratta come un'unica applicazione, ma sono file fisicamente separati sul dispositivo. Questo è il meccanismo che consente il risparmio di dimensioni.
Consegna dinamica
Una delle funzionalità più potenti degli app bundle è la distribuzione dinamica. Gli sviluppatori possono contrassegnare determinate funzionalità come scaricabili su richiesta. Ad esempio, un'app di fotoritocco potrebbe includere filtri avanzati come modulo di funzionalità dinamiche. Gli utenti che non utilizzano mai questi filtri non li scaricano mai, risparmiando spazio di archiviazione.
I moduli di funzionalità dinamiche vengono scaricati e installati tramite la libreria Play Core in fase di runtime. L'app può verificare se un modulo è installato e richiederne il download quando necessario, in modo che l'utente possa sperimentare la nuova funzionalità come un piccolo download in-app anziché una reinstallazione completa.
AAB e APK: differenze chiave
Comprendere le differenze tra questi formati aiuta a chiarire quando ciascuno è appropriato:
- I file APK Installabilità: possono essere installati direttamente su qualsiasi dispositivo Android. I file AAB non possono essere installati direttamente e devono essere prima elaborati.
- Misurare: Un APK universale contiene risorse per tutte le configurazioni. Un AAB consente la consegna specifica del dispositivo, con conseguenti download più piccoli.
- Firma: Con gli APK, lo sviluppatore firma il pacchetto installabile finale. Con gli AAB, lo sviluppatore firma il pacchetto e Google firma nuovamente gli APK generati utilizzando la firma dell'app di Play.
- Gli APK Distribuzione: possono essere distribuiti attraverso qualsiasi canale. Gli AAB sono progettati principalmente per il Play Store, sebbene strumenti come bundletool possano generare APK da essi localmente.
- Condivisibilità: Puoi condividere facilmente un file APK con un'altra persona. La condivisione di un'app installata da un AAB richiede la raccolta di tutti gli APK divisi, il che è più complesso.
La controversia sulla firma
Uno degli aspetti più dibattuti del mandato AAB è Gioca alla firma dell'app. Quando uno sviluppatore carica un AAB, Google conserva la chiave di firma utilizzata per firmare gli APK finali consegnati agli utenti. Ciò significa che Google ha tecnicamente la capacità di modificare il contenuto APK prima di firmarlo e consegnarlo.
Google sostiene che ciò sia necessario perché devono firmare gli APK divisi che generano. Gli sviluppatori conservano una chiave di caricamento per autenticare i propri caricamenti, ma la chiave di firma effettiva dell'app è gestita dall'infrastruttura di Google.
Per la maggior parte degli sviluppatori, questo è un compromesso ragionevole. Google fornisce servizi di backup e ripristino chiave ed elimina il rischio di perdita della chiave (che impedirebbe in modo permanente gli aggiornamenti delle app). Tuttavia, gli sviluppatori attenti alla privacy e i sostenitori dell’open source hanno sollevato preoccupazioni riguardo a questa centralizzazione della fiducia.
Cosa significa per gli utenti che condividono app
Il passaggio agli App Bundle ha implicazioni significative per gli utenti che desiderano condividere app al di fuori del Play Store:
Estrazione delle app installate
Quando estrai un'app installata da un AAB, non ottieni un singolo file APK. Invece, ottieni una raccolta di APK divisi. Queste suddivisioni sono specifiche del dispositivo, il che significa che un'app estratta da un telefono con processore ARM64 e schermo xxhdpi non funzionerà su un dispositivo con una configurazione diversa.
Formati XAPK e APKS
Per affrontare la sfida della condivisione di APK divisi, sono stati creati formati contenitore come XAPK e APKS. Questi formati raggruppano tutti gli APK divisi in un unico file scaricabile. Quando incontri un file XAPK, probabilmente contiene un'app originariamente distribuita come app bundle.
Il nostro Convertitore da XAPK a APK può aiutarti a estrarre l'APK di base da questi formati contenitore. Tuttavia, tieni presente che l'APK di base da solo potrebbe non contenere tutte le risorse necessarie affinché l'app funzioni correttamente su ogni dispositivo, poiché la densità e le risorse specifiche dell'ABI potrebbero trovarsi negli APK suddivisi.
Utilizzando bundletool
Google fornisce uno strumento open source chiamato bundletool in grado di generare APK da un file AAB localmente. Gli sviluppatori possono utilizzarlo per creare APK universali per test o distribuzioni alternative. Il comando è simile a:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
Ciò genera un APK universale che contiene tutte le risorse per tutte le configurazioni. Sarà più grande di una build specifica per il dispositivo ma funzionerà su qualsiasi dispositivo. Questo è l'approccio utilizzato dal nostro Convertitore da AAB a APK.
Impatto sugli App Store alternativi
Il mandato AAB riguarda principalmente il Google Play Store. App store alternativi e canali di distribuzione diretta possono comunque accettare file APK. Gli sviluppatori che desiderano effettuare la distribuzione al di fuori di Play possono continuare a creare APK universali insieme ai caricamenti AAB.
Tuttavia, alcuni sviluppatori creano solo AAB e si affidano interamente a Play per la distribuzione. Ciò significa che le app di questi sviluppatori sono più difficili da ottenere al di fuori dell'ecosistema del Play Store. I repository di app di terze parti si sono adattati ospitando le raccolte APK divise (come file XAPK o APKS) o utilizzando bundletool per generare APK universali.
Moduli di funzionalità dinamiche in pratica
I moduli di funzionalità dinamiche rappresentano una delle funzionalità più interessanti del formato App Bundle. Ecco alcuni casi d'uso reali:
- Caratteristiche della fotocamera: Un'app potrebbe includere filtri AR come modulo dinamico, scaricato solo quando l'utente accede per la prima volta alla funzione della fotocamera.
- Pacchetti linguistici: I dati di traduzione per le lingue meno comuni possono essere forniti su richiesta anziché essere forniti in bundle con ogni installazione.
- Livelli di gioco: I giochi possono fornire contenuti aggiuntivi man mano che i giocatori avanzano, mantenendo piccolo il download iniziale.
- Strumenti professionali: Le funzionalità avanzate nelle app di produttività possono essere fornite solo agli utenti che ne hanno bisogno.
Per gli utenti, ciò significa che le dimensioni installate di un'app potrebbero aumentare nel tempo man mano che vengono scaricati i moduli dinamici. Significa anche che la condivisione di tale app richiede l'inclusione di tutti i moduli scaricati, complicando ulteriormente il processo di estrazione.
Migliori pratiche per gli sviluppatori
Se stai sviluppando app Android, ecco alcuni consigli per lavorare in modo efficace con gli app bundle:
- Prova sempre con bundletool localmente prima del caricamento su Play. Genera APK specifici per il dispositivo e verifica che funzionino correttamente.
- Utilizza il percorso di test interno della Play Console per verificare che gli APK suddivisi si installino e funzionino correttamente su dispositivi reali.
- Valuta la possibilità di fornire un APK universale per canali di distribuzione alternativi se la tua base utenti si estende oltre il Play Store.
- Prestare attenzione ai limiti dei moduli con funzionalità dinamiche. Le funzionalità utilizzate di frequente dovrebbero essere nel modulo base, non nei moduli dinamici.
- Testare su dispositivi con diverse configurazioni per garantire che le suddivisioni della configurazione vengano generate correttamente e che non manchino risorse.
- Mantieni la chiave di caricamento al sicuro. Mentre Google gestisce la chiave di firma dell'app, la tua chiave di caricamento autentica la tua identità come sviluppatore.
Il futuro della distribuzione delle app
Il formato dell'App Bundle continua ad evolversi. Google ha introdotto funzionalità come Play Asset Delivery per risorse di gioco di grandi dimensioni, SDK Runtime per SDK pubblicitari e supporto migliorato per le configurazioni Wear OS e Android TV. La tendenza è verso una distribuzione più granulare e on-demand dei componenti dell'app.
Per gli utenti, ciò significa che il concetto di un unico file di app autonomo sta diventando meno comune per le app del Play Store. Comprendere formati come XAPK, APKS e gli strumenti disponibili per lavorarci diventa sempre più importante per chiunque gestisca app al di fuori del flusso standard del Play Store.
Quando mantenere un AAB e quando creare un APK universale
L'Android App Bundle rappresenta un cambiamento fondamentale nel modo in cui le app vengono confezionate e distribuite. Sebbene offra reali vantaggi in termini di dimensioni del download ed efficienza di distribuzione, introduce anche complessità per gli utenti che condividono app o le installano da fonti alternative. Comprendere come funzionano gli AAB, come generano APK divisi e quali strumenti sono disponibili per la conversione tra formati ti dà ciò di cui hai bisogno per scegliere il formato giusto e convertirli tra loro con sicurezza.
Gli sviluppatori si rivolgono ad AAB per ottimizzare la modalità di distribuzione di un'app; la maggior parte degli utenti di tutti i giorni lo incontra solo quando tenta di installare qualcosa su un dispositivo senza accesso al Play Store. In ogni caso, la cosa che vale la pena ricordare è semplice: AAB è un formato di pubblicazione, non un formato di installazione, ed esistono strumenti che colmano il divario tra i due.