Le document de définition de compatibilité Android (CDD) sur les logiciels pouvant être mis à jour exige que les appareils implémentent la classe SystemUpdatePolicy
. SystemUpdatePolicy
permet à l'application propriétaire de l'appareil (DO, Device Owner), le cas échéant, de contrôler l'installation des mises à jour du système.
Avertir les propriétaires de l'appareil
Le client OTA doit informer les applications appartenant au propriétaire de l'appareil des mises à jour OTA entrantes à l'aide d'une API système. Le client OTA doit également inclure un enregistrement de code temporel lorsque la mise à jour OTA est disponible pour la première fois. Les clients OTA peuvent appeler DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
pour informer les applications du propriétaire de l'appareil. Si le client OTA ne sait pas si une mise à jour est un correctif de sécurité, il peut utiliser DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Si aucune mise à jour n'est actuellement disponible, le client OTA le signale en définissant l'argument updateReceivedTime
sur -1
.
Nous vous recommandons d'envoyer des notifications chaque fois que le client OTA interroge le serveur OTA ou qu'une mise à jour OTA est transmise au client. Vous pouvez également envoyer
notifications plus fréquemment.
Règle de mise à jour du système
Android 9 permet aux propriétaires d'appareils de contrôler les mises à jour en différant les mises à jour OTA jusqu'à 90 jours. Cette fonctionnalité, axée sur les solutions pour appareils dédiés (anciennement appelés COSU), permet aux propriétaires de suspendre la version de l'OS exécutée sur les appareils pendant les périodes critiques, comme les vacances.
Pour se conformer au CDD, le client OTA doit implémenter la règles. Le DO peut définir les règles suivantes, qui doivent être respectées par les sous-systèmes de mise à jour du système de l'appareil :
Les propriétaires d'appareils peuvent également définir des périodes de blocage (sous Android 9 ou version ultérieure) qui bloquent la version de l'OS pendant des périodes critiques, comme les vacances ou d'autres périodes chargées. Le système
n'installe pas les mises à jour OTA pendant une période de blocage. Nous vous recommandons d'utiliser SystemUpdatePolicy.InstallationOption
(voir la section suivante). Toutefois, le client OTA peut également appeler SystemUpdatePolicy.getFreezePeriods()
pour vérifier si l'appareil est en période de blocage.
Implémenter les options d'installation
Android 9 introduit une @SystemApi,
SystemUpdatePolicy.InstallationOption
, conçu
pour les clients de mise à jour du système.
SystemUpdatePolicy.InstallationOption
sert de wrapper.
pour les règles et les périodes de blocage. Une option d'installation indique aux clients comment réagir aux mises à jour système entrantes et la durée de validité de cette action, compte tenu de la règle de mise à jour du système actuelle ou de toute période de blocage pouvant être définie. Une option d'installation
peut être l'une des
suivantes:
-
TYPE_INSTALL_AUTOMATIC
: installation des mises à jour système entrantes immédiatement et sans intervention de l'utilisateur disponibles. L'appareil redémarre automatiquement. -
TYPE_POSTPONE
: les mises à jour système entrantes peuvent être retardées pendant 30 jours maximum. Les utilisateurs ne peuvent pas installer de mise à jour manuellement. Les fabricants d'appareils peuvent choisir de bloquer ou non la sécurité des correctifs. -
TYPE_PAUSE
: les mises à jour du système entrantes peuvent être retardées indéfiniment jusqu'à nouvel ordre. Les utilisateurs ne peuvent pas installer de mise à jour manuellement.TYPE_PAUSE
retarde toutes les mises à jour, y compris des correctifs de sécurité.
Les clients de mise à jour du système
peuvent interroger
SystemUpdatePolicy.InstallationOption
utilisant
SystemUpdatePolicy.getInstallationOptionAt(long when)
,
où when représente l'heure à laquelle l'option d'installation
interrogé en nombre de millisecondes depuis l'epoch. Avec les
SystemUpdatePolicy.getInstallationOptionAt(long when)
, les clients de mise à jour du système peuvent agir sur l'option renvoyée jusqu'à ce que le
des vues accélérées
efficaces. Une fois l'option renvoyée arrivée à expiration, le client peut effectuer une autre requête, à l'aide d'un nouveau code temporel, pour l'option la plus récente.
Le client de mise à jour du système doit écouter les diffusions DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
au cas où l'ensemble de la stratégie serait mis à jour.
Valider la règle TYPE_PAUSE
Vous pouvez valider manuellement que l'option TYPE_PAUSE
fonctionne
sur un système OTA.
La règle TYPE_PAUSE est en vigueur
Pour vérifier qu'une règle TYPE_PAUSE
fonctionne:
-
Définissez une règle automatique et spécifiez
TYPE_PAUSE
. - Pendant la période de suspension de l'horloge système, déployez une mise à jour OTA.
- Vérifiez que l'appareil ne reçoit pas la mise à jour OTA et que l'utilisateur ne peut pas l'installer manuellement.
- S'il s'agit d'un appareil A/B, redémarrez-le et vérifiez que le redémarrage n'a pas déclenché l'installation automatique de la mise à jour.
La règle TYPE_PAUSE a expiré
Pour vérifier qu'une règle TYPE_PAUSE
expirée fonctionne :
-
Définissez une règle automatique et spécifiez
TYPE_PAUSE
. - Lorsque l'horloge système est en pause, envoyez une mise à jour OTA.
- Attendez que la suspension arrive à expiration.
- Vérifiez que l'appareil redémarre automatiquement et que la mise à jour OTA est prises après le redémarrage.