Il software aggiornabile Android Compatibility Definition Document (CDD) richiede che i dispositivi implementino la classe SystemUpdatePolicy
. SystemUpdatePolicy
consente all'app del proprietario del dispositivo (DO), se presente, di controllare l'installazione degli aggiornamenti di sistema.
Notifica ai proprietari dei dispositivi
Il client over-the-air (OTA) deve notificare alle app del proprietario del dispositivo gli aggiornamenti OTA in arrivo utilizzando un'API di sistema. Il client OTA deve includere anche una registrazione del timestamp quando l'aggiornamento OTA è diventato disponibile per la prima volta. I client OTA possono chiamare DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
per inviare una notifica alle app del proprietario del dispositivo. Se il client OTA non sa se un aggiornamento è una patch di sicurezza, può ricorrere all'utilizzo DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Se un aggiornamento non è attualmente disponibile, il client OTA lo segnala impostando l'argomento updateReceivedTime
su -1
. Consigliamo di inviare notifiche ogni volta che il client OTA esegue il polling del server OTA o quando un OTA viene inviato al client. Puoi anche inviare notifiche più frequentemente.
Politica di aggiornamento del sistema
Android 9 migliora la capacità dei proprietari di dispositivi di controllare gli aggiornamenti consentendo ai proprietari di dispositivi di posticipare gli aggiornamenti OTA fino a 90 giorni. Concentrandosi su soluzioni per dispositivi dedicati (precedentemente chiamate COSU), questa funzionalità consente ai proprietari di mettere in pausa la versione del sistema operativo in esecuzione sui dispositivi durante periodi critici, come le festività.
Per conformarsi alla CDD, il cliente OTA deve implementare politiche comportamentali. Il DO può impostare le seguenti policy, che devono essere rispettate dai sottosistemi di aggiornamento del sistema del dispositivo:
I proprietari dei dispositivi possono anche impostare periodi di blocco (in Android 9 o versioni successive) che bloccano la versione del sistema operativo durante periodi critici, come festività o altri periodi di punta. Il sistema non installa gli aggiornamenti OTA durante un periodo di congelamento. Si consiglia di utilizzare SystemUpdatePolicy.InstallationOption
(vedere la sezione seguente), tuttavia il client OTA può anche chiamare SystemUpdatePolicy.getFreezePeriods()
per verificare se il dispositivo è in un periodo di blocco.
Implementazione delle opzioni di installazione
Android 9 introduce un @SystemApi, SystemUpdatePolicy.InstallationOption
, progettato per i client di aggiornamento del sistema. SystemUpdatePolicy.InstallationOption
funge da classe wrapper per le policy e i periodi di blocco. Un'opzione di installazione indica ai client come agire sugli aggiornamenti di sistema in arrivo e per quanto tempo è valida tale azione, data l'attuale politica di aggiornamento del sistema o qualsiasi periodo di blocco che potrebbe essere impostato. Un'opzione di installazione può essere una delle seguenti:
-
TYPE_INSTALL_AUTOMATIC
: gli aggiornamenti di sistema in arrivo vengono installati immediatamente e senza l'intervento dell'utente non appena diventano disponibili. Il dispositivo si riavvia automaticamente. -
TYPE_POSTPONE
: gli aggiornamenti di sistema in arrivo possono essere ritardati per un massimo di 30 giorni. Gli utenti non possono installare un aggiornamento manualmente. I produttori di dispositivi possono scegliere se bloccare o meno le patch di sicurezza. -
TYPE_PAUSE
: gli aggiornamenti di sistema in arrivo possono essere ritardati indefinitamente fino a nuovo avviso. Gli utenti non possono installare un aggiornamento manualmente.TYPE_PAUSE
ritarda tutti gli aggiornamenti, comprese le patch di sicurezza.
I client di aggiornamento del sistema possono eseguire query su SystemUpdatePolicy.InstallationOption
utilizzando SystemUpdatePolicy.getInstallationOptionAt(long when )
, dove when rappresenta l'ora in cui viene eseguita la query sull'opzione di installazione in numero di millisecondi da Epoch. Utilizzando il metodo SystemUpdatePolicy.getInstallationOptionAt(long when )
, i client di aggiornamento del sistema possono agire sull'opzione restituita fino allo scadere del tempo effettivo. Una volta scaduta l'opzione restituita, il client può effettuare un'altra query, utilizzando un nuovo timestamp, per l'opzione più recente.
Il client di aggiornamento del sistema deve ascoltare le trasmissioni DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
nel caso in cui l'intera policy venga aggiornata.
Convalida della policy TYPE_PAUSE
Puoi verificare manualmente che l'opzione TYPE_PAUSE
funzioni su un sistema OTA.
La norma TYPE_PAUSE
è in vigore
Per convalidare il funzionamento di una policy TYPE_PAUSE
:
- Imposta una policy automatica e specifica
TYPE_PAUSE
. - Mentre l'orologio di sistema è nel periodo di pausa, invia un aggiornamento OTA.
- Verificare che il dispositivo non accetti l'aggiornamento OTA e che l'utente non possa installare manualmente l'aggiornamento.
- Se il dispositivo è un dispositivo A/B, riavviare il dispositivo e verificare che il riavvio non abbia attivato l'installazione automatica dell'aggiornamento.
La norma TYPE_PAUSE
è scaduta
Per convalidare il funzionamento di una policy TYPE_PAUSE
scaduta:
- Imposta una policy automatica e specifica
TYPE_PAUSE
. - Mentre l'orologio di sistema è nel periodo di pausa, invia un aggiornamento OTA.
- Attendere la scadenza del periodo di pausa.
- Verificare che il dispositivo si riavvii automaticamente e che l'aggiornamento OTA venga eseguito dopo il riavvio.