Enterprise 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 可以設定下列政策,且該政策必須 具公信力:

裝置擁有者也可以 設定 凍結 OS 版本的凍結期間 (適用於 Android 9 以上版本) ,例如假日或其他忙碌時段。系統 未在凍結期間安裝 OTA 更新。建議您使用 SystemUpdatePolicy.InstallationOption (請參閱下一節),不過 OTA 用戶端也可以呼叫 SystemUpdatePolicy.getFreezePeriods(),確認裝置是否處於凍結期。

實作安裝選項

Android 9 推出了專為系統更新用戶端設計的 @SystemApi SystemUpdatePolicy.InstallationOptionSystemUpdatePolicy.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 更新 重新啟動的所有執行個體