O software atualizável do Documento de definição de compatibilidade do Android (CDD) requer dispositivos para implementar a classe SystemUpdatePolicy
. SystemUpdatePolicy
permite que o aplicativo DO (proprietário do dispositivo), se presente, controle a instalação de atualizações do sistema.
Notificando proprietários de dispositivos
O cliente over-the-air (OTA) deve notificar os aplicativos do proprietário do dispositivo sobre atualizações OTA recebidas usando uma API do sistema. O cliente OTA também deve incluir um registro de data e hora quando a atualização OTA foi disponibilizada pela primeira vez. Os clientes OTA podem chamar DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
para notificar os aplicativos do proprietário do dispositivo. Se o cliente OTA não souber se uma atualização é um patch de segurança, o cliente OTA poderá voltar a usar DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Se uma atualização não estiver disponível no momento, o cliente OTA reportará isso definindo o argumento updateReceivedTime
como -1
. Recomendamos o envio de notificações sempre que o cliente OTA sondar o servidor OTA ou quando um OTA for enviado ao cliente. Você também pode enviar notificações com mais frequência.
Política de atualização do sistema
O Android 9 aprimora a capacidade dos proprietários de dispositivos de controlar as atualizações , permitindo que os proprietários de dispositivos adiem as atualizações OTA por até 90 dias. Com foco em soluções de dispositivos dedicados (anteriormente chamados de COSU), esse recurso permite que os proprietários pausem a versão do sistema operacional em execução nos dispositivos durante períodos críticos, como feriados.
Para cumprir o CDD, o cliente OTA deve implementar políticas comportamentais. O DO pode definir as seguintes políticas, que devem ser respeitadas pelos subsistemas de atualização do sistema do dispositivo:
Os proprietários de dispositivos também podem definir períodos de congelamento (no Android 9 ou posterior) que congelam a versão do sistema operacional durante períodos críticos, como feriados ou outros horários de pico. O sistema não instala atualizações OTA durante um período de congelamento. Recomendamos o uso de SystemUpdatePolicy.InstallationOption
(consulte a seção a seguir), mas o cliente OTA também pode chamar SystemUpdatePolicy.getFreezePeriods()
para verificar se o dispositivo está em um período de congelamento.
Implementando opções de instalação
O Android 9 apresenta um @SystemApi, SystemUpdatePolicy.InstallationOption
, projetado para clientes de atualização do sistema. SystemUpdatePolicy.InstallationOption
serve como uma classe wrapper para as políticas e períodos de congelamento. Uma opção de instalação informa aos clientes como agir nas atualizações recebidas do sistema e por quanto tempo essa ação é válida, dada a política atual de atualização do sistema ou qualquer período de congelamento que possa ser definido. Uma opção de instalação pode ser uma das seguintes:
-
TYPE_INSTALL_AUTOMATIC
– As atualizações recebidas do sistema são instaladas imediatamente e sem intervenção do usuário assim que ficam disponíveis. O dispositivo é reinicializado automaticamente. -
TYPE_POSTPONE
– As atualizações recebidas do sistema podem ser atrasadas por no máximo 30 dias. Os usuários não podem instalar uma atualização manualmente. Os fabricantes de dispositivos podem optar por bloquear ou não os patches de segurança. -
TYPE_PAUSE
– As atualizações recebidas do sistema podem ser adiadas indefinidamente até novo aviso. Os usuários não podem instalar uma atualização manualmente.TYPE_PAUSE
atrasa todas as atualizações, incluindo patches de segurança.
Os clientes de atualização do sistema podem consultar SystemUpdatePolicy.InstallationOption
usando SystemUpdatePolicy.getInstallationOptionAt(long when )
, onde when representa o tempo em que a opção de instalação está sendo consultada em número de milissegundos desde a Época. Usando o método SystemUpdatePolicy.getInstallationOptionAt(long when )
, os clientes de atualização do sistema podem agir na opção retornada até que o tempo efetivo decorra. Depois que a opção retornada expirar, o cliente poderá fazer outra consulta, usando um novo carimbo de data/hora, para a opção mais recente.
O cliente de atualização do sistema deve escutar transmissões DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
caso toda a política seja atualizada.
Validando a política TYPE_PAUSE
Você pode validar manualmente se a opção TYPE_PAUSE
funciona em um sistema OTA.
A política TYPE_PAUSE
está em vigor
Para validar se uma política TYPE_PAUSE
está funcionando:
- Defina uma política automática e especifique
TYPE_PAUSE
. - Enquanto o relógio do sistema estiver no período de pausa, envie uma atualização OTA.
- Verifique se o dispositivo não aceita a atualização OTA e se o usuário não pode instalar a atualização manualmente.
- Se o dispositivo for um dispositivo A/B, reinicie o dispositivo e verifique se a reinicialização não acionou uma instalação automática da atualização.
A política TYPE_PAUSE
expirou
Para validar se uma política TYPE_PAUSE
expirada está funcionando:
- Defina uma política automática e especifique
TYPE_PAUSE
. - Enquanto o relógio do sistema estiver no período de pausa, envie uma atualização OTA.
- Aguarde até que o período de pausa expire.
- Verifique se o dispositivo é reinicializado automaticamente e se a atualização OTA é feita após a reinicialização.