El desarrollo de aplicaciones gráficas para su uso en dispositivos IoT no es trivial. La complejidad va más allá de los desafíos habituales que existen en los dominios clásicos de escritorio y servidor. Primero, el mundo de IoT es mucho menos maduro. En segundo lugar, los desarrolladores deben considerar varios casos extremos que no se aplican a dispositivos prácticos como computadoras portátiles, por ejemplo. Los quioscos, pantallas industriales y dispositivos de señalización digital requieren concentración y rigor adicionales.
Ubuntu Frame es una solución diseñada para simplificar y agilizar la construcción y desarrollo de productos que requieren salida gráfica. A nivel técnico, es un shell de pantalla completa basado en Wayland, que está destinado a aplicaciones de uso interactivo. A nivel de producto, Ubuntu Frame agrupa protocolos de comunicación, protocolos de entrada y pautas de seguridad en un solo kit que luego se puede usar en dispositivos IoT. Puedes probarlo hoy.
Hay varias formas de probar Ubuntu Frame. Es compatible con las aplicaciones de escritorio clásicas y Snaps, y puede ejecutarse en cualquier sistema Linux estándar que admita Snaps o Ubuntu Core. Ubuntu Frame se integra con kits de herramientas como Flutter, Qt, GTK, Electron y SDL2 y también se puede utilizar para aplicaciones basadas en HTML5 y Java.
Para poner Ubuntu Frame en funcionamiento, debe instalar el complemento, configurar la variable de entorno de visualización Wayland y luego iniciar cualquier aplicación compatible en el mismo shell, como mostraremos en breve. Primero, asegúrese de que Ubuntu Frame se esté ejecutando:
snap install ubuntu-frame
export WAYLAND_DISPLAY=wayland-5
ubuntu-frame &
Este conjunto de comandos inicia Ubuntu Frame en segundo plano. Debería ver una ventana con un título algo confuso, Mir en X, en su pantalla. Este es el marco en el que se pueden ejecutar las aplicaciones gráficas.
En este punto, si tiene alguna aplicación compatible, simplemente ejecútela. Si no lo hace, el equipo Mir de Canonical tiene un ejemplo de IoT en su página de GitHub. Puede clonar el repositorio y luego ajustarlo a cualquiera de las aplicaciones que contiene seleccionando la rama adecuada. Por el momento, el repositorio contiene ejemplos de aplicaciones funcionales para GTK3, Qt5 y SDL2. Puede utilizar estos ejemplos de recetas instantáneas como base para configurar su propia aplicación utilizando los mismos kits de herramientas.
Esta es una excelente manera de probar cómo podría o se comportaría su aplicación cuando la implementa en Ubuntu Core. Luego, puede solucionar problemas potenciales y abordar los problemas de usabilidad que puedan surgir durante el proceso de desarrollo.
Puede optimizar aún más el trabajo mediante el uso de varias otras herramientas:
- Puede utilizar la función de compilación remota para tomar instantáneas de arquitecturas distintas de su propio sistema host. Por lo general, las personas que desarrollan en el escritorio usan procesadores x86, mientras que muchos dispositivos IoT usan procesadores ARM.
- Con qemu-virgil puedes crear máquinas virtuales con soporte gráfico. La máquina virtual también se puede utilizar para instalar Ubuntu Core. Luego puede acceder al sistema operativo invitado a través de SSH, copiar todas las instantáneas y ejecutar las pruebas de aplicación necesarias.
Sin embargo, puede tener algunos problemas. Por ejemplo, si ejecuta la muestra de bombardero Qt5, es probable que vea los siguientes errores en la línea de comando:
snap run iot-example-graphical-snapWARNING: wayland interface not connected! Please run: /snap/iot-example-graphical-snap/current/bin/setup.sh
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use
QT_QPA_PLATFORM=wayland to run on Wayland anyway.
En algunos casos, deberá ejecutar scripts de configuración específicos de la aplicación que ayudarán a conectar todas las interfaces de las que depende el software o establecer las variables de entorno que faltan. También puede anular manualmente todos los comandos e implementar la solución más adelante en el producto final.
Idealmente, probar la funcionalidad Snap localmente en máquinas virtuales y Ubuntu Core lo ayudará a aislar problemas potenciales. Luego, puede usar Snap Store para solicitar las afirmaciones requeridas para las conexiones de interfaz automáticas, crear lanzadores de aplicaciones para cubrir cualquier parte que falte y brindar a sus usuarios finales una experiencia limpia y fluida.
Ubuntu Frame es un conjunto de herramientas útil para desarrolladores de IoT que desean comenzar con aplicaciones gráficas en Ubuntu Core. Simplifica y agiliza la configuración y las pruebas, y los diversos ejemplos disponibles como parte del repositorio principal deberían proporcionarle una buena referencia para crear sus propias aplicaciones. Nos encantaría escuchar sus comentarios o sugerencias, si tiene alguno. Así que únete al foro de Snapcraft y cuéntanos lo que piensas.
Foto de pine watt en Unsplash.