Comienza a compilar apps para ChromeOS

Los dispositivos ChromeOS, como las Chromebooks, son compatibles con Google Play Store y Apps para Android. En este artículo, se presupone que tienes una app para Android existente diseñada para teléfonos o tablets que quieres optimizar para Chromebooks. Para aprender los conceptos básicos de creación de apps para Android, consulta Crea tu primer de la app.

Actualiza el archivo de manifiesto de tu app

Para comenzar, actualiza tu archivo de manifiesto para que incluya hardware y servicios clave diferencias de software entre Chromebooks y otros dispositivos con Android.

A partir de la versión M53 de ChromeOS, todas las apps para Android que no requieran explícitamente android.hardware.touchscreen también funcionan en dispositivos ChromeOS compatibles con las android.hardware.faketouch. Sin embargo, para asegurarte de que tu app funcione en todos las Chromebooks actualizan el archivo de manifiesto para que la La función android.hardware.touchscreen no es necesaria, como se muestra en el siguiente ejemplo.

<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 distintos dispositivos de hardware vienen equipados con diferentes conjuntos de sensores. Es posible que las Chromebooks no tengan todos los sensores de los dispositivos portátiles Android, como GPS y acelerómetros. Sin embargo, en algunos casos, la funcionalidad de un sensor se proporciona de otra manera. Por ejemplo, es posible que las Chromebooks no tienen sensores GPS, pero proporcionan datos de ubicación basados en conexiones Wi-Fi. Consulta la descripción general de los sensores para obtener más información más información sobre los sensores que admite la plataforma de Android.

Si quieres que tu app se ejecute en Chromebooks independientemente de la disponibilidad de sensores, actualiza tu archivo de manifiesto para que no se necesiten sensores.

Algunas funciones de software no son compatibles con las Chromebooks. Por ejemplo, las apps que proporcionan IME personalizados; los widgets de apps, los fondos de pantalla animados y los selectores de apps y no se pueden instalar en Chromebooks. Para obtener una lista completa funciones de software que no son compatibles con las Chromebooks, consulta información no compatible funciones de software.

Actualiza el SDK de destino

Actualiza el targetSdkVersion de tu app al nivel de API más reciente disponible para aprovechar todas las mejoras en la plataforma de Android. Revisa las mejoras en la versión de Android plataforma en diferentes versiones.

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 tiene acceso directo a la LAN del sistema. interfaz de usuario. En cambio, el tráfico IPv4 pasa a través de una capa interna de red de direcciones IP (NAT), y el tráfico de unidifusión IPv6 se enruta a través de un y otro salto de memoria.

Conexiones de unidifusión salientes de una app para Android a Internet, principalmente funcionen tal como están. En general, se bloquean las conexiones entrantes. Multidifusión o emisión paquetes de Android no se reenvían a la LAN a través del firewall.

Como excepción a la restricción de multidifusión, ChromeOS ejecuta un servicio que desvía el tráfico mDNS entre Android y la interfaz LAN, por lo que el APIs de descubrimiento de servicios de red son la forma recomendada de descubrir otros dispositivos en el segmento LAN. Después del si busca un dispositivo en la LAN, una app para Android puede usar la unidifusión TCP o UDP estándar. sockets para comunicarse con ella.

Las conexiones IPv4 que se originan en Android usan la dirección IPv4 del host de ChromeOS. Internamente, la app para Android ve una dirección IPv4 privada asignada a la red interfaz de usuario. Las conexiones IPv6 que se originan en Android usan una dirección diferente del host de ChromeOS, ya que el contenedor de Android tiene un servicio público dirección IPv6.

Usa el almacenamiento local y en la nube de manera eficaz

Las Chromebooks permiten a los usuarios migrar fácilmente de un dispositivo a otro. Si un usuario detiene usan una Chromebook y empiezan a usar otra, solo tienen que acceder aparecerán todas sus apps.

Debido a esta función, crea una copia de seguridad de los datos de tu app en la nube para habilitar la sincronización. en todos los dispositivos. Sin embargo, no dependas de una conexión a Internet para que tu app funcionar con normalidad. Guarda el trabajo del usuario a nivel local cuando el dispositivo esté sin conexión y se sincroniza en la nube cuando el dispositivo vuelve a estar en línea.

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

Actualiza las bibliotecas de NDK

Si tu app usa las bibliotecas del NDK de Android y su versión de SDK de destino es la 23 o superior, asegúrate de que las reubicaciones de texto se quiten de ARM y x86 de tus bibliotecas de NDK, ya que no son compatibles con Android 6.0 (API nivel 23) y versiones posteriores. Al dejar las reubicaciones de texto en tus bibliotecas del NDK, podría causar errores de compatibilidad con las Chromebooks, en especial que se ejecuta en un dispositivo que usa una arquitectura x86.

Desarrolla nuevos casos de prueba para la app

Para desarrollar casos de prueba para tu app, primero asegúrate de especificar marcas de manifiesto. En particular, considera configurar screenOrientation a unspecified. Si quieres especificar una orientación horizontal, puedes usar sensorLandscape para garantizar que la experiencia en una tablet sea óptima.

Si necesita orientación o tamaño especiales para entornos de escritorio, considere lo siguiente: agregar metaetiquetas como sugerencias de orientación o tamaño. Para incluir el tamaño y la orientación en teléfonos, especificar el diseño defaultHeight, defaultWidth, o minHeight atributos en su lugar.

Si te interesa el manejo específico de dispositivos de entrada para dispositivos específicos categorías, especifica android.hardware.type.pc para inhabilitar la entrada modo de compatibilidad.

Si usas algún tipo de red, asegúrate de que la app pueda volver a conectarse. a la red después de que se resuelve un problema de conexión o de que el dispositivo se active desde modo reposo.

Te recomendamos consultar la lista de casos de prueba de apps para Android en Chrome OS, que puedes usar en tu plan de prueba. Los casos de prueba abarcan situaciones comunes para las que deben estar preparadas las apps para Android si se espera que se ejecuten en dispositivos ChromeOS.

Cambios: Multiventana y orientación

El entorno multiventana de ChromeOS puede generar persistencia y recuperación del estado los problemas son más evidentes. Usa ViewModel. para guardar y restablecer tu estado cuando corresponda.

Para probar la persistencia del estado, minimiza tu app durante un tiempo, inicia otro y hacer grandes usos de recursos, y restablecer tu app para confirmar que vuelva el estado en el que lo dejaste.

Prueba el cambio de tamaño de la ventana presionando la tecla de pantalla completa (F4), maximizando y restablecer. Para probar el cambio de tamaño libre, primero habilítalo en las opciones para desarrolladores. Luego, verifica que tu app cambie de tamaño de manera fluida y sin fallar.

Si tu dispositivo ChromeOS lo admite, cambia del modo de laptop al modo de tablet para verificarlo si todo funciona como se esperaba. Gira el dispositivo una vez en el modo tablet para probar los cambios de orientación y, luego, volver al modo laptop. Repite este paso varias veces.

Asegúrate de que la barra superior no rompa la app compensando los elementos de la IU. o la entrada táctil basada en la ubicación. En los dispositivos ChromeOS, asegúrate de que la app no coloca información importante en el área de la barra de estado.

Si estás usando la cámara u otra función de hardware, como la pluma, asegúrate de que asegurarse de que se comporte correctamente cuando se realizan los cambios de ventana y dispositivo como se describió anteriormente.