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
ポリシーが動作しているかを検証するには、次の手順を行います。
- 自動ポリシーを設定し、
TYPE_PAUSE
を指定します。 - システム クロックが一時停止期間中である場合は、OTA アップデートをプッシュします。
- デバイスが OTA アップデートを取得せず、ユーザーがアップデートを手動でインストールできないことを確認します。
- デバイスが A/B デバイスの場合は、デバイスを再起動し、再起動してもアップデートの自動インストールが開始されないことを確認します。
TYPE_PAUSE ポリシーの有効期限が切れている場合
有効期限が切れた TYPE_PAUSE
ポリシーが動作しているかを検証するには、次の手順を行います。
- 自動ポリシーを設定し、
TYPE_PAUSE
を指定します。 - システム クロックが一時停止期間中である場合は、OTA アップデートをプッシュします。
- 一時停止期間が終了するのを待ちます。
- デバイスが自動的に再起動し、再起動後に OTA アップデートが取得されたことを確認します。