OTA-Updates

Standardmäßig ist Glass Enterprise nicht für die Durchführung von OTA-Updates (Over The Air) ausgerüstet. Es ist jedoch möglich, grundlegende OTA-Updates zu konfigurieren. Mit den EE2-OTA-Updatefunktionen kann der Geräteinhaber die OTA-Updates (Over The Air) so steuern:

  • Damit legen Sie fest, wo das Update gespeichert wird.
  • Sie können festlegen, wann das Update durchgeführt wird.
  • Um zu steuern, was die Aktualisierungsziele erstellt werden.

Konfiguration

Damit OTA-Updates in EE2-Geräten möglich sind, benötigen Sie serverseitige und clientseitige Konfigurationen.

Serverseitige Konfiguration

Sie müssen die OTA-Aktualisierungsdatei auf einem Server hosten, der in Ihrem Netzwerk zugänglich ist. Die Updatedatei sollte von der Seite Systemimages heruntergeladen werden.

Außerdem müssen Sie eine JSON-Datei hosten, die den Aktualisierungsvorgang unterstützt. Er muss genau wie im Beispiel updater sample.json formatiert sein. Die Datei enthält Informationen wie die Nutzlastgröße, binäre Länge und andere Metadaten, die von der Update-Engine benötigt werden, um die OTA-Binärdateien zu akzeptieren.

Clientseitige Konfiguration

Damit ein Gerät nach OTA-Updates suchen kann, musst du die OTA-URL und das Abfrageintervall einrichten. Sie können einen Intent verwenden, um eine Aktivität zu starten. Der Name der Aktivität lautet com.google.android.glass.otaservice/.OtaSettingsActivity.

Es gibt zwei unterstützte Aktionen:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • Die URL der JSON-Metadatendatei, die der Daemon abfragt und untersucht.
    • Hängen Sie einen String mit dem folgenden Schlüssel an: com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • Das Intervall, in dem der OTA-Daemon in Millisekunden geweckt wird, um eine Abfrage auszuführen.
    • Hängen Sie eine Zahl mit dem folgenden Schlüssel an: com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • Dieser Intent startet außerdem sofort eine OTA-Prüfung, falls noch keine ausgeführt wird.
    • Eine Zahl größer als 900.000 Millisekunden ist erforderlich
    • Wenn bereits ein OTA-Test läuft, wird das Häufigkeitsintervall nach Abschluss der aktuellen Prüfung aktualisiert. Dies ist erforderlich, andernfalls kann der Dienst von Android Doze unterbrochen werden.

Der Intent kann von einem startActivityForResult gesendet werden. Eine Antwort wird mit einem RESULT_OK bei Erfolg oder RESULT_CANCELLED bei einem Fehler an den onActivityResult-Callback zurückgesendet. Zur Fehlerbehebung wird dann eine Nachricht an die Geräteprotokolle gesendet.

Der Intent kann auch durch ADB-Befehle gesendet werden:

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

Der OTA-Daemon wird je nach Häufigkeitseinstellung alle 15 Minuten oder länger als JobService ausgeführt. JobService wird beim Booten ausgeführt und so lange ausgeführt, bis eine aktualisierte Nutzlast akzeptiert und verifiziert wurde.

Der Hintergrunddienst fragt nur dann ab, wenn das WLAN online und verbunden ist. Für das WLAN ist jedoch keine Internetverbindung erforderlich, nur LAN.

Die gesamte Verarbeitung erfolgt im Hintergrund. Während der Verarbeitung ist keine Nutzereingabe erforderlich. Eine Benachrichtigung wird auf der Benachrichtigungsleiste angezeigt und das Betriebssystem wird beim nächsten Neustart automatisch aktualisiert.

Schritte aktualisieren

So testen Sie OTA-Updates:

  1. Laden Sie das Gerät herunter und installieren Sie es mit dem aktuellen Update manuell.
  2. Die Infokarte für die Glass-Einstellungen des Geräts sollte angezeigt werden: aktuelles Update.
  3. Stellen Sie eine WLAN-Verbindung her.
  4. Führen Sie ADB-Befehle aus, die auf Ihre JSON-Datei verweisen, um auf das nächste Update zu aktualisieren:

    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. Die Benachrichtigung zu OTA wird angezeigt
  6. Die OTA-Benachrichtigung verschwindet
  7. Beim nächsten manuellen Start des Geräts sollte das Gerät aktualisiert worden sein und die Infokarte für die Glass-Einstellungen sollte angezeigt werden: new update

Ablauf aktualisieren

Standardverfahren, mit dem das OTA-Update durchgeführt wird:

  1. Beim Start plant der OTA-Daemon seine erste Ausführung, die durch das angegebene Intervall bestimmt wird. Wenn kein Intervall angegeben wurde, wird standardmäßig 15 Minuten verwendet.
  2. Der Daemon fragt den Webserver ab, um die Metadatendatei herunterzuladen. Wenn keine URL angegeben wurde, wird der Daemon geschlossen und wartet bis zum nächsten Ausführungsintervall.
  3. Der Daemon führt vorläufige Prüfungen der Metadatendatei durch, um sicherzustellen, dass die richtigen Flags festgelegt wurden. Wenn ein Fehler auftritt, wird der Daemon beendet und die Ausgabe in den Logs ausgegeben. Der Daemon wartet dann auf die nächste geplante Ausführung.
  4. Der Daemon vergleicht die Einträge in der JSON-Datei mit denen aus dem aktuellen Build, der auf dem Gerät ausgeführt wird. Wenn für einen dieser Einträge eine Abweichung festgestellt wird, wird ein OTA-Download gestartet. Inhalte aus der Metadatendatei werden an die AOSP-Update-Engine übergeben.

    Die Aktualisierung kann nicht pausiert werden. Der Vorgang wird fortgesetzt, bis er erfolgreich abgeschlossen wird, fehlschlägt oder eine Zeitüberschreitung auftritt.

  5. Der Daemon lädt das OTA-Paket automatisch im Hintergrund herunter.
  6. Wenn das OTA-Paket heruntergeladen und erfolgreich verifiziert wurde, fordert der Daemon keine neuen Updates mehr an. Beim Neustart tritt das Update in Kraft. Dem Nutzer wird eine Benachrichtigung angezeigt, dass das Update beim nächsten Neustart angewendet wird.
  7. Wenn der OTA-Download fehlschlägt, fragt der Daemon den Webserver nach dem angegebenen Intervall noch einmal ab.

Anwendungsupdates

Anwendungsupdates in EE2 sollten als standardmäßige Android-Updates behandelt werden. Es gibt zwei Hauptoptionen:

  1. Verwenden Sie eine MDM-Lösung oder erstellen Sie Ihre eigene Anwendung als Inhaber und aktualisieren Sie die Anwendung im Hintergrund. Dazu können Sie die Android API PackageInstaller verwenden.
  2. Verwenden Sie die Android API PackageInstaller direkt aus Ihrer App, um sie selbst aktualisieren zu lassen. In diesem Fall wird ein Systemdialog angezeigt.