OTA 更新

Glass Enterprise 不具备执行无线下载 (OTA) 更新的条件。不过,您可以配置基本 OTA 更新。EE2 OTA 更新功能可让设备所有者完全控制无线下载 (OTA) 更新,如下所示:

  • 控制更新的存储位置。
  • 控制何时更新。
  • 控制更新的目标 build。

配置

要允许在 EE2 设备中进行 OTA 更新,您需要服务器端和客户端配置。

服务器端配置

您需要将 OTA 更新文件托管在可通过网络访问的服务器中下载。应从系统映像页面下载更新文件。

您还需要托管一个 JSON 文件以推动更新流程。该文件的格式需要与 updater sample.json 示例一样。此文件包含载荷大小、二进制文件长度等信息,以及更新引擎接受 OTA 二进制文件时需要的其他元数据。

客户端配置

为了让设备检查 OTA 更新,您需要设置 OTA 网址和轮询间隔。您可以使用 Intent 启动设置它们的 Activity。Activity 的名称为 com.google.android.glass.otaservice/.OtaSettingsActivity

支持 2 种操作:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • 守护程序轮询和检查的 JSON 元数据文件的网址。
    • 使用以下键附加字符串:com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • OTA 守护程序唤醒以轮询的时间间隔(以毫秒为单位)。
    • 使用以下键附加数字:com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • 此 Intent 也会立即开始 OTA 检查(如果尚未运行)。
    • 必须输入大于 900000 毫秒的数字
    • 如果 OTA 已在进行中,那么当前检查完成后就会更新频率间隔。这是必需操作,否则 Android 低电耗模式可能会中断服务。

intent 可以通过 startActivityForResult 发送。响应发送回 onActivityResult 回调;如果响应成功,返回 RESULT_OK;如果失败,返回 RESULT_CANCELLED。然后将消息传送到设备日志,以进行问题排查。

此 intent 也可以通过 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 守护程序每 15 分钟或以上运行为 JobService,具体取决于频率设置。JobService 会在启动时运行,并会持续运行,直到系统接受并验证经过更新的载荷。

仅当 WLAN 在线且已连接时,后台服务才会进行轮询。不过,Wi-Fi 无需连接到互联网,只需要 LAN。

所有处理操作均在后台进行。处理时不需要用户输入。 抽屉式通知栏中会显示一条通知,并且会在下次重新启动时自动更新操作系统。

更新步骤

如需测试 OTA 更新,请按以下步骤操作:

  1. 使用当前更新下载并手动刷写设备。
  2. Glass 设置设备信息卡片应显示:最新更新
  3. 连接到 WLAN 网络。
  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. OTA 通知消失
  7. 下次手动启动设备时,设备应该已经更新,并且 Glass Glass 设置设备信息卡片应显示:新更新

更新流程

以下是执行 OTA 更新的标准流程:

  1. 启动时,OTA 守护程序会安排其首次执行,该执行由指定的时间间隔决定。如果未提供时间间隔,则默认为 15 分钟。
  2. 守护程序会轮询网络服务器以下载元数据文件。如果未提供网址,守护程序会退出并等待下一个执行间隔。
  3. 守护程序会对元数据文件运行初步检查,以确保已设置适当的标志。如果出现错误,守护程序会退出并将输出输出到日志中。然后,守护程序会等待下一次计划执行。
  4. 守护程序会将 JSON 文件中的条目与从设备上运行的当前 build 中拉取的条目进行比较。如果检测到其中任何条目不匹配,就会开始 OTA 下载。元数据文件中的内容会传递到 AOSP 更新引擎。

    无法暂停更新。直到成功、失败或超时为止。

  5. 守护程序会自动在后台下载 OTA 软件包。
  6. 如果 OTA 软件包已下载并成功通过验证,守护程序将停止轮询是否有新的更新。重新启动后,更新实际上会生效。系统会显示一条通知,告知用户系统会在下次重新启动时应用更新。
  7. 如果 OTA 下载失败,守护程序会在指定的时间间隔过后再次轮询 Web 服务器。

应用更新

应将 EE2 中的应用更新作为标准 Android 更新进行处理。有以下两个主要选项:

  1. 使用 MDM 解决方案或构建您自己的设备所有者应用,并静默更新应用。您可以使用 Android API PackageInstaller 执行此操作。
  2. 直接从您的应用中使用 Android API PackageInstaller,以使其自行更新。在这种情况下,系统会显示一个系统对话框。