Cómo comenzar a compilar apps para el Sistema operativo Chrome

Los dispositivos que ejecutan el Sistema operativo Chrome, como las Chromebooks, ahora admiten apps de Google Play Store y Android. En este artículo, se asume que tienes una app de Android diseñada para teléfonos o tablets que quieres optimizar para Chromebooks. Si deseas conocer los conceptos básicos de la creación de apps de Android, consulta el artículo sobre cómo crear tu primera app.

Actualiza el archivo de manifiesto de tu app

Para comenzar, actualiza tu archivo de manifiesto para dar cuenta de algunas diferencias clave de hardware y software entre Chromebooks y otros dispositivos que ejecutan Android.

A partir de la versión M53 del Sistema, todas las app de Android que no requieran explícitamente la función android.hardware.touchscreen también se ejecutarán en dispositivos del Sistema operativo Chrome que admitan la función android.hardware.faketouch. Sin embargo, para asegurarte de que tu app funcione en todas las Chromebooks, ve a tu archivo de manifiesto y ajusta la configuración para que no se requiera la función android.hardware.touchscreen, como se muestra en el siguiente ejemplo. Si quitas el requisito de entrada táctil, también deberás revisar la compatibilidad de la app con las interacciones del mouse y el teclado.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
              ... >
        <!-- Some Chromebooks don't support touch. Although not essential,
             it's a good idea to explicitly include this declaration. -->
        <uses-feature android:name="android.hardware.touchscreen"
                      android:required="false" />
    </manifest>
    

Los diferentes dispositivos de hardware vienen equipados con distintos conjuntos de sensores. Aunque los dispositivos portátiles de Android suelen tener GPS y acelerómetro, no se garantiza la disponibilidad de sensores en todas las Chromebooks. Sin embargo, hay casos en los cuales la funcionalidad de un sensor se proporciona de otro modo. Por ejemplo, es posible que las Chromebooks no tengan sensores GPS. Sin embargo, proporcionan de todos modos datos de ubicación basados en conexiones Wi-Fi. Consulta el documento sobre información general de sensores para obtener más detalles sobre todos los sensores compatibles con la plataforma Android. Si deseas que tu app se ejecute en Chromebooks, independientemente de la compatibilidad de sensores, debes actualizar el archivo de manifiesto para que no se requiera ninguno de estos sensores.

Algunas funciones de software no son compatibles con las Chromebooks. Por ejemplo, las apps que proporcionan IME personalizados, los widget de apps, los fondos de pantalla animados y los selectores de apps no son compatibles y no podrán instalarse en Chromebooks. Para ver una lista completa de funciones de software que no se admiten en Chromebooks, consulta el artículo sobre funciones de software no compatibles.

Actualiza el SDK de destino

Si se actualiza el atributo targetSdkVersion al último nivel de API disponible, la app podrá aprovechar todas las mejoras de la plataforma Android. Por ejemplo, Android 7.0 (API nivel 24) mejora la compatibilidad con el uso de la función Multiventana. Permite modificar el tamaño de las actividades de forma libre, lo que ofrece una sensación más natural. También puedes acceder a tus API para operaciones de arrastrar y soltar en apps y cursores del mouse personalizados.

Comprueba los requisitos de red

Las Chromebooks ejecutan todo el sistema operativo Android en un contenedor, similar a Docker o LXC. Esto significa que Android no tendrá acceso directo a la interfaz LAN del sistema. Por lo tanto, el tráfico IPv4 atraviesa una capa interna de traducción de direcciones de red (NAT), y el tráfico de unidifusión IPv6 se enruta con un salto adicional. Las conexiones de unidifusión salientes de una app de Android a Internet deberían funcionar tal como están, pero, en general, las conexiones entrantes están bloqueadas. No se reenviarán los paquetes de multidifusión o transmisión de Android a la LAN a través del firewall.

Como excepción especial a la restricción de multidifusión, el Sistema operativo Chrome ejecuta un servicio que reenvía el tráfico mDNS entre Android y la interfaz LAN, por lo que las API estándar de detección de servicios de red son la forma recomendada de detectar otros dispositivos en el segmento de LAN. Cuando se encuentra un dispositivo en la LAN, una app de Android puede usar los sockets de unidifusión TCP o UDP estándar para comunicarse con él.

Las conexiones IPv4 que se originan en Android utilizan la dirección IPv4 del host del Sistema operativo Chrome. Internamente, la app de Android verá una dirección IPv4 privada asignada a la interfaz de red. Las conexiones IPv6 que se originan en Android utilizan una dirección diferente a la del host del Sistema operativo Chrome, ya que el contenedor de Android tendrá una dirección IPv6 pública exclusiva.

Usa el almacenamiento local y en la nube de manera eficaz

Una de las principales funciones de las Chromebooks es la facilidad para migrar de un dispositivo a otro. Es decir, si alguien deja de usar una Chromebook y comienza a utilizar otro, solo deberá acceder para que aparezcan todas sus apps.

A fin de mejorar esta experiencia, se debe hacer una copia de seguridad de los datos de la app en la nube para permitir la sincronización entre dispositivos. Dicho esto, las apps no deben depender de una conexión a Internet para el funcionamiento normal. Las apps deben guardar el trabajo del usuario de forma local si el dispositivo no está conectado y sincronizarse con la nube una vez que el dispositivo vuelva a estar en línea. Por ejemplo, Documentos de Google permite a los usuarios editar sus archivos sin conexión y sincronizar los cambios en la nube una vez que el dispositivo vuelve a conectarse.

Las Chromebooks también se pueden compartir con una gran cantidad de personas, como en las escuelas. Dado que el almacenamiento local no es infinito, se pueden quitar cuentas completas (incluido su almacenamiento) del dispositivo en cualquier momento. Para entornos educativos, se recomienda tener en cuenta esta situación.

Actualiza las bibliotecas de NDK

Si tu app usa las bibliotecas del NDK de Android y la versión de SDK de destino es la 23 o una posterior, asegúrate de que se quiten las reubicaciones de texto de las versiones ARM y x86 de tus bibliotecas del NDK, ya que no son compatibles con Android 6.0 (nivel de API 23) ni versiones posteriores. Si dejas las reubicaciones de texto en tus bibliotecas de NDK, también podrían generarse errores de incompatibilidad con las Chromebooks, especialmente en dispositivos con arquitectura x86.

Desarrolla nuevos casos de prueba para la app

Primero, asegúrate de que se especifiquen las marcas de manifiesto adecuadas. Estas marcas incluyen la orientación deseada, donde la configuración screenOrientation unspecified es la mejor. Si especificas la orientación como landscape, procura usar sensorLandscape para asegurarte de que la experiencia en una tablet sea óptima. Si tienes exigencias de orientación o tamaño especiales, una posibilidad es agregar las nuevas metaetiquetas como sugerencias de orientación o tamaño, que solo afectan a los entornos de computadoras de escritorio. Si también quieres cambiarla en teléfonos, debes especificar el diseño defaultHeight, defaultWidth o minHeight.

Si te interesa el procesamiento específico de dispositivos de entrada para categorías de dispositivos puntuales, debes especificar android.hardware.type.pc a fin de inhabilitar el modo de compatibilidad de entrada.

Si estás utilizando algún tipo de red, asegúrate de que la app pueda volver a conectarse a ella después de que se resuelva un problema de conexión o cuando el dispositivo salga del modo de suspensión.

Google recomienda verificar los casos de prueba de apps para Android en el Sistema operativo Chrome que puedes utilizar en tu propio plan de prueba. Estos casos abarcan una amplia gama de escenarios comunes para los que las apps de Android deben estar preparadas si se ejecutarán en dispositivos con el Sistema operativo Chrome.

Cambios: Multiventana y orientación

El entorno Multiventana del Sistema operativo Chrome puede hacer que la persistencia del estado y los problemas de recuperación sean más evidentes. Debes usar ViewModel para guardar y restablecer tu estado cuando corresponda.

Para probar la persistencia del estado, debes minimizar la app durante un tiempo, iniciar otro proceso que haga un uso intensivo de recursos y, luego, restaurar la app para verificar que vuelva al estado en que se la había dejado.

Prueba cambiar el tamaño de la ventana presionando la tecla de pantalla completa (F4), maximizándola y restaurándola. Prueba el cambio de tamaño libre habilitando esta función en las opciones de desarrollador y verifica que la app cambie de dimensiones sin problemas y sin fallar.

Si el dispositivo con Sistema operativo Chrome lo admite, pasa del modo laptop al modo tablet para ver que todo funciona como se espera. Gira el dispositivo en modo tablet para probar los cambios de orientación. Vuelve al modo laptop. Repite este paso varias veces.

Asegúrate de que la barra superior no rompa la app cuando se compensan los elementos de la interfaz de usuario o la entrada táctil basada en la ubicación. Para los dispositivos con el Sistema operativo Chrome, asegúrate de que la app no muestre información importante en el área de la barra de estado.

Si se utiliza la cámara u otras funciones de hardware, como el lápiz, asegúrate de que estas se comporten correctamente cuando se hagan los cambios de ventana y dispositivo antes indicados.