エンタープライズ OTA アップデート

Android Compatibility Definition Document(CDD)Updatable Software は、デバイスに SystemUpdatePolicy クラスを実装する必要があります。SystemUpdatePolicy を使用すると、デバイス所有者(DO)アプリ(存在する場合)でシステム アップデートのインストールを制御できます。

デバイス所有者に通知する

OTA クライアントは、システム API を使用して、受信した OTA アップデートについてデバイス所有者アプリに通知する必要があります。また、OTA クライアントには、OTA アップデートが最初に利用可能になったときのタイムスタンプの記録も含める必要があります。OTA クライアントは DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch) を呼び出してデバイス所有者のアプリに通知できます。アップデートがセキュリティ パッチかどうかわからない場合、OTA クライアントは代わりに DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime) を使用します。

アップデートが利用できない場合、OTA クライアントは updateReceivedTime 引数を -1 に設定することでて、それを報告します。 OTA クライアントが OTA サーバーをポーリングするときや、OTA がクライアントにプッシュされたときに、必ず通知を送信することをおすすめします。より高い頻度で通知を送信することもできます。

システム アップデート ポリシー

Android 9 では、デバイス所有者がアップデートを制御できる機能が強化され、OTA アップデートを最大 90 日間延期できます。特に、特定用途向けデバイス(以前の名称: COSU)では、重要度の高い期間(休日など)に、デバイスで実行されている OS バージョンを凍結できます。

CDD に準拠するには、OTA クライアントに動作ポリシーを実装する必要があります。デバイス所有者は次のポリシーを設定できます。デバイス システム アップデートのサブシステムはこのポリシーに準拠する必要があります。

デバイス所有者は、休日やその他の忙しい時間などの重要な期間に 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 はインストール オプションがクエリされるエポックからのタイミング(ミリ秒数)を表します。システム アップデート クライアントは、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 アップデートが取得されたことを確認します。