OTA 更新

Glass Enterprise 開箱後,就無法使用無線更新 (OTA) 功能。不過,您還是可以設定基本的 OTA 更新。EE2 OTA 更新功能可讓裝置擁有者完整控制無線更新 (OTA) 的方式:

  • 控管更新的儲存位置。
  • 控管更新時間。
  • 控管更新目標建構條件,

設定

如要在 EE2 裝置上允許 OTA 更新,您必須採用伺服器端和用戶端設定。

伺服器端設定

您必須在主機裝置上託管 OTA 更新檔案,以便透過網路進行存取。從系統映像檔頁面下載更新檔案。

此外,您也必須託管 JSON 檔案,藉此推動更新流程。格式必須設為 updater sample.json 範例。檔案含有酬載大小、二進位檔長度,以及更新引擎接受 OTA 二進位檔所需的其他中繼資料等資訊。

用戶端設定

您必須設定 OTA 網址和輪詢間隔,裝置才能檢查 OTA 更新。您可以利用意圖來啟動設定。活動名稱為 com.google.android.glass.otaservice/.OtaSettingsActivity

支援以下 2 種動作:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • JSON Daemon 輪詢及檢查的 JSON 中繼資料檔案網址。
    • 請使用以下索引鍵附加字串:com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • OTA Daemon 的喚醒間隔 (以毫秒為單位)。
    • 請使用以下索引鍵附加數字:com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • 如果意圖尚未執行 OTA 檢查,系統會立即啟動這個 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 Daemon 每隔 15 分鐘會執行一次 JobService,視頻率設定而定。JobService 會在開機時執行,並會持續接受並更新更新後的酬載。

只有在連上 Wi-Fi 並連上網路時,背景服務才會輪詢。不過,Wi-Fi 不需要網際網路連線,也只需要 LAN。

所有處理作業都會在背景進行。處理時不需要輸入使用者。 通知導覽匣會顯示通知,並在下次重新啟動時自動更新 OS。

更新步驟

請按照下列步驟測試 OTA 更新:

  1. 使用目前的更新來下載並手動刷新裝置。
  2. Glass 設定的裝置資訊卡應顯示「目前的更新」
  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. OTA 通知消失
  7. 下次手動啟動裝置時,裝置應進行更新,G Glass 設定的裝置資訊卡應顯示:新的更新

更新流程

執行 OTA 更新的標準程序如下:

  1. 啟動後,OTA Daemon 將以指定的間隔時間決定首次執行作業。如果沒有提供任何時間間隔,系統將預設為 15 分鐘。
  2. Daemon 會輪詢網路伺服器來下載中繼資料檔案。如未提供網址,Daemon 會結束,並等待下一個執行間隔。
  3. Daemon 會在中繼資料檔案上執行初步檢查,確保已設定適當的旗標。如果發生錯誤,Daemon 會結束,並將輸出內容輸出至記錄檔。Daemon 會等待下一個排定的執行作業。
  4. Daemon 會將 JSON 檔案中的項目與在裝置上執行的目前建構項目提取的項目進行比較。如果系統偵測到任何使用者的項目不符,即會開始下載 OTA。中繼資料檔案的內容會傳遞至 Android 開放原始碼計畫更新引擎。

    無法暫停更新。直到回應成功、失敗或逾時為止。

  5. Daemon 會在背景自動下載 OTA 套件。
  6. 如果您已下載並驗證 OTA 套件,Daemon 便會停止輪詢更新。重新啟動後,更新就會生效。系統會顯示通知,通知使用者下次重新啟動時將套用更新。
  7. 如果 OTA 下載失敗,Daemon 會在指定間隔再次出現後,對網路伺服器進行輪詢。

應用程式更新

系統會將 EE2 中的應用程式更新視為標準 Android 更新處理。主要分為兩個選項:

  1. 使用行動裝置管理 (MDM) 解決方案,或建構自己的裝置擁有者應用程式,並以無訊息方式更新應用程式。您可以使用 Android API PackageInstaller 執行這項作業。
  2. 直接透過您的應用程式使用 Android API PackageInstaller,以便自行更新。在這種情況下,系統會顯示系統對話方塊。