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 更新。