企業 OTA 更新

Android 相容性定義文件 (CDD) 可更新軟體要求裝置實作SystemUpdatePolicy類別。 SystemUpdatePolicy允許設備擁有者 (DO) 應用程式(如果存在)控制系統更新的安裝。

通知設備所有者

無線 (OTA) 用戶端必須使用系統 API 通知裝置擁有者應用程式傳入的 OTA 更新。 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.getInstallationOptionAt(long when )查詢SystemUpdatePolicy.InstallationOption ,其中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 更新。