Единые настройки обновления (UUC) позволяют системным администраторам контролировать, когда скачиваются и устанавливаются обновления ПО на корпоративных устройствах Android, чтобы этот процесс не мешал работе.
С помощью одного правила UUC можно управлять обновлениями следующих компонентов ПО:
- Обновления ОС, выпущенные производителем устройства (OEM), включая основные обновления ОС, а также незначительные обновления ОС и системы безопасности.
- Обновления системы через Google Play (Mainline).
- Системные сервисы Google, например сервисы Google Play и Android System WebView, по отдельности или все сразу.
Правила UUC задаются в поле unifiedUpdatePolicy ресурса Policy. Приложение Android Device Policy (ADP) – это центральная точка принятия решений на устройстве для UUC.
Требования
Прежде чем настраивать UUC, проверьте следующие требования:
- Решение EMM может создавать и обновлять правила для предприятия.
- Устройства принадлежат компании и настроены как полностью управляемые или как корпоративные устройства с рабочим профилем. UUC не поддерживается на личных устройствах.
- Устройства соответствуют минимальным требованиям к версии Android для каждой цели обновления, которой вы хотите управлять, как показано в таблице ниже.
| Обновить цель | Полностью управляемое устройство (владелец устройства) | Рабочий профиль на корпоративных устройствах в личном пользовании (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) последовательно применяются два правила:
- Блокировать все обновления в часы работы (с понедельника по пятницу с 09:00 до 17:00).
- В нерабочее время принудительно устанавливать обновления, которые доступны не более семи дней.
{
"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"
}
}
]
}
}