Atualizações OTA

O Glass Enterprise está pronto para uso, e não é equipado para realizar atualizações over the air (OTA). No entanto, é possível configurar atualizações OTA básicas. A funcionalidade de atualizações OTA2 do EE2 dá ao proprietário do dispositivo controle total das atualizações over the air (OTA) da seguinte maneira:

  • Para controlar onde a atualização é armazenada.
  • Para controlar quando a atualização acontece.
  • Para controlar quais destinos de atualização são criados.

Configuração

Para permitir atualizações OTA em dispositivos EE2, você precisa de configurações do lado do servidor e do lado do cliente.

Configuração do lado do servidor

É preciso hospedar o arquivo de atualização OTA para fazer o download em um servidor que possa ser acessado na sua rede. É preciso fazer o download do arquivo de atualização na página Imagens do sistema.

Você também precisa hospedar um arquivo JSON, que gera o fluxo de atualização. Ele precisa ser formatado como o exemplo de updater sample.json. O arquivo contém informações como o tamanho do payload, o tamanho binário e outros metadados que o mecanismo de atualização precisa para aceitar os binários OTA.

Configuração no lado do cliente

Para que um dispositivo verifique se há atualizações OTA, é necessário configurar o URL OTA e o intervalo de pesquisa. Você pode usar uma intent para iniciar uma atividade que as configure. O nome da atividade é com.google.android.glass.otaservice/.OtaSettingsActivity.

Há duas ações compatíveis:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • O URL do arquivo de metadados JSON que o daemon pesquisa e examina.
    • Anexe uma string com a seguinte chave: com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • O intervalo em que o daemon OTA ativa a enquete em milissegundos.
    • Anexe um número com a seguinte chave: com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • Essa intent também inicia uma verificação OTA imediatamente se outra já não estiver em execução.
    • É necessário um número maior que 900.000 milissegundos
    • Se uma OTA já estiver em andamento, o intervalo de frequência será atualizado após a verificação atual. Isso é necessário. Caso contrário, o Android Doze poderá interromper o serviço.

A intent pode ser enviada por um startActivityForResult. Uma resposta é enviada de volta ao callback onActivityResult com um RESULT_OK em caso de sucesso ou RESULT_CANCELLED em caso de falha. Em seguida, uma mensagem é transmitida para os registros do dispositivo para solucionar problemas.

A intent também pode ser enviada por comandos adb da seguinte maneira:

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

O daemon OTA é executado como um JobService a cada 15 minutos ou mais, dependendo da configuração de frequência. O JobService é executado na inicialização e continua em execução até que um payload atualizado seja aceito e verificado.

O serviço em segundo plano só pesquisa se o Wi-Fi está on-line e conectado. No entanto, o Wi-Fi não precisa ter acesso à Internet, apenas à LAN.

Todo o processamento é feito em segundo plano. Nenhuma entrada do usuário é necessária durante o processamento. Uma notificação é exibida na gaveta de notificações, e o SO é atualizado automaticamente quando a próxima reinicialização ocorre.

Atualizar etapas

Siga estas etapas para testar atualizações OTA:

  1. Faça o download e atualize o dispositivo manualmente com a atualização atual.
  2. O card de informações do dispositivo Glass Settings deve mostrar: atualização atual.
  3. Conecte-se a uma rede Wi-Fi.
  4. Execute comandos adb para apontar para o arquivo json e atualize para a próxima atualização:

    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. A notificação sobre OTA em andamento é exibida
  6. A notificação OTA desaparece
  7. Na próxima inicialização manual, o dispositivo deverá ter sido atualizado, e o card de informações do dispositivo das configurações de vidro mostrará: nova atualização

Fluxo de atualização

Este é o processo padrão em que a atualização OTA é executada:

  1. Na inicialização, o daemon OTA programa a primeira execução, que é determinada pelo intervalo especificado. Se nenhum intervalo for fornecido, o padrão será 15 minutos.
  2. O daemon pesquisa o servidor da Web para fazer o download do arquivo de metadados. Se nenhum URL for fornecido, o daemon sairá e aguardará até o próximo intervalo de execução.
  3. O daemon executa verificações preliminares no arquivo de metadados para garantir que as sinalizações adequadas tenham sido definidas. Em caso de erro, o daemon sai e imprime a saída nos registros. O daemon aguarda a próxima execução programada.
  4. O daemon compara as entradas no arquivo JSON com as entradas extraídas do build atual em execução no dispositivo. Se uma incompatibilidade for detectada para qualquer uma dessas entradas, um download OTA começará. O conteúdo do arquivo de metadados é transmitido ao mecanismo de atualização do AOSP.

    Não é possível pausar a atualização. Ela continua até ter sucesso ou falhar ou até ocorrer um tempo limite.

  5. O daemon faz o download do pacote OTA em segundo plano automaticamente.
  6. Se o pacote OTA tiver sido transferido por download e verificado, o daemon interromperá a pesquisa para novas atualizações. Após a reinicialização, a atualização entra em vigor. É exibida uma notificação para informar ao usuário que a atualização será aplicada na próxima reinicialização.
  7. Se o download OTA falhar, o daemon pesquisa o servidor da Web depois que o intervalo especificado tiver decorrido novamente.

Atualizações do aplicativo

As atualizações de aplicativos na EE2 devem ser tratadas como atualizações padrão do Android. Há duas opções principais:

  1. Use uma solução de MDM ou crie o seu próprio aplicativo de proprietário de dispositivo e atualize o aplicativo silenciosamente. Você pode usar a PackageInstaller da API do Android para fazer isso.
  2. Use a API Android PackageInstaller diretamente do aplicativo para que ele seja atualizado. Nesse caso, uma caixa de diálogo do sistema será exibida.