Il
software aggiornabile del Compatibility Definition Document (CDD) di Android
richiede che i dispositivi implementino la classe
SystemUpdatePolicy
. SystemUpdatePolicy
consente all'app Proprietario dispositivo (PD), se presente, di controllare l'installazione degli aggiornamenti di sistema.
Inviare una notifica ai proprietari dei dispositivi
Il client over-the-air (OTA) deve informare le app del proprietario del dispositivo degli aggiornamenti OTA in arrivo tramite un'API di sistema. Il client OTA deve anche includere 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 notificare le app del proprietario del dispositivo. Se il client OTA non sa se un aggiornamento
è una patch di sicurezza, può ricorrere all'utilizzo di
DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Se al momento non è disponibile un aggiornamento, il client OTA lo segnala impostando
l'argomento updateReceivedTime
su -1
.
Ti consigliamo di inviare notifiche ogni volta che il client OTA esegue il polling del
server OTA o quando un aggiornamento OTA viene inviato al client. Puoi anche inviare
notifiche più di frequente.
Norme sugli aggiornamenti di sistema
Android 9 migliora la capacità dei proprietari di dispositivi di controllare gli aggiornamenti consentendo loro di posticipare gli aggiornamenti OTA fino a 90 giorni. Incentrata sulle soluzioni per i dispositivi dedicati (precedentemente chiamati COSU), questa funzionalità consente ai proprietari di mettere in pausa la versione del sistema operativo in esecuzione su dispositivi durante periodi critici, come le festività.
Per rispettare il CDD, il cliente OTA deve implementare le norme sul comportamento. Il DO può impostare i seguenti criteri, che devono essere rispettati dai sottosistemi di aggiornamento di sistema del dispositivo:
I proprietari di dispositivi possono anche
impostare periodi di blocco (in Android 9 o versioni successive) che bloccano la versione del sistema operativo
durante periodi critici, come le festività o altri periodi di punta. Il sistema
non installa gli aggiornamenti OTA durante un periodo di blocco. Ti consigliamo di utilizzare
SystemUpdatePolicy.InstallationOption
(vedi
la sezione seguente), ma il client OTA può anche chiamare
SystemUpdatePolicy.getFreezePeriods()
per verificare se il dispositivo è in un periodo di blocco.
Implementa le opzioni di installazione
Android 9 introduce un'API @System,
SystemUpdatePolicy.InstallationOption
, progettata per i client di aggiornamento di sistema.
SystemUpdatePolicy.InstallationOption
funge da classe wrapper per i criteri 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 l'azione, in base all'attuale criterio di aggiornamento del sistema o a un eventuale periodo di blocco impostato. Un'opzione di installazione può essere una delle seguenti:
-
TYPE_INSTALL_AUTOMATIC
: gli aggiornamenti di sistema in arrivo vengono installati immediatamente e senza intervento dell'utente non appena diventano disponibili. Il dispositivo si riavvia automaticamente. -
TYPE_POSTPONE
- Gli aggiornamenti di sistema in entrata possono subire ritardi fino a 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 a tempo indeterminato fino a nuova notifica. Gli utenti non possono installare un aggiornamento manualmente.TYPE_PAUSE
ritarda tutti gli aggiornamenti, incluse le patch di sicurezza.
I client di aggiornamento di sistema possono eseguire query su
SystemUpdatePolicy.InstallationOption
utilizzando
SystemUpdatePolicy.getInstallationOptionAt(long when)
,
dove when rappresenta il momento in cui viene eseguita la query sull'opzione di installazione in numero di millisecondi dall'epoca. Utilizzando il metodo SystemUpdatePolicy.getInstallationOptionAt(long when)
, i client di aggiornamento di sistema possono agire sull'opzione restituita fino allo scadere del tempo effettivo. Una volta scaduto il tempo dell'opzione restituita, il cliente può
effettuare un'altra query, utilizzando un nuovo timestamp, per l'opzione più recente.
Il client degli aggiornamenti di sistema deve rimanere in ascolto delle trasmissioni DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
nel caso in cui l'intero criterio venga aggiornato.
Convalida il criterio TYPE_PAUSE
Puoi convalidare manualmente il funzionamento dell'opzione TYPE_PAUSE
su un sistema OTA.
Il criterio TYPE_PAUSE è attivo
Per convalidare il funzionamento di un criterio TYPE_PAUSE
:
-
Imposta un criterio automatico e specifica
TYPE_PAUSE
. - Mentre l'orologio di sistema è nel periodo di pausa, premi un aggiornamento OTA.
- Verifica che il dispositivo non accetti l'aggiornamento OTA e che l'utente non possa installarlo manualmente.
- Se si tratta di un dispositivo A/B, riavvialo e verifica che il riavvio non abbia attivato un'installazione automatica dell'aggiornamento.
Il criterio TYPE_PAUSE è scaduto
Per convalidare il funzionamento di un criterio TYPE_PAUSE
scaduto:
-
Imposta un criterio automatico e specifica
TYPE_PAUSE
. - Mentre l'orologio di sistema è in pausa, invia un aggiornamento OTA.
- Attendi la scadenza del periodo di pausa.
- Verifica che il dispositivo si riavvii automaticamente e che l'aggiornamento OTA venga eseguito dopo il riavvio.