Actualizaciones OTA empresariales

El software actualizable del Documento de definición de compatibilidad de Android (CDD) requiere que los dispositivos implementen la clase SystemUpdatePolicy. SystemUpdatePolicy permite que la app del propietario del dispositivo (DO) si presente, controlar la instalación de actualizaciones del sistema.

Notificar a los propietarios de los dispositivos

El cliente inalámbrico (OTA) debe notificar a las apps del propietario del dispositivo sobre las actualizaciones OTA entrantes con una API del sistema. El cliente inalámbrico también debe incluir una marca de tiempo que registre cuando la actualización OTA se haya convertido disponibles. Los clientes OTA pueden llamar a DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch) para notificar a las apps de propietario del dispositivo. Si el cliente inalámbrico no sabe si una actualización es un parche de seguridad, el cliente inalámbrico puede recurrir DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)

Si no hay una actualización disponible actualmente, el cliente de OTA lo informará Establece el argumento updateReceivedTime en -1. Te recomendamos que envíes notificaciones cada vez que el cliente inalámbrico consulte un servidor inalámbrico o cuando se envía una actualización inalámbrica al cliente. También puedes enviar notificaciones con mayor frecuencia.

Política de actualización del sistema

Android 9 mejora la capacidad de los propietarios de dispositivos para controlar las actualizaciones, ya que les permite posponer las actualizaciones inalámbricas hasta por 90 días. Esta función se enfoca en soluciones de dispositivos dedicados (antes llamadas COSU) y les permite a los propietarios pausar la versión del SO que se ejecuta en los dispositivos durante períodos críticos, como las vacaciones.

Para cumplir con el CDD, el cliente inalámbrico debe implementar y políticas de seguridad. El DO puede establecer las siguientes políticas, que los subsistemas de actualización del sistema del dispositivo deben cumplir:

Los propietarios de dispositivos también pueden establecer períodos de inactividad (en Android 9 o versiones posteriores) que inhabiliten la versión del SO durante períodos críticos, como las vacaciones o cualquier otro momento de gran actividad. El sistema no instala actualizaciones inalámbricas durante un período de suspensión. Recomendamos usar SystemUpdatePolicy.InstallationOption (consulta siguiente sección), sin embargo, el cliente inalámbrico también puede llamar SystemUpdatePolicy.getFreezePeriods() para comprobar si el dispositivo está en un período sin actualización.

Cómo implementar opciones de instalación

Android 9 presenta una @SystemApi, SystemUpdatePolicy.InstallationOption, que está diseñado para los clientes de actualización del sistema. SystemUpdatePolicy.InstallationOption funciona como wrapper para las políticas y los períodos de suspensión. Una opción de instalación le indica a los clientes cómo actuar ante las actualizaciones del sistema entrantes y durante cuánto tiempo es válida, dada la política actual de actualización del sistema o cualquier suspensión período que se puede establecer. Una opción de instalación puede ser una de lo siguiente:

  • TYPE_INSTALL_AUTOMATIC: Instalación de actualizaciones del sistema entrantes de forma inmediata y sin la intervención del usuario en cuanto disponibles. El dispositivo se reiniciará automáticamente.
  • TYPE_POSTPONE: Las actualizaciones del sistema entrantes se pueden retrasar hasta por 30 días. Los usuarios no pueden instalar actualizaciones de forma manual. Los fabricantes de dispositivos pueden elegir si desean bloquear o no los parches de seguridad.
  • TYPE_PAUSE: Las actualizaciones del sistema entrantes pueden retrasarse indefinidamente hasta nuevo aviso. Los usuarios no pueden instalar una actualización de forma manual. TYPE_PAUSE retrasa todas las actualizaciones, incluidos los parches de seguridad.

Los clientes de actualizaciones del sistema pueden consultar SystemUpdatePolicy.InstallationOption que usan SystemUpdatePolicy.getInstallationOptionAt(long when): donde when representa la hora a la que se habilita la opción de instalación. que se consulta en cantidad de milisegundos desde el comienzo del período. Con el SystemUpdatePolicy.getInstallationOptionAt(long when) de actualización del sistema, los clientes de actualización del sistema pueden actuar según la opción devuelta hasta que time lapses efectivos. Después de que caduca la opción que se muestra, el cliente puede hacer otra consulta con una marca de tiempo nueva para la opción más reciente.

El cliente de actualización del sistema debe escuchar DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED en caso de que se actualice toda la política.

Valida la política TYPE_PAUSE

Puedes validar de forma manual que funcione la opción TYPE_PAUSE en un sistema inalámbrico.

La política TYPE_PAUSE está vigente

Para validar que una política TYPE_PAUSE funcione, haz lo siguiente:

  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ía una actualización OTA.
  3. Verifica que el dispositivo no tome la actualización inalámbrica y que el usuario no pueda instalarla de forma manual.
  4. Si se trata de un dispositivo A/B, reinícialo y verifica reiniciar no activó una instalación automática de la actualización.

La política TYPE_PAUSE venció

Para validar que una política TYPE_PAUSE vencida funcione, haz lo siguiente:

  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ía una actualización OTA.
  3. Espera a que venza el período de pausa.
  4. Verifica que el dispositivo se reinicie automáticamente y que se realice la actualización OTA después del reinicio.