Actualizaciones inalámbricas

De manera predeterminada, Glass Enterprise no está equipado para realizar actualizaciones inalámbricas. Sin embargo, puedes configurar actualizaciones inalámbricas básicas. La funcionalidad de actualizaciones inalámbricas EE2 le brinda al propietario del dispositivo un control completo de las actualizaciones inalámbricas (OTA) de la siguiente manera:

  • Para controlar dónde se almacena la actualización.
  • Para controlar cuándo se realiza la actualización
  • Para controlar la compilación de los destinos de actualización

Configuración

Para permitir las actualizaciones inalámbricas en dispositivos EE2, necesitas configuraciones del servidor y del cliente.

Configuración del servidor

Debes alojar el archivo de actualización inalámbrico para que se descargue en un servidor al que se pueda acceder desde la red. El archivo de actualización debe descargarse desde la página Imágenes del sistema.

También debes alojar un archivo JSON, que controla el flujo de actualización. Debe tener el mismo formato que el ejemplo de updater sample.json. El archivo contiene información como el tamaño de la carga útil, la longitud del objeto binario y otros metadatos necesarios para que el motor de actualización los acepte.

Configuración del cliente

Para que un dispositivo busque actualizaciones inalámbricas, debes configurar la URL inalámbrica y el intervalo de sondeo. Puedes usar un intent para iniciar una actividad que los configure. El nombre de la actividad es com.google.android.glass.otaservice/.OtaSettingsActivity.

Hay 2 acciones compatibles:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • La URL del archivo de metadatos JSON que el daemon sondea y examina.
    • Agrega una string con la siguiente clave: com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • Es el intervalo en el que el daemon de actualización inalámbrica se activa en sondeos en milisegundos.
    • Agrega un número con la siguiente clave: com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • Este intent también inicia una verificación inalámbrica inmediatamente si no se está ejecutando.
    • Se requiere un número superior a 900,000 milisegundos
    • Si ya hay una actualización inalámbrica en curso, el intervalo de frecuencia se actualiza después de que se completa la verificación actual. Esto es obligatorio; de lo contrario, es posible que el modo Descanso de Android interrumpa el servicio.

El intent puede ser enviado por un startActivityForResult. Se envía una respuesta a la devolución de llamada onActivityResult con RESULT_OK en caso de éxito o RESULT_CANCELLED en caso de falla. Luego, se envía un mensaje a los registros del dispositivo para solucionar problemas.

El intent también puede ser enviado por comandos 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

El daemon inalámbrico se ejecuta como un JobService cada 15 minutos o más, según la configuración de frecuencia. JobService se ejecuta en el inicio y continúa ejecutándose hasta que se acepte y verifique una carga útil actualizada.

El servicio en segundo plano solo sondea si la red Wi-Fi está conectada y conectada. Sin embargo, no es necesario que la conexión Wi-Fi tenga acceso a Internet, solo LAN.

Todo el procesamiento se lleva a cabo en segundo plano. No se requieren entradas del usuario durante el procesamiento. Aparece una notificación en el panel lateral de notificaciones y el SO se actualiza automáticamente cuando se produce el siguiente reinicio.

Actualizar pasos

Sigue estos pasos para probar las actualizaciones inalámbricas:

  1. Descarga y actualiza manualmente el dispositivo con la actualización actual.
  2. Debería mostrarse la tarjeta de información del dispositivo Glass Settings: actualización actual.
  3. Conéctate a una red Wi‑Fi.
  4. Ejecuta los comandos adb para que apunten a tu archivo json y se actualicen a la siguiente actualización:

    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. La notificación relacionada con la actualización inalámbrica está en curso
  6. La notificación inalámbrica desaparece
  7. En el siguiente inicio manual del dispositivo, el dispositivo debería haberse actualizado y debería aparecer la tarjeta de información del dispositivo Glass Settings: new update.

Actualizar flujo

Este es el proceso estándar mediante el cual se realiza la actualización inalámbrica:

  1. Durante el inicio, el daemon inalámbrico programa su primera ejecución, que se determina por el intervalo especificado. Si no se proporcionó ningún intervalo, el valor predeterminado es 15 minutos.
  2. El daemon sondea el servidor web para descargar el archivo de metadatos. Si no se proporcionó ninguna URL, el daemon sale y espera hasta el siguiente intervalo de ejecución.
  3. El daemon ejecuta comprobaciones preliminares en el archivo de metadatos para garantizar que se hayan establecido las marcas adecuadas. Si hay un error, el daemon sale e imprime el resultado en los registros. Luego, el daemon espera hasta la siguiente ejecución programada.
  4. El daemon compara las entradas del archivo JSON con las que se extraen de la compilación actual que se ejecuta en el dispositivo. Si se detecta una discrepancia para alguna de estas entradas, se inicia una descarga inalámbrica. El contenido del archivo de metadatos se pasa al motor de actualización de AOSP.

    No se puede pausar la actualización. Continúa hasta que tiene éxito, falla o se agota el tiempo de espera.

  5. El daemon descarga el paquete inalámbrico en segundo plano automáticamente.
  6. Si el paquete inalámbrico se descargó y se verificó correctamente, el daemon deja de sondear en busca de actualizaciones nuevas. Cuando se reinicia, la actualización entra en vigencia. Aparecerá una notificación para informar al usuario que se aplicará la actualización en el próximo reinicio.
  7. Si la descarga inalámbrica falla, el daemon sondea el servidor web una vez que vuelve a transcurrir el intervalo especificado.

Actualizaciones de aplicaciones

Las actualizaciones de aplicaciones en EE2 deben manejarse como actualizaciones estándar de Android. Hay dos opciones principales:

  1. Usa una solución de MDM o compila tu propia aplicación de propietario de dispositivo y actualízala de forma silenciosa. Para ello, puedes usar la API de Android PackageInstaller.
  2. Usa la API de Android PackageInstaller directamente desde tu aplicación para que se actualice. En este caso, aparece un diálogo del sistema.