Come funzionano gli aggiornamenti delle app

Questa guida spiega come la piattaforma Android e Google Play gestiscono gli aggiornamenti delle app e illustra varie opzioni per gli sviluppatori che pubblicano le loro app su più store.

Come Android gestisce gli aggiornamenti delle app

Ogni app per Android ha un ID applicazione univoco che sembra un nome di pacchetto Java o Kotlin, ad esempio com.example.myapp. Questo ID identifica in modo univoco ogni app sul dispositivo. I dispositivi Android possono avere una sola app con un determinato ID applicazione installato alla volta.

Affinché un aggiornamento venga accettato dalla piattaforma Android, devono essere soddisfatte le seguenti condizioni:

  • L'ID applicazione dell'aggiornamento deve essere uguale a quello dell'app installata.
  • Il certificato di firma dell'aggiornamento deve essere uguale a quello dell'app installata oppure deve contenere una prova di rotazione valida.
  • Il codice di versione dell'aggiornamento deve essere maggiore o uguale a quello dell'app installata.
  • In alcuni casi, l'utente potrebbe dover accettare l'aggiornamento.

Tieni presente che non esiste una prevenzione integrata contro l'aggiornamento di un'app da parte di diversi programmi di installazione quando gli aggiornamenti hanno lo stesso certificato di firma e lo stesso codice versione o un codice versione superiore.

Per installare un'app che non soddisfa le condizioni sopra indicate, un utente deve prima disinstallare la versione attualmente installata, che cancella tutti i dati dell'app dal dispositivo.

Come Google Play aggiorna le app

L'approccio di Google Play all'aggiornamento delle app si basa sui seguenti principi:

  • Tieni aggiornati gli utenti. È consigliabile mantenere le app aggiornate per proteggere gli utenti da problemi di sicurezza e usufruire dei miglioramenti più recenti delle funzionalità.
  • Rispetta la scelta dell'utente. Google Play aggiorna le app associate agli account degli utenti in base alle preferenze di aggiornamento scelte, ad esempio consentendo o meno l'utilizzo di dati a consumo.
  • Rispetta la scelta dello sviluppatore. Google Play utilizza le opzioni di configurazione degli sviluppatori per determinare gli aggiornamenti delle app.
  • Evita lo spreco di risorse. Risparmia la batteria ottimizzando il momento in cui vengono scaricati gli aggiornamenti e riduci al minimo l'utilizzo dei dati utilizzando tecniche come la compressione e l'applicazione di patch.

Per una determinata app installata su un dispositivo, Google Play la aggiorna se soddisfa le seguenti condizioni:

  • L'app è pubblicata su Google Play con lo stesso ID applicazione.
  • Il certificato di firma dell'app pubblicata corrisponde al certificato di firma della versione attualmente installata oppure contiene una prova di rotazione valida.
  • L'app fa parte della raccolta dell'utente o è stata precaricata da un OEM.
  • L'app è disponibile per questo utente e questo dispositivo, in base alle opzioni di targeting definite dallo sviluppatore.
  • L'app installata è obsoleta rispetto alla versione disponibile su Google Play.

Se queste condizioni sono soddisfatte, Google Play è in grado di aggiornare l'app. Le sottosezioni seguenti forniscono dettagli su alcune delle condizioni elencate.

Tieni presente che ci sono altri casi in cui Google Play scarica i contenuti delle app o esegue la manutenzione dei file binari delle app per conto degli sviluppatori senza modificare il codice di versione Android, ad esempio quando completa download parziali o scarica split on demand.

Pubblicato su Google Play

Google Play utilizza l'ID applicazione per identificare in modo univoco le applicazioni pubblicate su Google Play. Questa condizione viene soddisfatta se l'ID applicazione dell'app installata corrisponde all'ID applicazione di un'app pubblicata su Google Play.

Parte della raccolta dell'utente

Questa condizione è soddisfatta se una delle seguenti condizioni è vera:

  • Qualsiasi Account Google attivo sul dispositivo ha precedentemente acquisito l'app toccando il pulsante di installazione o acquisto su Google Play.
  • L'OEM ha precaricato l'app come parte dell'immagine di sistema.

Gli utenti hanno anche la possibilità di rimuovere manualmente le app dalle proprie raccolte.

Obsoleto

Google Play determina se un'app installata su un dispositivo è obsoleta esaminando il codice di versione. Se la versione disponibile per il download su Google Play ha un codice di versione superiore a quella installata, Google Play considera l'app installata obsoleta.

App su più store

Esistono alcuni modi per controllare gli aggiornamenti cross-store quando pubblichi un'app su più store. Le sezioni seguenti illustrano queste opzioni e i loro potenziali vantaggi e svantaggi.

Impedire gli aggiornamenti cross-store

Potresti voler impedire a ogni store di eseguire aggiornamenti cross-store per la tua app. Potresti scegliere di farlo se i contenuti della tua app sono diversi in ogni store. Ciò può essere ottenuto pubblicando l'app con due ID applicazione diversi o pubblicando l'app con lo stesso ID applicazione e due chiavi di firma diverse.

Potresti voler ridurre al minimo il riutilizzo della chiave di firma per ridurre il rischio di compromissione della chiave e quindi utilizzare una chiave di firma dell'app diversa per ogni store. In questo modo si impedirebbero gli aggiornamenti cross-store.

Indipendentemente dall'approccio scelto, Android considera incompatibili le app senza ID applicazione e chiave di firma corrispondenti. Un utente che vuole passare da uno store all'altro deve eliminare l'app installata, il che comporta l'eliminazione di tutti i dati associati all'app, e reinstallarla dall'altro store.

Consenti aggiornamenti cross-store

Potresti voler consentire a ogni store di eseguire aggiornamenti delle app cross-store per la tua app. Potresti scegliere di farlo se distribuisci la tua app con gli stessi contenuti su tutti gli store e vuoi dare la priorità agli utenti che hanno la versione più recente. Se utilizzi lo stesso ID applicazione e le stesse chiavi di firma in tutti gli store in cui pubblichi la tua app, ogni store ha la possibilità di aggiornare le installazioni della tua app indipendentemente da dove l'utente l'ha scaricata inizialmente.

Tuttavia, questo può portare a un comportamento imprevedibile per gli utenti a seconda di come ogni app store sceglie di implementare gli aggiornamenti delle app cross-store. Ad esempio, un utente potrebbe disattivare gli aggiornamenti di uno store, non rendendosi conto che un altro store potrebbe continuare a fornire aggiornamenti.

Se in precedenza hai consentito gli aggiornamenti cross-store, ma vuoi iniziare a dare la priorità a una particolare origine di aggiornamento quando è presente sul dispositivo, puoi rilasciare la tua app con un codice versione più alto sul tuo store preferito e continuare a rilasciare con codici versione più bassi su altri store. Una volta installato l'aggiornamento del codice della versione superiore dalla fonte preferita, gli altri store non potranno eseguire l'aggiornamento incrociato su quel dispositivo.