OTA-обновления

По умолчанию Glass Enterprise не поддерживает обновления по беспроводной сети (OTA). Однако вы можете настроить базовые обновления OTA. Функциональность обновлений OTA EE2 дает владельцу устройства полный контроль над обновлениями по беспроводной сети (OTA) следующим образом:

  • Чтобы контролировать, где хранится обновление.
  • Чтобы контролировать, когда происходит обновление.
  • Чтобы контролировать, на какую сборку нацелено обновление.

Конфигурация

Чтобы разрешить обновления OTA на устройствах EE2, вам нужны конфигурации на стороне сервера и на стороне клиента.

Конфигурация на стороне сервера

Вам необходимо разместить файл обновления OTA для загрузки на сервере, доступном в вашей сети. Файл обновления следует загрузить со страницы Образы системы .

Вам также необходимо разместить файл JSON, который управляет потоком обновлений. Его необходимо отформатировать так же, как пример updater.json . Файл содержит такую ​​информацию, как размер полезной нагрузки, длина двоичного файла и другие метаданные, необходимые механизму обновления для приема двоичных файлов OTA.

Конфигурация на стороне клиента

Чтобы устройство могло проверять обновления OTA, вам необходимо настроить URL-адрес OTA и интервал опроса. Вы можете использовать намерение, чтобы начать действие, которое их настраивает. Название действия — com.google.android.glass.otaservice/.OtaSettingsActivity .

Есть 2 поддерживаемых действия:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • URL-адрес файла метаданных JSON, который опрашивает и проверяет демон.
    • Добавьте строку со следующим ключом: com.google.android.glass.otaservice.UPDATE_LOCATION .
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • Интервал, с которым демон OTA просыпается для опроса в миллисекундах.
    • Добавьте число со следующим ключом: com.google.android.glass.otaservice.UPDATE_FREQUENCY .
    • Это намерение также немедленно запускает проверку OTA, если она еще не запущена.
    • Требуется число больше 900 000 миллисекунд.
    • Если OTA уже выполняется, частотный интервал обновляется после завершения текущей проверки. Это необходимо, иначе Android Doze может прервать работу службы.

Намерение может быть отправлено startActivityForResult . Ответ отправляется обратно на обратный вызов onActivityResult либо с RESULT_OK в случае успеха, либо с RESULT_CANCELLED в случае неудачи. Затем сообщение передается в журналы устройства для устранения неполадок.

Намерение также можно отправить с помощью команд adb следующим образом:

adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
--es com.google.android.glass.otaservice.UPDATE_LOCATION "some_URL_for_json_file" \
-n com.google.android.glass.otaservice/.OtaSettingsActivity
adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
--el com.google.android.glass.otaservice.UPDATE_FREQUENCY 1800000 \
-n com.google.android.glass.otaservice/.OtaSettingsActivity

Демон OTA запускается как JobService каждые 15 минут или чаще, в зависимости от настройки частоты. Служба JobService запускается при загрузке и продолжает работать до тех пор, пока обновленная полезная нагрузка не будет принята и проверена.

Фоновая служба опрашивает, только если Wi-Fi находится в сети и подключен. Однако Wi-Fi не обязательно должен иметь доступ в Интернет, только локальная сеть.

Вся обработка происходит в фоновом режиме. Во время обработки не требуется никаких действий пользователя. Уведомление отображается в панели уведомлений, и ОС автоматически обновляется при следующей перезагрузке.

Шаги обновления

Выполните следующие действия, чтобы протестировать обновления OTA:

  1. Скачайте и вручную прошейте устройство текущим обновлением .
  2. На информационной карточке устройства Glass Settings должно быть указано: текущее обновление .
  3. Подключитесь к сети Wi-Fi.
  4. Выполните команды adb, чтобы указать на файл json для обновления до следующего обновления:

    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
    --es com.google.android.glass.otaservice.UPDATE_LOCATION "your_json_file_location" \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
    --el com.google.android.glass.otaservice.UPDATE_FREQUENCY 900000 \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
  5. Появляется уведомление о выполнении OTA.
  6. ОТА-уведомление исчезает
  7. При следующей загрузке устройства вручную оно должно быть обновлено, а на информационной карточке устройства Glass Settings должно отображаться: новое обновление

Поток обновлений

Вот стандартный процесс, с помощью которого выполняется обновление OTA:

  1. При загрузке демон OTA планирует свое первое выполнение, которое определяется указанным интервалом. Если интервал не был указан, по умолчанию он равен 15 минутам.
  2. Демон опрашивает веб-сервер, чтобы загрузить файл метаданных. Если URL-адрес не был предоставлен, демон завершает работу и ожидает следующего интервала выполнения.
  3. Демон выполняет предварительную проверку файла метаданных, чтобы убедиться, что установлены правильные флаги. Если есть ошибка, демон завершает работу и печатает вывод в журналы. Затем демон ожидает следующего запланированного выполнения.
  4. Демон сравнивает записи в файле JSON с записями, извлеченными из текущей сборки, работающей на устройстве. Если для какой-либо из этих записей обнаружено несоответствие, начинается OTA-загрузка. Содержимое файла метаданных передается механизму обновления AOSP.

    Обновление нельзя приостановить. Он продолжается до тех пор, пока не завершится успех, сбой или истечет время ожидания.

  5. Демон автоматически загружает пакет OTA в фоновом режиме.
  6. Если пакет OTA был загружен и успешно проверен, демон прекращает опрос новых обновлений. После перезагрузки обновление действительно вступает в силу. Появится уведомление, информирующее пользователя о том, что обновление будет применено при следующей перезагрузке.
  7. Если загрузка OTA не удалась, демон снова опрашивает веб-сервер по истечении указанного интервала.

Обновления приложений

Обновления приложений в EE2 следует обрабатывать как стандартные обновления Android. Есть два основных варианта:

  1. Используйте решение MDM или создайте собственное приложение владельца устройства и автоматически обновите приложение. Для этого вы можете использовать PackageInstaller Android API.
  2. Используйте Android API PackageInstaller непосредственно из своего приложения, чтобы оно само обновлялось. В этом случае появляется системный диалог.