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:
-
Establece una política automática y especifica
TYPE_PAUSE
. - Mientras el reloj del sistema esté en el período de pausa, envía una actualización OTA.
- Verifica que el dispositivo no tome la actualización inalámbrica y que el usuario no pueda instalarla de forma manual.
- 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:
-
Establece una política automática y especifica
TYPE_PAUSE
. - Mientras el reloj del sistema esté en el período de pausa, envía una actualización OTA.
- Espera a que venza el período de pausa.
- Verifica que el dispositivo se reinicie automáticamente y que se realice la actualización OTA después del reinicio.