“Android App Bundle” – il nuovo formato di Google che sostituirà gli APK per Android

0

Google Play abbandona gli APKs a favore degli “Android App Bundle” – con maggior controllo di Google

Il formato per le app di Android, l’APK (Android PacKage), è rimasto lo stesso fin dal lancio del Sistema, nel 2008. È portatile, facile da creare (si tratta di un semplice archivio strutturato), ed è largamente supportato da una moltitudine di tool. Anche Windows 11 lo supporterà, come anticipato di recente.

Ma Google ha cambiato idea, non vuole più che si usi il formato APK. Sull’Android Developer Blog viene spiegato che, partendo da agosto, le nuove app caricate sul Play Store dovranno usare il nuovo formato AAB (Android App Bundle). Sembra che questo sia solo l’inizio della strada verso l’abbandono totale del formato APK.

Il formato ABB fu introdotto nel 2018, e l’idea di base è che l’ecosistema di dispositivi Android è molto vario, dall’hardware alle lingue, e distribuire un’app che contenga tutto il necessario per essere compatibile con tutte queste combinazioni rischia di diventare oneroso a livello di spazio. Android infatti supporta oltre 150 lingue, quattro architetture CPU (ARMv7, ARMv8, x86 e x86_64), e svariate risoluzioni di schermo. La pratica comune è quella di ammassare tutte queste soluzioni in un singolo APK (magari differenziando per architettura), ma questo significa che ogni dispositivo si ritrova a scaricare codice e risorse irrilevanti per quella combinazione di CPU, lingua e display. Su dispositivi di fascia alta, con soluzioni di storage capienti, o in aree che godono di una buona connettività, questo potrebbe essere trascurabile, ma su dispositivi entry-level, o in casi in cui la banda è limitata, l’impatto potrebbe essere notevole.

La soluzione proposta da Google è l’Android App Bundle, che trasforma la distribuzione di app da un APK monolitico ad una collezione di pacchetti più leggeri, che possano essere combinati e distribuiti ad-hoc dal Play Store in base al dispositivo su cui stiamo installando. Questi pacchetti, chiamati “split APKs” (APK divisi) non costituiscono un’intera app, ma parti di essa, ciascuna con delle funzionalità precise, che si combinano per formare un’applicaizione completa.

Con gli App Bundles, se abbiamo un device ARMv8 ad alta risoluzione, impostato in lingua inglese, il Play Store combinerà una serie di APK che supportano la configurazione del nostro dispositivo. Se un nostro amico ha un ARMv7 a bassa risoluzione, impostato in inglese e italiano, riceveranno una combinazione diversa di APK su misura. Il Play Store è in grado di costruire una soluzione per ciascun utente, fornendo solo il codice necessario e nient’altro. Così, Google promette una riduzione del 15% rispetto agli APK tradizionali.

Per gli sviluppatori, questa novità permetterà anche di rendere più modulari le proprie app, fornendo determinate funzionalità solo ai dispositivi che le supportano, oppure on-demand.

Questo però non significa che non si possa comunque generare un APK completo, e quindi adatto anche con dispositivi più datati, in modo da garantire una retrocompatibilità universale.

Come spesso accade nel mondo di Android, questi cambiamenti portano ad un processo più laborioso per la pubblicazione di app, ma garantisce a Google un maggior controllo sull’intero ecosistema. Le Android App Bundles devono essere elaborate dal cloud del Play Store per poter essere utilizzate. Sebbene il formato delle Android App Bundles sia open-source, e Google abbia il proprio “bundletool” open-source che può compilarle, un’altra azienda dovrebbe crearsi la propria infrastruttura, farsi carico dei costi lato server per ospitarla in cloud, e gestire il laborioso processo della firma delle app.

La natura open-source delle App Bundles rende più semplice il supporto per i tool di sviluppo. Ma un app store alternativo avrebbe così tanti passaggi da seguire che difficilmente questo formato si propagherà al di fuori dello store di Google.

Uno dei maggiori componenti di sicurezza del formato APK è la firma delle app. questo è un certificato digitale con cui lo sviluppatore certifica di essere il creatore dell’app. La firma non è tanto importante per la prima installazione, ma da quel momento in poi, le firme devono coincidere. Questo significa che solo il proprietario del certificato – lo sviluppatore dell’app – può aggiornarla. Nessun altro può creare un “Google-Pay.apk” che sovrascriva la vera app Google Pay per rubare i nostri dati bancari.

Le App Bundles generano APK. Questi significa che serve un intero sistema di build, ospitato in cloud. Significa inoltre ospitare ciascun certificato in cloud, trasferendo così la responsabilità dallo sviluppatore direttamente a Google, che lo chiama “Google Play App Signing”, e che promette solennemente che lo sviluppatore sarà ancora il proprietario delle proprie app, garantendo il pieno accesso. Ciononostante, la sensazione è quella di trasferire il proprio controllo completamente a Google. Se ad esempio in nostro account venisse preso di mira da uno dei terminator bots a seguito di una presunta infrazione, il processo di ricorso sarà ancora più tortuoso.

Inoltre, questo formato comporta grosse responsabilità a carico del proprietario dell’app store. Se l’architettura fosse in qualche modo compromessa, terze parti potrebbero avere accesso alle chiavi di sviluppo, pubblicando quindi aggiornamenti con codice doloso. E se non ci fidiamo dell’app store, la questione diventa problematica, perché loro possiedono la nostra chiave, e possono quindi, nella peggiore delle ipotesi, cambiare la nostra app senza il nostro permesso. Da Google ovviamente ci si aspetta un livello di sicurezza elevato, e come già detto, non è molto probabile un’adozione di questo formato al di fuori del Play Store.

Google ha deciso di andare incontro agli sviluppatori, permettendo loro di tenere una copia locale della propria chiave uploadata, il che permetterà di generare aggiornamenti che andranno a sovrascrivere le versioni in Google Play. Gli sviluppatori potranno inoltre scaricare dalla Developer Console i “Distribution APK”, cioè degli APK vecchio stile che potranno poi essere caricati su altri store. E per quanto riguarda i timori che Google cambi la nostra app senza il nostro permesso, verrà introdotta una nuova funzionalità “code transparency“, che permetterà agli sviluppatori di controllare gli hash del codice scaricato, confrontandolo con quello che hanno caricato.

Da agosto, il formato sarà obbligatorio per le nuove app. Al momento, le app già esistenti sono esenti da questo obbligo. Enfasi su “al momento”.

Fin da piccolo ho coltivato una forte curiosità per come funzionano le cose. Da ragazzo ho scoperto la passione per il mondo dei computer, e da grande ho scoperto l’amore per il mondo del web development, in particolare del front-end. Mi piace tenermi aggiornato e seguire gli sviluppi tecnologici, imparando cose sempre nuove.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *