Aggiornamenti OTA

Glass Enterprise non è predisposto per eseguire aggiornamenti OTA (Over The Air). Tuttavia, è possibile configurare gli aggiornamenti OTA di base. La funzionalità degli aggiornamenti OTA EE2 offre al proprietario del dispositivo il controllo completo degli aggiornamenti OTA (Over the Air):

  • Per controllare dove viene archiviato l'aggiornamento.
  • Per controllare quando avviene l'aggiornamento.
  • Per controllare la build delle destinazioni di aggiornamento.

Configurazione

Per consentire gli aggiornamenti OTA nei dispositivi EE2, sono necessarie configurazioni lato server e lato client.

Configurazione lato server

Devi ospitare il file dell'aggiornamento OTA da scaricare in un server accessibile sulla tua rete. Il file di aggiornamento deve essere scaricato dalla pagina Immagini di sistema.

Devi anche ospitare un file JSON che guida il flusso di aggiornamento. Deve essere formattato esattamente come l'esempio del updater sample.json. Il file contiene informazioni quali le dimensioni del payload, la lunghezza del programma binario e altri metadati necessari dal motore di aggiornamento per accettare i programmi binari OTA.

Configurazione lato client

Per far sì che un dispositivo verifichi gli aggiornamenti OTA, devi configurare l'URL OTA e l'intervallo di polling. Puoi utilizzare un intent per avviare un'attività che le imposta. Il nome dell'attività è com.google.android.glass.otaservice/.OtaSettingsActivity.

Le azioni supportate sono due:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • L'URL del file di metadati JSON che il daemon esegue ed esamina.
    • Aggiungi una stringa con la seguente chiave: com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • L'intervallo in cui il daemon OTA si attiva per misurare il pollice in millisecondi.
    • Aggiungi un numero con la seguente chiave: com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • Inoltre questo intent avvia immediatamente un controllo OTA se uno non è già in esecuzione.
    • È richiesto un numero superiore a 900.000 millisecondi
    • Se è già in corso un aggiornamento OTA, l'intervallo di frequenza viene aggiornato al termine del controllo corrente. Questo passaggio è obbligatorio, altrimenti Android Doze potrebbe interrompere il servizio.

L'intent può essere inviato da un startActivityForResult. Una risposta viene restituita al callback onActivityResult con un RESULT_OK in caso di esito positivo o RESULT_CANCELLED in caso di errore. Viene quindi inserito un messaggio nei log del dispositivo per la risoluzione dei problemi.

L'intent può essere inviato anche dai comandi adb come segue:

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

Il daemon OTA viene eseguito come JobService ogni 15 minuti o più, a seconda dell'impostazione della frequenza. JobService viene eseguito all'avvio e continua a essere eseguito finché un payload aggiornato non è stato accettato e verificato.

Il servizio in background esegue il polling solo se il Wi-Fi è online e connesso. Tuttavia, il Wi-Fi non deve disporre di accesso a Internet, ma solo di LAN.

L'intera elaborazione avviene in background. Non è necessario alcun input utente durante l'elaborazione. Una notifica viene visualizzata nel riquadro a scomparsa delle notifiche e il sistema operativo viene aggiornato automaticamente al successivo riavvio.

Aggiorna procedura

Per testare gli aggiornamenti OTA:

  1. Scarica e aggiorna manualmente il dispositivo con l'aggiornamento corrente.
  2. La scheda informativa del dispositivo Impostazioni Glass dovrebbe mostrare: aggiornamento corrente.
  3. Connettiti a una rete Wi-Fi.
  4. Esegui i comandi adb per puntare al file json per eseguire l'aggiornamento all'aggiornamento successivo:

    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. Viene visualizzata la notifica relativa all'aggiornamento OTA in corso.
  6. La notifica OTA scompare
  7. All'avvio manuale del dispositivo, il dispositivo dovrebbe essere stato aggiornato e la scheda informativa delle impostazioni di Glass dovrebbe mostrare: nuovo aggiornamento

Flusso di aggiornamento

Ecco il processo standard tramite il quale viene eseguito l'aggiornamento OTA:

  1. All'avvio, il daemon OTA pianifica la prima esecuzione, determinata dall'intervallo specificato. Se non è mai stato fornito un intervallo, il valore predefinito è 15 minuti.
  2. Il daemon chiede al server web di scaricare il file dei metadati. Se non è stato fornito alcun URL, il daemon esce e attende l'intervallo di esecuzione successivo.
  3. Il daemon esegue controlli preliminari sul file di metadati per assicurarsi che siano stati impostati i flag corretti. Se si verifica un errore, il daemon esce e stampa l'output nei log. Il daemon attende quindi la successiva esecuzione pianificata.
  4. Il daemon confronta le voci del file JSON con quelle estratte dalla build corrente in esecuzione sul dispositivo. Se viene rilevata una mancata corrispondenza per una di queste voci, viene avviato il download di una OTA. I contenuti del file di metadati vengono passati al motore di aggiornamento di AOSP.

    L'aggiornamento non può essere sospeso. Il video continua fino a quando ha esito positivo, non riuscito o si verifica un timeout.

  5. Il daemon scarica automaticamente il pacchetto OTA in background.
  6. Se il pacchetto OTA è stato scaricato e verificato, il daemon interrompe il polling per i nuovi aggiornamenti. Dopo il riavvio, l'aggiornamento diventa effettivo. Viene visualizzata una notifica per informare l'utente che l'aggiornamento verrà applicato al riavvio successivo.
  7. Se il download OTA non va a buon fine, il daemon esegue il polling del server web una volta trascorso l'intervallo specificato.

Aggiornamenti delle applicazioni

Gli aggiornamenti delle applicazioni nell'EE2 devono essere gestiti come aggiornamenti standard di Android. Le opzioni principali sono due:

  1. Utilizza una soluzione MDM o crea la tua applicazione di proprietario del dispositivo e aggiorna l'applicazione in silenzio. A questo scopo, puoi utilizzare l'API PackageInstaller per Android.
  2. Utilizza l'API Android PackageInstaller direttamente dall'applicazione per eseguire l'aggiornamento autonomamente. In questo caso viene visualizzata una finestra di dialogo del sistema.