Корпоративные 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 выполняется после перезагрузки.