Actualizaciones empresariales OTA

El software actualizable del documento de definición de compatibilidad de Android (CDD) requiere dispositivos para implementar 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 entrantes de OTA 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 a 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, el cliente OTA puede volver a usar DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime) .

Si una actualización no está disponible actualmente, el cliente OTA lo informa configurando el argumento updateReceivedTime en -1 . Recomendamos enviar notificaciones cada vez que el cliente OTA sondee el servidor OTA, o cuando se envía 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 hasta 90 días. Centrándose en soluciones de dispositivos dedicados (anteriormente llamados COSU), esta función permite a los propietarios pausar la versión del sistema operativo que se ejecuta en los dispositivos durante períodos críticos, como las vacaciones.

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 horas punta. 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 se encuentra en un período de congelación.

Implementación de opciones de instalación

Android 9 presenta un @SystemApi, SystemUpdatePolicy.InstallationOption , que está diseñado para los clientes de actualización del sistema. SystemUpdatePolicy.InstallationOption actúa como una 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 sobre las actualizaciones entrantes del sistema y por 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 del sistema entrantes se instalan inmediatamente y sin la intervención del usuario tan pronto como estén disponibles. El dispositivo se reinicia automáticamente.
  • TYPE_POSTPONE : las actualizaciones entrantes del sistema se pueden retrasar 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 pueden retrasarse 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 mediante SystemUpdatePolicy.getInstallationOptionAt(long when ) , donde when representa la hora en que se consulta la opción de instalación en milisegundos desde Epoch. Con el 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 caduca, 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 difusiones de DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED en caso de que se actualice toda la política.

Validación de 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á en vigor

Para validar que una política TYPE_PAUSE está funcionando:

  1. Establece una política automática y especifica TYPE_PAUSE .
  2. Mientras el reloj del sistema está en el período de pausa, envíe una actualización OTA.
  3. Verifique que el dispositivo no acepte la actualización OTA y que el usuario no pueda instalar manualmente la actualización.
  4. 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 caducada está funcionando:

  1. Establece una política automática y especifica TYPE_PAUSE .
  2. Mientras el reloj del sistema está en el período de pausa, envíe una actualización OTA.
  3. Espere a que expire el período de pausa.
  4. Verifique que el dispositivo se reinicie automáticamente y que la actualización OTA se realice después del reinicio.