企業 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表示自 Epoch 以來以毫秒數為單位查詢安裝選項的時間。使用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 更新。