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
策略是否有效:
- 設置自動策略並指定
TYPE_PAUSE
。 - 在系統時鐘處於暫停期間,推送 OTA 更新。
- 驗證設備未進行 OTA 更新,並且用戶無法手動安裝更新。
- 如果設備是 A/B 設備,請重新啟動設備並驗證重新啟動沒有觸發自動安裝更新。
政策TYPE_PAUSE
已過期
要驗證過期的TYPE_PAUSE
策略是否有效:
- 設置自動策略並指定
TYPE_PAUSE
。 - 在系統時鐘處於暫停期間,推送 OTA 更新。
- 等待暫停時間到期。
- 驗證設備自動重啟,並在重啟後進行 OTA 更新。