Единые элементы управления обновлениями

Единые настройки обновления (UUC) позволяют системным администраторам контролировать, когда скачиваются и устанавливаются обновления ПО на корпоративных устройствах Android. Это помогает избежать сбоев в коммерческой деятельности компании.

С помощью одного правила UUC можно управлять обновлениями следующих компонентов ПО:

  • Обновления ОС, выпущенные производителем устройства (OEM), включая основные обновления ОС, а также незначительные обновления ОС и системы безопасности.
  • Обновления системы через Google Play (Mainline).
  • Системные сервисы Google, например сервисы Google Play и Android System WebView. Их можно обновить все вместе или по отдельности.

Правила UUC задаются в поле unifiedUpdatePolicy ресурса Policy. Приложение Android Device Policy (ADP) – это центральная точка принятия решений на устройстве для UUC.

Требования

Прежде чем настраивать UUC, убедитесь, что выполняются следующие требования:

Изменить цель Полностью управляемое устройство (владелец устройства) Рабочий профиль на корпоративных устройствах в личном пользовании (COPE)
Системные службы Google Play (GOOGLE_SYSTEM_SERVICES, SINGLE_APP) Android 13 (уровень API 33) или более поздняя версия Android 15 (уровень API 35) и более поздние версии
Обновления системы через Google Play/Mainline (GOOGLE_PLAY_SYSTEM_UPDATE) Android 13 (уровень API 33) или более поздняя версия Android 15 (уровень API 35) и более поздние версии
Обновления ОС – OEM-производители, использующие агент Google OTA, например Google Pixel (OS_UPDATE_WITH_API_LEVEL_CHANGE, OS_UPDATE_WITHOUT_API_LEVEL_CHANGE) Android 13 (уровень API 33) или более поздняя версия Android 15 (уровень API 35) и более поздние версии
Обновления ОС – другие OEM-производители (OS_UPDATE_WITH_API_LEVEL_CHANGE, OS_UPDATE_WITHOUT_API_LEVEL_CHANGE) Android 17 (уровень API 37) и более поздние версии Android 17 (уровень API 37) и более поздние версии

Ограничения и примечания

Прежде чем планировать интеграцию UUC, ознакомьтесь со следующими примечаниями и ограничениями:

  • Мастер первоначальной настройки. Правила UUC не применяются, пока устройство находится в мастере первоначальной настройки. Критические обновления от Google Play или агента OTA OEM могут выполняться во время настройки устройства.
  • Ранние обновления после настройки. Правила UUC могут не применяться к автоматическим обновлениям, которые запускаются сразу после настройки устройства, например к ранним обновлениям сервисов Google Play, до того, как правило достигнет ADP.
  • Пакетные беспроводные обновления. Беспроводные обновления от производителей оригинального оборудования могут содержать обновленные версии модулей Mainline и системных служб Google. При установке беспроводного обновления от OEM-производителя эти компоненты обновляются автоматически.
  • Обновления системы через Google Play (Mainline). UUC управляет обновлением Mainline как единым целым, поэтому отдельными пакетами Mainline нельзя управлять независимо. UUC управляет только началом этапа скачивания. Если скачивание обновления Mainline началось, его нельзя остановить. Если правило BLOCK применяется после начала скачивания, обновление все равно завершится при следующей перезагрузке устройства.
  • Обновления вручную в период блокировки. Правило BLOCK запрещает только автоматическое обновление системы через Google Play (Mainline) и системных служб Google. Пользователи могут вручную обновлять эти компоненты, даже если действует правило BLOCK. Проблема будет решена в дальнейших выпусках.
  • Исключения. UUC не управляет обновлениями для приложения Google Play и ADP.

Правила в отношении контента, созданного пользователями

Объект UnifiedUpdatePolicy состоит из упорядоченного списка объектов Rule. Каждое правило определяет:

  • идентификатор (id), определенный вашим EMM-решением;
  • одна или несколько целей обновления ПО;
  • необязательных этапов.
  • один или несколько необязательных предикатов, содержащих условия, связанные со временем.
  • результат, определяющий, как обрабатывается обновление.

Оценка правила

При оценке ожидающего обновления ADP учитывает все правила, которые применяются к целевому объекту и этапу этого обновления, в том порядке, в котором они указаны в rules. ADP выбирает первое правило, предикат которого оценивается как true, и применяет его результат, как в цепочке операторов if-else. Если ни один предикат правила не возвращает true, клиент обновления, ответственный за компонент, управляет обновлением в обычном режиме.

Идентификаторы правил

Для каждого правила требуется id длиной до 64 символов, определяемый вашим EMM-решением. Поле id не должно быть пустым и должно быть уникальным среди правил политики.

Обновить цели

В каждом правиле должен быть указан непустой список targets без дубликатов. Указание нескольких целей в одном правиле эквивалентно последовательному определению нескольких правил, каждое из которых имеет одну цель, в том же порядке.

В таблице ниже описаны поддерживаемые значения targetType.

На сумму targetType Описание
OS_UPDATE_WITH_API_LEVEL_CHANGE Обновление ОС, выпущенное OEM-производителем, которое меняет уровень API Android на устройстве (основное обновление ОС).
OS_UPDATE_WITHOUT_API_LEVEL_CHANGE Обновление ОС, выпущенное OEM-производителем, которое не меняет уровень API Android на устройстве (незначительные обновления ОС и системы безопасности).
GOOGLE_PLAY_SYSTEM_UPDATE Обновление системы через Google Play (Mainline). Управляет обновлением Mainline как единым объектом.
GOOGLE_SYSTEM_SERVICES Системные сервисы Google, обновляемые через Google Play, например сервисы Google Play и Android System WebView.
SINGLE_APP Название пакета сервиса в Google Play, который принадлежит GOOGLE_SYSTEM_SERVICES, например com.google.android.webview. Требуется задать singleApp с помощью packageName приложения.

Этапы оценки

Для целей OS_UPDATE_WITH_API_LEVEL_CHANGE и OS_UPDATE_WITHOUT_API_LEVEL_CHANGE можно указать stages, при котором будет оцениваться правило:

  • STAGE_DOWNLOAD – правило оценивается перед скачиванием обновления.
  • STAGE_APPLY – правило оценивается перед выполнением действия, которое применяет обновление, например перед запуском автоматической перезагрузки.

Если значение stages не задано, правило оценивается на всех этапах. Примечание. Для целей GOOGLE_SYSTEM_SERVICES, SINGLE_APP и GOOGLE_PLAY_SYSTEM_UPDATE этапы игнорируются.

Предикаты

predicate определяет временные условия, при которых правило срабатывает, например дни недели, временной интервал (с точностью до часа), диапазон календарных дат в местном часовом поясе устройства или время, в течение которого обновление было доступно для устройства (кратно 24 часам).

Все условия в одном предикате объединяются с помощью логического оператора AND. Пустой или отсутствующий предикат всегда оценивается как true. Полный список полей предикатов и их ограничений приведен в справочной документации по Predicate.

Результаты

outcome указывает, как ADP инструктирует агент обновления действовать, когда предикат правила оценивается как true. В таблице ниже описаны поддерживаемые значения outcomeType.

На сумму outcomeType Описание
BLOCK Запрещает скачивание и установку обновления. Для обновлений, распространяемых через Google Play (GOOGLE_SYSTEM_SERVICES, SINGLE_APP, GOOGLE_PLAY_SYSTEM_UPDATE), BLOCK влияет только на автоматические обновления и не препятствует обновлению вручную. Для обновлений ОС от OEM-производителя BLOCK запрещает как ручные, так и автоматические обновления.
USER_PROMPT Обновление не выполняется без согласия пользователя. Пользователю предлагается продолжить обновление.
FORCE Немедленно инициирует действие для оцененного этапа, например скачивание обновления или перезагрузку устройства для его применения.

Максимальные сроки отсрочки

UUC позволяет откладывать обновления с результатом BLOCK или USER_PROMPT на максимальный период отсрочки для каждой цели обновления. Если обновление доступно дольше, чем максимальный период отсрочки, то любой результат BLOCK или USER_PROMPT переопределяется на значение по умолчанию, и клиент обновления управляет обновлением в обычном режиме.

В таблице ниже указаны максимальные сроки отсрочки в зависимости от целевой версии и режима управления.

Целевая группа Изменить цель Полностью управляемое устройство Рабочий профиль на корпоративном устройстве
Обновления без изменения уровня API системные сервисы Google (например, WebView); 5 дней 5 дней
Обновления без изменения уровня API Обновления системы через Google Play (Mainline) и обновления системы по беспроводной сети от OEM-производителей без изменения уровня API (включая критические ежемесячные исправления). 25 дней 25 дней
Обновления с изменением уровня API Беспроводные обновления системы от OEM-производителя с изменением уровня API 180 дней 90 дней

Приоритет systemUpdate

Прежде чем добавлять unifiedUpdatePolicy в существующее правило, проверьте настройки systemUpdate и воссоздайте нужное поведение с помощью правил UUC. Например, чтобы обновления ОС не устанавливались в рабочее время, используйте правило BLOCK, как в разделе Блокировка основных обновлений ОС в рабочее время.

Это отличается от поведения специальных контроллеров политики устройств, использующих AMAPI SDK, где SystemUpdatePolicy AOSP имеет приоритет над UUC для беспроводных обновлений от OEM-производителей. Подробнее о приоритете SystemUpdatePolicy в AOSP…

Как настроить правила в отношении согласия пользователей из ЕС

Вы можете задавать, получать и очищать поле unifiedUpdatePolicy в ресурсе правила, а также проверять соответствие устройств, на которых используется это правило.

Как настроить правила для UUC

Чтобы настроить UUC, добавьте в правило объект unifiedUpdatePolicy. Чтобы применить правила UUC, не меняя другие настройки существующих правил, вызовите enterprises.policies.patch с 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"
        }
      }
    ]
  }
}

Обновленное правило будет применено ко всем устройствам, на которых оно используется. ADP оценивает правила на каждом устройстве, когда для управляемого компонента доступно обновление.

Получение правил в отношении согласия пользователей из ЕС

Чтобы прочитать настроенные правила UUC, вызовите enterprises.policies.get и проверьте поле unifiedUpdatePolicy возвращенного правила:

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

Как очистить правила UUC

Чтобы удалить из правила все правила UUC, вызовите enterprises.policies.patch с updateMask=unifiedUpdatePolicy и телом запроса, которое не содержит unifiedUpdatePolicy:

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

Примеры конфигурации правил

Ниже приведены примеры объекта unifiedUpdatePolicy для распространенных сценариев. Примените их с помощью enterprises.policies.patch, как описано в разделе Как настроить правило UUC. Те же сценарии доступны в виде кода Kotlin и Java в статье Как настроить унифицированное управление обновлениями с помощью AMAPI SDK.

Блокировать крупные обновления ОС в рабочие часы

Следующее правило блокирует основные обновления ОС (OS_UPDATE_WITH_API_LEVEL_CHANGE) с 09:00 до 17:00 с понедельника по пятницу:

{
  "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"
        }
      }
    ]
  }
}

Принудительно устанавливать обновления ОС в зависимости от их возраста

Следующее правило принудительно устанавливает основные обновления ОС, которые были доступны для устройства в течение 7 дней (604800s):

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

Как заблокировать обновления для одного приложения системных служб Google

Чтобы управлять определенным приложением, которое входит в состав системных сервисов Google, например Android System WebView (com.google.android.webview), задайте для параметра targetType значение SINGLE_APP и укажите packageName приложения в singleApp. Следующее правило блокирует обновления WebView с 09:00 до 17:00 с понедельника по пятницу:

{
  "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"
        }
      }
    ]
  }
}

Объединение нескольких правил для всех целей обновления

Поскольку правила оцениваются по порядку, вы можете комбинировать несколько правил, чтобы блокировать обновления в определенные периоды и принудительно устанавливать их в другое время.

В примере ниже два последовательных правила применяются к четырем категориям (OS_UPDATE_WITH_API_LEVEL_CHANGE, OS_UPDATE_WITHOUT_API_LEVEL_CHANGE, GOOGLE_SYSTEM_SERVICES и GOOGLE_PLAY_SYSTEM_UPDATE):

  1. Блокировать все обновления в часы работы (с понедельника по пятницу с 09:00 до 17:00).
  2. В нерабочее время принудительно устанавливать обновления, которые были доступны в течение семи дней.
{
  "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"
        }
      }
    ]
  }
}

Ограничить обновления до определенной даты

Вы можете использовать правила dateLowerBound и dateUpperBound, чтобы разрешить или запретить обновления в определенный период времени в местном часовом поясе устройства. Следующее правило блокирует обновления для четырех целей тематического таргетинга до 14 марта 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"
        }
      }
    ]
  }
}