El software actualizable del documento de definición de compatibilidad (CDD) de Android requiere que los dispositivos implementen la clase SystemUpdatePolicy
. SystemUpdatePolicy
permite que la aplicación del propietario del dispositivo (DO), si está presente, controle la instalación de actualizaciones del sistema.
Notificar a los propietarios de dispositivos
El cliente inalámbrico (OTA) debe notificar a las aplicaciones del propietario del dispositivo sobre las actualizaciones OTA entrantes mediante una API del sistema. El cliente OTA también debe incluir una grabación de marca de tiempo cuando la actualización OTA estuvo disponible por primera vez. Los clientes OTA pueden llamar DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
para notificar a las aplicaciones del propietario del dispositivo. Si el cliente OTA no sabe si una actualización es un parche de seguridad, puede recurrir a DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Si no hay una actualización disponible actualmente, el cliente OTA lo informa estableciendo el argumento updateReceivedTime
en -1
. Recomendamos enviar notificaciones cada vez que el cliente OTA sondee el servidor OTA o cuando se envíe una OTA al cliente. También puede enviar notificaciones con más frecuencia.
Política de actualización del sistema
Android 9 mejora la capacidad de los propietarios de dispositivos para controlar las actualizaciones al permitirles posponer las actualizaciones OTA por hasta 90 días. Esta característica, que se centra en soluciones de dispositivos dedicados (anteriormente llamados COSU), permite a los propietarios pausar la versión del sistema operativo que se ejecuta en los dispositivos durante períodos críticos, como días festivos.
Para cumplir con la CDD, el cliente OTA debe implementar políticas de comportamiento. El DO puede establecer las siguientes políticas, que deben ser respetadas por los subsistemas de actualización del sistema del dispositivo:
Los propietarios de dispositivos también pueden establecer períodos de congelación (en Android 9 o posterior) que congelan la versión del sistema operativo durante períodos críticos, como días festivos u otras épocas de mucha actividad. El sistema no instala actualizaciones OTA durante un período de congelación. Recomendamos usar SystemUpdatePolicy.InstallationOption
(consulte la siguiente sección); sin embargo, el cliente OTA también puede llamar a SystemUpdatePolicy.getFreezePeriods()
para verificar si el dispositivo está en un período de congelación.
Implementación de opciones de instalación
Android 9 presenta @SystemApi, SystemUpdatePolicy.InstallationOption
, que está diseñado para los clientes de actualización del sistema. SystemUpdatePolicy.InstallationOption
sirve como clase contenedora para las políticas y los períodos de congelación. Una opción de instalación les dice a los clientes cómo actuar ante las actualizaciones entrantes del sistema y durante cuánto tiempo es válida esa acción, dada la política de actualización del sistema actual o cualquier período de congelación que pueda establecerse. Una opción de instalación puede ser una de las siguientes:
-
TYPE_INSTALL_AUTOMATIC
: las actualizaciones entrantes del sistema se instalan inmediatamente y sin intervención del usuario tan pronto como estén disponibles. El dispositivo se reinicia automáticamente. -
TYPE_POSTPONE
: las actualizaciones entrantes del sistema pueden retrasarse un máximo de 30 días. Los usuarios no pueden instalar una actualización manualmente. Los fabricantes de dispositivos pueden elegir si bloquear o no los parches de seguridad. -
TYPE_PAUSE
: las actualizaciones entrantes del sistema se pueden retrasar indefinidamente hasta nuevo aviso. Los usuarios no pueden instalar una actualización manualmente.TYPE_PAUSE
retrasa todas las actualizaciones, incluidos los parches de seguridad.
Los clientes de actualización del sistema pueden consultar SystemUpdatePolicy.InstallationOption
usando SystemUpdatePolicy.getInstallationOptionAt(long when )
, donde when representa el momento en que se consulta la opción de instalación en milisegundos desde Epoch. Usando el método SystemUpdatePolicy.getInstallationOptionAt(long when )
, los clientes de actualización del sistema pueden actuar sobre la opción devuelta hasta que transcurra el tiempo efectivo. Una vez que la opción devuelta caduque, el cliente puede realizar otra consulta, utilizando una nueva marca de tiempo, para la opción más reciente.
El cliente de actualización del sistema debe escuchar las transmisiones de DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
en caso de que se actualice toda la política.
Validando la política TYPE_PAUSE
Puede validar manualmente que la opción TYPE_PAUSE
funcione en un sistema OTA.
La política TYPE_PAUSE
está vigente.
Para validar que una política TYPE_PAUSE
esté funcionando:
- Establezca una política automática y especifique
TYPE_PAUSE
. - Mientras el reloj del sistema está en el período de pausa, envíe una actualización OTA.
- Verifique que el dispositivo no acepte la actualización OTA y que el usuario no pueda instalar la actualización manualmente.
- Si el dispositivo es un dispositivo A/B, reinícielo y verifique que el reinicio no haya activado una instalación automática de la actualización.
La política TYPE_PAUSE
ha caducado
Para validar que una política TYPE_PAUSE
vencida esté funcionando:
- Establezca una política automática y especifique
TYPE_PAUSE
. - Mientras el reloj del sistema está en el período de pausa, envíe una actualización OTA.
- Espere a que expire el período de pausa.
- Verifique que el dispositivo se reinicie automáticamente y que se realice la actualización OTA después del reinicio.