OTA アップデート

Glass Enterprise には、無線(OTA)アップデートを実行する準備ができていません。ただし、基本的な OTA アップデートを構成することは可能です。EE2 OTA アップデート機能により、デバイス所有者は無線(OTA)アップデートを次のように完全に制御できます。

  • 更新の保存場所を制御するため。
  • 更新のタイミングを制御するため。
  • 更新ターゲットのビルドを制御する。

構成

EE2 デバイスで OTA アップデートを許可するには、サーバー側とクライアント側の設定が必要です。

サーバー側の構成

ネットワーク上でアクセスできるサーバーに、ダウンロードされる OTA アップデート ファイルをホストする必要があります。アップデート ファイルは、[System images] ページからダウンロードする必要があります。

また、更新フローを推進する JSON ファイルをホストする必要があります。updater sample.json の例のような形式にする必要があります。このファイルには、アップデート エンジンが OTA バイナリを受け入れるために必要なペイロード サイズ、バイナリ長、その他のメタデータなどの情報が含まれています。

クライアントサイドの構成

デバイスで OTA アップデートをチェックできるようにするには、OTA URL とポーリング間隔を設定する必要があります。インテントを使用すると、インテントを設定するアクティビティを開始できます。アクティビティの名前は com.google.android.glass.otaservice/.OtaSettingsActivity です。

サポートされているアクションは 2 つあります。

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • デーモンがポーリングして調査する JSON メタデータ ファイルの URL。
    • 次のキーを含む文字列を追加します: com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • OTA デーモンがポーリングして復帰する間隔(ミリ秒単位)。
    • 鍵に数字を付加: com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • このインテントは、OTA チェックがまだ実行されていない場合、直ちに OTA チェックを開始します。
    • 900,000 ミリ秒を超える数値は必須です
    • OTA がすでに進行中の場合、頻度チェックは現在のチェックの完了後に更新されます。これは必須であり、そうしないと Android Doze がサービスが中断する可能性があります。

インテントは startActivityForResult によって送信されます。レスポンスは、成功時に RESULT_OK または失敗時に RESULT_CANCELLEDonActivityResult コールバックに返されます。トラブルシューティングの目的で、メッセージがデバイスログにパイプされます。

次のように、adb コマンドでインテントを送信することもできます。

adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
--es com.google.android.glass.otaservice.UPDATE_LOCATION "some_URL_for_json_file" \
-n com.google.android.glass.otaservice/.OtaSettingsActivity
adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
--el com.google.android.glass.otaservice.UPDATE_FREQUENCY 1800000 \
-n com.google.android.glass.otaservice/.OtaSettingsActivity

OTA デーモンは、頻度の設定に応じて、15 分以上ごとに JobService として実行されます。JobService は起動時に実行され、更新されたペイロードが承認されて検証されるまで実行されます。

バックグラウンド サービスは、Wi-Fi がオンラインで接続されている場合にのみポーリングします。ただし、Wi-Fi は LAN のみを必要とし、インターネットへのアクセスは必要ありません。

すべての処理はバックグラウンドで行われます。処理中もユーザー入力は必要ありません。 通知ドロワーに通知が表示され、次の再起動時に OS が自動的に更新されます。

ステップを更新する

OTA アップデートをテストする手順は次のとおりです。

  1. 現在のアップデートでデバイスをダウンロードして手動でフラッシュします。
  2. Glass 設定デバイス情報カードには、現在のアップデートが表示されます。
  3. Wi-Fi ネットワークに接続します。
  4. adb コマンドを実行して、json ファイルを指定し、次回の更新を行います。

    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
    --es com.google.android.glass.otaservice.UPDATE_LOCATION "your_json_file_location" \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
    --el com.google.android.glass.otaservice.UPDATE_FREQUENCY 900000 \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
  5. OTA の進行中の通知が表示されます
  6. OTA 通知が消える
  7. 次の手動デバイス起動時にデバイスは更新されており、Glass 設定のデバイス情報カードに「new update」と表示されます。

更新フロー

OTA アップデートを実行する標準のプロセスは次のとおりです。

  1. OTA デーモンは、起動時に最初の実行をスケジュールします。この実行は、指定された間隔で行われます。まだインターバルが指定されていない場合、デフォルトは 15 分です。
  2. デーモンがウェブサーバーをポーリングして、メタデータ ファイルをダウンロードします。URL が指定されていない場合、デーモンは終了し、次の実行間隔まで待機します。
  3. デーモンは、メタデータ ファイルに対して予備チェックを実行し、適切なフラグが設定されていることを確認します。エラーが発生した場合、デーモンは終了し、出力をログに出力します。デーモンは、次回のスケジュールされた実行まで待機します。
  4. デーモンは、JSON ファイルのエントリと、デバイスで実行されている現在のビルドから取得されたエントリを比較します。これらのエントリのいずれかで不一致が検出されると、OTA ダウンロードが開始されます。メタデータ ファイル内のコンテンツは、AOSP アップデート エンジンに渡されます。

    更新は一時停止できません。成功するか失敗するか、タイムアウトが発生するまで続きます。

  5. デーモンは、バックグラウンドで OTA パッケージを自動的にダウンロードします。
  6. OTA パッケージをダウンロードして正常に検証すると、デーモンは新しいアップデートのポーリングを停止します。再起動すると、アップデートが実際に有効になります。次回の再起動時にアップデートが適用されることを知らせる通知が表示されます。
  7. OTA のダウンロードが失敗した場合、デーモンは指定された間隔が経過した後にウェブサーバーをポーリングします。

アプリケーションの更新

EE2 でのアプリ アップデートは、Android の標準アップデートとして扱う必要があります。主に 2 つのオプションがあります。

  1. MDM ソリューションを使用するか、独自のデバイス所有者アプリケーションをビルドし、通知なくアプリを更新します。これを行うには、Android API の PackageInstaller を使用します。
  2. Android API の PackageInstaller をアプリから直接使用して、自動的に更新します。この場合、システム ダイアログが表示されます。