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 可以設定下列政策,且該政策必須 具公信力:
裝置擁有者也可以
設定
凍結 OS 版本的凍結期間 (適用於 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 更新 重新啟動的所有執行個體