Обновляемое программное обеспечение документа определения совместимости 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 представляет время запроса параметра установки в миллисекундах с момента Epoch. Используя метод SystemUpdatePolicy.getInstallationOptionAt(long when )
, клиенты обновления системы могут действовать в соответствии с возвращаемым параметром до тех пор, пока не истечет эффективное время. По истечении срока действия возвращаемого параметра клиент может выполнить еще один запрос, используя новую временную метку, для самого последнего параметра.
Клиент обновления системы должен прослушивать широковещательные сообщения DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
в случае обновления всей политики.
Проверьте политику TYPE_PAUSE
Вы можете вручную проверить, работает ли опция TYPE_PAUSE
в системе OTA.
Политика TYPE_PAUSE действует.
Чтобы убедиться, что политика TYPE_PAUSE
работает:
- Установите автоматическую политику и укажите
TYPE_PAUSE
. - Пока системные часы находятся в режиме паузы, отправьте OTA-обновление.
- Убедитесь, что устройство не принимает обновление OTA и пользователь не может установить обновление вручную.
- Если устройство является устройством A/B, перезагрузите устройство и убедитесь, что перезагрузка не вызвала автоматическую установку обновления.
Срок действия политики TYPE_PAUSE истек.
Чтобы убедиться, что политика TYPE_PAUSE
с истекшим сроком действия работает:
- Установите автоматическую политику и укажите
TYPE_PAUSE
. - Пока системные часы находятся в режиме паузы, отправьте OTA-обновление.
- Подождите, пока истечет время паузы.
- Убедитесь, что устройство автоматически перезагружается и OTA-обновление выполняется после перезагрузки.