Корпоративные OTA-обновления

Обновляемое программное обеспечение документа определения совместимости Android (CDD) требует, чтобы устройства реализовали класс SystemUpdatePolicy . SystemUpdatePolicy позволяет приложению владельца устройства (DO), если оно имеется, контролировать установку обновлений системы.

Уведомление владельцев устройств

Клиент беспроводного доступа (OTA) должен уведомлять приложения владельца устройства о входящих обновлениях OTA с помощью системного API. OTA-клиент также должен включать запись времени, когда OTA-обновление впервые стало доступно. Клиенты OTA могут вызывать DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch) для уведомления приложений владельца устройства. Если клиент OTA не знает, является ли обновление исправлением безопасности, клиент OTA может вернуться к использованию DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime) .

Если обновление в данный момент недоступно, OTA-клиент сообщает об этом, устанавливая для аргумента updateReceivedTime значение -1 . Мы рекомендуем отправлять уведомления всякий раз, когда клиент OTA опрашивает сервер OTA или когда OTA отправляется клиенту. Вы также можете отправлять уведомления чаще.

Политика обновления системы

Android 9 расширяет возможности владельцев устройств по контролю обновлений , позволяя владельцам устройств откладывать обновления OTA на срок до 90 дней. Эта функция, ориентированная на решения для выделенных устройств (ранее называвшихся COSU), позволяет владельцам приостанавливать версию ОС, работающую на устройствах, в критические периоды, например, в праздничные дни.

Чтобы соответствовать требованиям CDD, OTA-клиент должен реализовать поведенческие политики. Оператор DO может установить следующие политики, которые должны соблюдаться подсистемами обновления системы устройства:

Владельцы устройств также могут устанавливать периоды заморозки (в Android 9 или более поздних версиях), которые приостанавливают версию ОС в критические периоды, например, в праздники или в другое загруженное время. Система не устанавливает обновления OTA во время периода заморозки. Мы рекомендуем использовать SystemUpdatePolicy.InstallationOption (см. следующий раздел), однако клиент OTA также может вызвать SystemUpdatePolicy.getFreezePeriods() , чтобы проверить, находится ли устройство в периоде заморозки.

Реализация вариантов установки

В Android 9 представлен @SystemApi, SystemUpdatePolicy.InstallationOption , предназначенный для клиентов обновления системы. SystemUpdatePolicy.InstallationOption служит классом-оболочкой для политик и периодов заморозки. Опция установки сообщает клиентам, как действовать при входящих обновлениях системы и как долго это действие действительно, с учетом текущей политики обновления системы или любого периода заморозки, который может быть установлен. Вариант установки может быть одним из следующих:

  • TYPE_INSTALL_AUTOMATIC — Приходящие обновления системы устанавливаются сразу и без вмешательства пользователя, как только они становятся доступными. Устройство автоматически перезагружается.
  • TYPE_POSTPONE — входящие обновления системы могут быть отложены максимум на 30 дней. Пользователи не могут установить обновление вручную. Производители устройств могут выбирать, блокировать обновления безопасности или нет.
  • TYPE_PAUSE — входящие обновления системы могут быть отложены на неопределенный срок до дальнейшего уведомления. Пользователи не могут установить обновление вручную. TYPE_PAUSE задерживает все обновления, включая исправления безопасности.

Клиенты обновления системы могут запрашивать SystemUpdatePolicy.InstallationOption с помощью SystemUpdatePolicy.getInstallationOptionAt(long when ) , где when представляет время запроса параметра установки в миллисекундах с момента начала эпохи. Используя метод SystemUpdatePolicy.getInstallationOptionAt(long when ) , клиенты обновления системы могут действовать в соответствии с возвращаемым параметром до тех пор, пока не истечет эффективное время. По истечении срока действия возвращаемого параметра клиент может выполнить еще один запрос, используя новую временную метку, для самого последнего параметра.

Клиент обновления системы должен прослушивать широковещательные сообщения DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED в случае обновления всей политики.

Проверка политики TYPE_PAUSE

Вы можете вручную проверить, работает ли опция TYPE_PAUSE в системе OTA.

Политика TYPE_PAUSE действует.

Чтобы убедиться, что политика TYPE_PAUSE работает:

  1. Установите автоматическую политику и укажите TYPE_PAUSE .
  2. Пока системные часы находятся в режиме паузы, отправьте OTA-обновление.
  3. Убедитесь, что устройство не принимает обновление OTA и пользователь не может установить обновление вручную.
  4. Если устройство относится к категории A/B, перезагрузите устройство и убедитесь, что перезагрузка не вызвала автоматическую установку обновления.

Срок действия политики TYPE_PAUSE истек.

Чтобы убедиться, что политика TYPE_PAUSE с истекшим сроком действия работает:

  1. Установите автоматическую политику и укажите TYPE_PAUSE .
  2. Пока системные часы находятся в режиме паузы, отправьте OTA-обновление.
  3. Подождите, пока истечет время паузы.
  4. Убедитесь, что устройство автоматически перезагружается и OTA-обновление выполняется после перезагрузки.