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

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

При настройке временных интервалов (timeOfDayLowerBound и timeOfDayUpperBound) учитывайте следующие правила:

  • Границы часов. Границы времени суток оцениваются как hh:00:00 в местном часовом поясе устройства. timeOfDayUpperBound закрывает окно в указанный час (например, нижняя граница 9 и верхняя граница 17 охватывают период с 09:00 до 17:00).
  • Допустимый порядок границ: если в одном правиле заданы обе границы, timeOfDayUpperBound должно быть строго больше timeOfDayLowerBound. Если timeOfDayUpperBound меньше или равно timeOfDayLowerBound или задано как 0 (00:00), предикат оценивается как false.
  • Окончание дня и ночные интервалы. Чтобы продлить интервал до конца дня (24:00), не указывайте timeOfDayUpperBound. Чтобы задать ночной интервал, который включает полночь (например, с 22:00 до 04:00), разделите его на два последовательных правила: вечернее, в котором задано только значение timeOfDayLowerBound ({ "hours": 22 }), и утреннее, в котором задано только значение timeOfDayUpperBound ({ "hours": 4 }, с таргетингом на следующий день, если задано значение daysOfWeek).

Результаты

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

На сумму outcomeType Описание
BLOCK Запрещает скачивание и установку обновления. Для обновлений, распространяемых через Google Play (GOOGLE_SYSTEM_SERVICES, SINGLE_APP, GOOGLE_PLAY_SYSTEM_UPDATE), правило BLOCK влияет только на автоматические обновления и не запрещает пользователю обновлять приложения вручную. Для обновлений ОС от OEM-производителей BLOCK запрещает как ручные, так и автоматические обновления.
USER_PROMPT Обновление не выполняется без согласия пользователя. Пользователю предлагается продолжить обновление.
FORCE Обновление начинается сразу без согласия пользователя. При скачивании FORCE использует активное сетевое подключение (например, Wi-Fi или мобильный интернет, в том числе в роуминге). Если в STAGE_APPLY есть обновления ОС от OEM (OS_UPDATE_WITH_API_LEVEL_CHANGE и OS_UPDATE_WITHOUT_API_LEVEL_CHANGE), 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, как в разделе Блокировка основных обновлений ОС в рабочее время.

Это отличается от поведения пользовательских DPC, использующих AMAPI SDK, где SystemUpdatePolicy AOSP имеет приоритет над UUC для беспроводных обновлений OEM. Подробнее о приоритете SystemUpdatePolicy в AOSP… Если на устройстве активен сервис управления обновлениями от производителя оригинального оборудования (например, корпоративное решение для беспроводных обновлений), то он также имеет приоритет над UUC для обновлений ОС от производителя оригинального оборудования (OS_UPDATE_WITH_API_LEVEL_CHANGE и OS_UPDATE_WITHOUT_API_LEVEL_CHANGE).

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

Вы можете задавать, получать и очищать поле 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

Чтобы прочитать настроенные правила 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"
        }
      }
    ]
  }
}