Commandes de mise à jour unifiées

Les commandes de mise à jour unifiées (UUC) offrent aux administrateurs informatiques un moyen unique et cohérent de contrôler le moment où les mises à jour logicielles sont téléchargées et appliquées sur les appareils Android appartenant à l'entreprise, afin qu'elles ne perturbent pas les activités de l'entreprise.

Une seule règle UUC vous permet de contrôler les mises à jour des composants logiciels suivants :

  • Mises à jour de l'OS publiées par le fabricant de l'appareil (OEM), y compris les mises à jour majeures de l'OS, ainsi que les mises à jour mineures de l'OS et les mises à jour de sécurité.
  • Mises à jour du système Google Play (Mainline)
  • Services système Google, tels que les services Google Play et Android System WebView, soit en tant que groupe, soit une application à la fois.

Vous définissez des règles UUC dans le champ unifiedUpdatePolicy d'une ressource Policy. L'application Android Device Policy (ADP) est le point de décision central sur l'appareil pour l'UUC.

Prérequis

Avant de configurer l'UUC, vérifiez les exigences suivantes :

Mettre à jour la cible Entièrement géré (propriétaire de l'appareil) Profil professionnel sur les appareils appartenant à l'entreprise (COPE)
Services système Google Play (GOOGLE_SYSTEM_SERVICES, SINGLE_APP) Android 13 (niveau d'API 33) ou version ultérieure Android 15 (niveau d'API 35) ou version ultérieure
Mises à jour du système Google Play/Mainline (GOOGLE_PLAY_SYSTEM_UPDATE) Android 13 (niveau d'API 33) ou version ultérieure Android 15 (niveau d'API 35) ou version ultérieure
Mises à jour de l'OS : OEM utilisant l'agent OTA Google, comme Google Pixel (OS_UPDATE_WITH_API_LEVEL_CHANGE, OS_UPDATE_WITHOUT_API_LEVEL_CHANGE) Android 13 (niveau d'API 33) ou version ultérieure Android 15 (niveau d'API 35) ou version ultérieure
Mises à jour de l'OS – Autres OEM (OS_UPDATE_WITH_API_LEVEL_CHANGE, OS_UPDATE_WITHOUT_API_LEVEL_CHANGE) Android 17 (niveau d'API 37) ou version ultérieure Android 17 (niveau d'API 37) ou version ultérieure

Remarques et limites

Avant de planifier votre intégration UUC, tenez compte des points suivants :

  • Assistant de configuration initiale : les règles UUC ne sont pas appliquées lorsque l'appareil est dans l'assistant de configuration initiale. Des mises à jour critiques de Google Play ou de l'agent OTA de l'OEM peuvent se produire lors de la configuration de l'appareil.
  • Mises à jour anticipées après la configuration : il est possible que les règles UUC ne s'appliquent pas aux mises à jour automatiques qui démarrent immédiatement après la configuration de l'appareil, comme les mises à jour anticipées des services Google Play, avant que la règle n'atteigne l'ADP.
  • Modules OTA groupés : les mises à jour OTA des OEM peuvent contenir des versions mises à jour des modules Mainline et des services système Google. L'installation d'une mise à jour OTA OEM met automatiquement à jour ces composants groupés.
  • Mises à jour du système Google Play (Mainline) : UUC contrôle la mise à jour Mainline en tant qu'unité unique. Les packages Mainline individuels ne peuvent donc pas être contrôlés indépendamment. L'UUC ne régit que le début de la phase de téléchargement : une fois qu'un téléchargement Mainline commence, il ne peut pas être arrêté. Si une règle BLOCK est appliquée après le début du téléchargement, la mise à jour se termine quand même au redémarrage suivant de l'appareil.
  • Mises à jour manuelles pendant les périodes de blocage : pour les mises à jour du système Google Play (Mainline) et les services système Google, une règle BLOCK n'empêche que les mises à jour automatiques. Les utilisateurs peuvent toujours mettre à jour manuellement ces composants, même lorsqu'une règle BLOCK est active. Ce problème sera résolu dans une prochaine version.
  • Applications exemptées : UUC ne gère pas les mises à jour de l'application Google Play Store ni de l'application ADP.

Comprendre les règles concernant les contenus non autorisés

Un UnifiedUpdatePolicy se compose d'une liste ordonnée d'objets Rule. Chaque règle spécifie :

  • Un identifiant (id) défini par votre solution EMM
  • Une ou plusieurs cibles de mise à jour logicielle
  • étapes d'évaluation facultatives.
  • un ou plusieurs prédicats facultatifs contenant des conditions temporelles ;
  • Un résultat qui détermine la manière dont la mise à jour est gérée

Évaluation des règles

Lors de l'évaluation d'une mise à jour en attente, ADP prend en compte toutes les règles qui s'appliquent à la cible et à l'étape de cette mise à jour, dans l'ordre dans lequel elles apparaissent dans rules. ADP sélectionne la première règle dont le prédicat renvoie true et applique son résultat, comme une instruction if-else enchaînée. Si aucun prédicat de règle n'est évalué à true, le client de mise à jour responsable du composant gère la mise à jour normalement.

Identifiants de règle

Chaque règle nécessite un id de 64 caractères maximum, défini par votre solution EMM. id ne doit pas être vide et doit être unique parmi les règles d'une stratégie.

Mettre à jour les cibles

Chaque règle doit spécifier une liste non vide de targets sans doublons. Spécifier plusieurs cibles dans une même règle équivaut à définir plusieurs règles l'une après l'autre, chacune avec une seule cible, dans le même ordre.

Le tableau suivant décrit les valeurs targetType acceptées :

Valeur targetType Description
OS_UPDATE_WITH_API_LEVEL_CHANGE Une mise à jour de l'OS publiée par l'OEM qui modifie le niveau d'API Android de l'appareil (mise à jour majeure de l'OS).
OS_UPDATE_WITHOUT_API_LEVEL_CHANGE Mise à jour de l'OS publiée par l'OEM qui ne modifie pas le niveau d'API Android de l'appareil (mises à jour mineures de l'OS et mises à jour de sécurité).
GOOGLE_PLAY_SYSTEM_UPDATE Mises à jour du système Google Play (Mainline) Contrôle la mise à jour Mainline en tant qu'entité unique.
GOOGLE_SYSTEM_SERVICES Services système Google mis à jour depuis Google Play, tels que les services Google Play et Android System WebView.
SINGLE_APP Nom de package d'un service sur Google Play appartenant à GOOGLE_SYSTEM_SERVICES, par exemple com.google.android.webview. Nécessite de définir singleApp avec le packageName de l'application.

Étapes d'évaluation

Pour les cibles OS_UPDATE_WITH_API_LEVEL_CHANGE et OS_UPDATE_WITHOUT_API_LEVEL_CHANGE, vous pouvez éventuellement spécifier le stages auquel une règle est évaluée :

  • STAGE_DOWNLOAD : la règle est évaluée avant le téléchargement de la mise à jour.
  • STAGE_APPLY : la règle est évaluée avant d'effectuer une action qui applique la mise à jour, comme le déclenchement d'un redémarrage automatique.

Si stages est vide, la règle est évaluée à toutes les étapes. Remarque : Pour les cibles GOOGLE_SYSTEM_SERVICES, SINGLE_APP et GOOGLE_PLAY_SYSTEM_UPDATE, les étapes sont ignorées.

Prédicats

Un predicate définit les conditions temporelles dans lesquelles une règle s'applique, telles que les jours de la semaine, une période de la journée (à l'heure près), une plage de dates calendaires dans le fuseau horaire local de l'appareil ou la durée de disponibilité de la mise à jour pour l'appareil (en multiples de 24 heures).

Toutes les conditions définies dans un même prédicat sont combinées à l'aide d'un AND logique. Un prédicat vide ou omis est toujours évalué à true. Pour obtenir la liste complète des champs de prédicat et de leurs contraintes, consultez la documentation de référence sur Predicate.

Résultats

Un outcome spécifie comment ADP indique à l'agent de mise à jour de procéder lorsque le prédicat d'une règle est évalué à true. Le tableau suivant décrit les valeurs outcomeType acceptées :

Valeur outcomeType Description
BLOCK Empêche le téléchargement ou l'application de la mise à jour. Pour les mises à jour fournies via Google Play (GOOGLE_SYSTEM_SERVICES, SINGLE_APP, GOOGLE_PLAY_SYSTEM_UPDATE), BLOCK n'affecte que les mises à jour automatiques et n'empêche pas les mises à jour manuelles par l'utilisateur. Pour les mises à jour de l'OS OEM, BLOCK empêche les mises à jour manuelles et automatiques.
USER_PROMPT N'effectue pas l'action de mise à jour sans le consentement utilisateur et l'invite à procéder à la mise à jour.
FORCE Lance immédiatement l'action pour l'étape évaluée, comme le téléchargement de la mise à jour ou le redémarrage de l'appareil pour l'appliquer.

Limites de report maximales

UUC permet de différer les mises à jour avec un résultat BLOCK ou USER_PROMPT jusqu'à une période de report maximale pour chaque cible de mise à jour. Une fois qu'une mise à jour est disponible depuis plus longtemps que sa période de report maximale, tout résultat BLOCK ou USER_PROMPT est remplacé par la valeur par défaut, et le client de mise à jour gère la mise à jour normalement.

Le tableau suivant liste les limites de report maximales par cible et par mode de gestion :

Groupe cible Mettre à jour la cible Appareil entièrement géré Profil professionnel sur un appareil appartenant à l'entreprise
Mises à jour sans modification du niveau d'API Services système Google (comme WebView) 5 jours 5 jours
Mises à jour sans modification du niveau d'API Mises à jour du système Google Play (Mainline) et mises à jour du système OTA OEM sans modification du niveau d'API (y compris les correctifs mensuels critiques) 25 jours 25 jours
Mises à jour avec modifications du niveau d'API Mises à jour du système OTA OEM avec modification du niveau d'API 180 Jours 90 jours

Priorité de systemUpdate

Avant d'ajouter unifiedUpdatePolicy à une règle existante, vérifiez ses paramètres systemUpdate et recréez le comportement dont vous avez besoin avec des règles de contrôle d'utilisation unifié. Par exemple, pour que les mises à jour de l'OS ne soient pas effectuées pendant les heures d'ouverture, utilisez une règle BLOCK comme celle de la section Bloquer les mises à jour majeures de l'OS pendant les heures d'ouverture.

Ce comportement de priorité diffère des DPC personnalisés qui utilisent le SDK AMAPI, où un SystemUpdatePolicy AOSP est prioritaire sur l'UUC pour les mises à jour OTA OEM. Pour en savoir plus, consultez Priorité de SystemUpdatePolicy dans AOSP.

Configurer la règle UUC

Vous pouvez définir, récupérer et effacer le champ unifiedUpdatePolicy sur une ressource de règle, et vérifier la conformité des appareils qui utilisent la règle.

Définir la règle UUC

Pour configurer l'UUC, ajoutez un objet unifiedUpdatePolicy à la règle. Pour appliquer la règle UUC sans modifier les autres paramètres d'une règle existante, appelez enterprises.policies.patch avec updateMask=unifiedUpdatePolicy :

PATCH https://androidmanagement.googleapis.com/v1/enterprises/{enterpriseId}/policies/{policyId}?updateMask=unifiedUpdatePolicy
{
  "unifiedUpdatePolicy": {
    "rules": [
      {
        "id": "Block Policy",
        "targets": [
          {
            "targetType": "OS_UPDATE_WITH_API_LEVEL_CHANGE"
          }
        ],
        "predicate": {
          "daysOfWeek": [
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY"
          ],
          "timeOfDayLowerBound": { "hours": 9 },
          "timeOfDayUpperBound": { "hours": 17 }
        },
        "outcome": {
          "outcomeType": "BLOCK"
        }
      }
    ]
  }
}

La règle mise à jour est appliquée à tous les appareils qui l'utilisent. ADP évalue les règles sur chaque appareil chaque fois qu'une mise à jour est disponible pour un composant contrôlé.

Récupérer la règle UUC

Pour lire les règles UUC configurées, appelez enterprises.policies.get et inspectez le champ unifiedUpdatePolicy de la règle renvoyée :

GET https://androidmanagement.googleapis.com/v1/enterprises/{enterpriseId}/policies/{policyId}

Effacer la règle UUC

Pour supprimer toutes les règles UUC d'une stratégie, appelez enterprises.policies.patch avec updateMask=unifiedUpdatePolicy et un corps de requête qui ne contient pas unifiedUpdatePolicy :

PATCH https://androidmanagement.googleapis.com/v1/enterprises/{enterpriseId}/policies/{policyId}?updateMask=unifiedUpdatePolicy
{}

Exemples de configuration de règles

Les exemples suivants montrent l'objet unifiedUpdatePolicy pour des scénarios courants. Appliquez-les avec enterprises.policies.patch comme décrit dans Définir la règle UUC. Les mêmes scénarios sont disponibles sous forme de code Kotlin et Java dans Configurer les commandes de mise à jour unifiées avec le SDK AMAPI.

Bloquer les mises à jour majeures de l'OS pendant les horaires d'ouverture

La règle suivante bloque les mises à jour majeures de l'OS (OS_UPDATE_WITH_API_LEVEL_CHANGE) de 9h à 17h, du lundi au vendredi :

{
  "unifiedUpdatePolicy": {
    "rules": [
      {
        "id": "Block Policy",
        "targets": [
          {
            "targetType": "OS_UPDATE_WITH_API_LEVEL_CHANGE"
          }
        ],
        "predicate": {
          "daysOfWeek": [
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY"
          ],
          "timeOfDayLowerBound": { "hours": 9 },
          "timeOfDayUpperBound": { "hours": 17 }
        },
        "outcome": {
          "outcomeType": "BLOCK"
        }
      }
    ]
  }
}

Forcer les mises à jour de l'OS en fonction de l'ancienneté de la mise à jour

La règle suivante force les mises à jour majeures de l'OS qui sont disponibles pour l'appareil depuis sept jours maximum (604800s) :

{
  "unifiedUpdatePolicy": {
    "rules": [
      {
        "id": "Force Policy",
        "targets": [
          {
            "targetType": "OS_UPDATE_WITH_API_LEVEL_CHANGE"
          }
        ],
        "predicate": {
          "updateAgeUpperBound": "604800s"
        },
        "outcome": {
          "outcomeType": "FORCE"
        }
      }
    ]
  }
}

Bloquer les mises à jour d'une seule application de service système Google

Pour contrôler une application spécifique faisant partie des services système de Google, comme Android System WebView (com.google.android.webview), définissez targetType sur SINGLE_APP et indiquez le packageName de l'application dans singleApp. La règle suivante bloque les mises à jour de WebView du lundi au vendredi, de 9h à 17h :

{
  "unifiedUpdatePolicy": {
    "rules": [
      {
        "id": "Block Webview Policy",
        "targets": [
          {
            "targetType": "SINGLE_APP",
            "singleApp": {
              "packageName": "com.google.android.webview"
            }
          }
        ],
        "predicate": {
          "daysOfWeek": [
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY"
          ],
          "timeOfDayLowerBound": { "hours": 9 },
          "timeOfDayUpperBound": { "hours": 17 }
        },
        "outcome": {
          "outcomeType": "BLOCK"
        }
      }
    ]
  }
}

Combiner plusieurs règles pour toutes les cibles de mise à jour

Étant donné que les règles sont évaluées dans l'ordre, vous pouvez combiner plusieurs règles pour bloquer les mises à jour pendant des périodes spécifiques et les forcer en dehors de ces périodes.

L'exemple suivant applique deux règles séquentielles aux quatre cibles de catégorie (OS_UPDATE_WITH_API_LEVEL_CHANGE, OS_UPDATE_WITHOUT_API_LEVEL_CHANGE, GOOGLE_SYSTEM_SERVICES et GOOGLE_PLAY_SYSTEM_UPDATE) :

  1. Bloquer toutes les mises à jour pendant les horaires d'ouverture (du lundi au vendredi, de 9h à 17h).
  2. En dehors des horaires d'ouverture, forcez les mises à jour disponibles depuis sept jours maximum.
{
  "unifiedUpdatePolicy": {
    "rules": [
      {
        "id": "Block Policy - rule1",
        "targets": [
          { "targetType": "OS_UPDATE_WITH_API_LEVEL_CHANGE" },
          { "targetType": "OS_UPDATE_WITHOUT_API_LEVEL_CHANGE" },
          { "targetType": "GOOGLE_SYSTEM_SERVICES" },
          { "targetType": "GOOGLE_PLAY_SYSTEM_UPDATE" }
        ],
        "predicate": {
          "daysOfWeek": [
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY"
          ],
          "timeOfDayLowerBound": { "hours": 9 },
          "timeOfDayUpperBound": { "hours": 17 }
        },
        "outcome": {
          "outcomeType": "BLOCK"
        }
      },
      {
        "id": "Force Policy - rule2",
        "targets": [
          { "targetType": "OS_UPDATE_WITH_API_LEVEL_CHANGE" },
          { "targetType": "OS_UPDATE_WITHOUT_API_LEVEL_CHANGE" },
          { "targetType": "GOOGLE_SYSTEM_SERVICES" },
          { "targetType": "GOOGLE_PLAY_SYSTEM_UPDATE" }
        ],
        "predicate": {
          "updateAgeUpperBound": "604800s"
        },
        "outcome": {
          "outcomeType": "FORCE"
        }
      }
    ]
  }
}

Limiter les mises à jour jusqu'à une date spécifique

Vous pouvez utiliser dateLowerBound et dateUpperBound pour limiter ou autoriser les mises à jour dans une plage de dates spécifique du calendrier, dans le fuseau horaire local de l'appareil. La règle suivante bloque les mises à jour du ciblage par catégorie pour les quatre cibles jusqu'au 14 mars 2026 :

{
  "unifiedUpdatePolicy": {
    "rules": [
      {
        "id": "block_until_date",
        "targets": [
          { "targetType": "OS_UPDATE_WITH_API_LEVEL_CHANGE" },
          { "targetType": "OS_UPDATE_WITHOUT_API_LEVEL_CHANGE" },
          { "targetType": "GOOGLE_SYSTEM_SERVICES" },
          { "targetType": "GOOGLE_PLAY_SYSTEM_UPDATE" }
        ],
        "predicate": {
          "dateUpperBound": { "year": 2026, "month": 3, "day": 14 }
        },
        "outcome": {
          "outcomeType": "BLOCK"
        }
      }
    ]
  }
}