Cómo desarrollamos una aplicación móvil en Aurora OS (Sailfish Mobile OS RUS)

Nuestro equipo ha desarrollado y admite una aplicación móvil corporativa para recibir pagos en el marco de un sistema de pago para un gran cliente. Ahora es utilizado por los empleados del cliente en dispositivos que ejecutan el sistema operativo Aurora (anteriormente Sailfish Mobile OS RUS) en treinta y siete regiones rusas. En esta publicación hablaré brevemente sobre este proyecto y con más detalle sobre el sistema operativo en sí.


Antecedentes


Nuestra empresa NORBIT ha desarrollado un sistema de pago para un gran cliente. El sistema incluye la parte del servidor y varios clientes: aplicaciones de escritorio, web y móviles en el sistema operativo Android. Inicialmente, el sistema se implementó en varias regiones de la Federación Rusa. En 2016, el cliente decidió expandir la presencia regional, y en este momento el sistema se ha implementado y opera con éxito en 37 regiones.

En 2017, el cliente decidió usar los dispositivos en software doméstico y compró varios miles de dispositivos INOI R7 con Aurora OS (Sailfish Mobile OS RUS). Nuestro equipo tuvo la tarea de crear otro cliente de sistema de pago móvil.

Tardó solo unos meses en desarrollarse. Fue un desafío interesante, ya que todo el trabajo tuvo que organizarse desde cero. Necesitábamos reunir un equipo, construir un proceso de desarrollo, prueba y lanzamiento regular de nuevas versiones. Hablaré brevemente sobre estas etapas.


Como fue el proyecto


Para empezar, era necesario entender qué fuerzas implementan todo esto. Necesitaba un equipo, pero simplemente no había especialistas preparados en el mercado de Aurora OS.

Aquí debemos rendir homenaje a la plataforma misma. El desarrollo bajo el sistema operativo Aurora se lleva a cabo utilizando el marco Qt. Y para escribir aplicaciones simples, puede usar el lenguaje declarativo QML, que en la mayoría de los casos le permite no recurrir a la programación de bajo nivel en C ++. Como resultado, la tarea se redujo a la búsqueda de desarrolladores sensibles para Qt, que, en general, son suficientes.

Ok, el equipo está formado, necesitamos ponernos al día con el resto de los clientes en términos de funcionalidad. Los plazos eran cortos: solo teníamos un par de meses para actualizar la funcionalidad existente e implementar nuevas funciones. Además de todo lo demás, además de la batalla con la lógica empresarial, nos esperaba una batalla con la plataforma misma. Era necesario resolver muchas preguntas, pero no teníamos respuestas preparadas para ellas. Con stackoverflow, no copiará la solución rápidamente, porque la dirección es nueva y fuimos uno de los primeros. Estos son solo algunos de ellos.

Conectividad Bluetooth con KKM


El proyecto requirió el apoyo de cajas registradoras (KKM) de ATOL y Shtrikh. Ambos fabricantes de KKM producen productos con la capacidad de conectarse a través de Bluetooth. Se pueden encontrar ejemplos de trabajo con Bluetooth en el sitio web de Qt .

"Código de barras" proporciona el controlador para trabajar con KKM en forma de código fuente, que se puede descargar desde el enlace . También hay un ejemplo de proyecto de uso del controlador.

El controlador para ATOL se puede descargar del sitio con las palabras clave para la búsqueda "Controladores de equipos comerciales". En nuestro proyecto, utilizamos la octava versión del controlador.

Al comienzo del proyecto había KKM, ambos con soporte de 54-, y sin él. Por lo tanto, se requería soporte para cuatro tipos de cajas registradoras (ATOL / Código de barras con 54- / sin 54-).

Trabajar con grandes actualizaciones de bases de datos.


Todas las mañanas, los empleados del cliente actualizan la información de referencia de sus contrapartes en sus teléfonos. Como hay muchos contratistas (varios miles, según la región), la actualización de los directorios tomó hasta 1 minuto. Inicialmente, los compromisos se realizaron después de insertar cada contraparte. Después de que comenzaron a realizar una confirmación después de insertar toda la información de ayuda, el tiempo para actualizar los directorios se redujo a la mitad (una gran confirmación).

Optimización de compilación de aplicaciones


Al principio, se cometieron "errores infantiles" en el proyecto, incluidos los archivos de encabezado en los archivos de encabezado. La transición a la declaración directa permitió reducir significativamente el tiempo de construcción del proyecto. Además, lleva mucho tiempo construir e instalar un proyecto para crear un paquete rpm. Si selecciona el tipo de instalación "copiar archivos binarios", el montaje, la instalación y el inicio del proyecto en la depuración se realizarán en cuestión de segundos. Además, para un ensamblaje más rápido en el emulador, puede deshabilitar el ensamblaje de clases para trabajar con códigos de barras y cajas registradoras. La opción de instalación sin rpm es potencialmente peligrosa porque las dependencias no se activarán.

Aplicación de compilación automatizada


Puede organizar el ensamblaje de la aplicación sin iniciar el entorno de desarrollo. Si compila desde el entorno de desarrollo, en la consola de ensamblaje puede ver los comandos en ejecución. Los mismos comandos se pueden ejecutar a través de bash o batch.

Pero a pesar de todas las dificultades, hemos completado las tareas establecidas por el cliente. El 31 de diciembre de 2017, la aplicación se lanzó con éxito y se aceptaron los primeros pagos. Por el momento, la aplicación se ejecuta en varios miles de dispositivos móviles que ejecutan Aurora OS.

OS Aurora


Ahora hablemos más sobre el sistema operativo y sus características.


Aurora OS (anteriormente Sailfish Mobile OS RUS ) es un sistema operativo confiable para dispositivos móviles (teléfonos inteligentes y tabletas). Está siendo desarrollado por la compañía Open Mobile Platform . El sistema se basa en la plataforma del sistema operativo Sailfish y está diseñado para usuarios corporativos y corporaciones gubernamentales.

En 2018, Rostelecom adquirió el 75% de la compañía Open Mobile Platform y una participación de control en el proyecto finlandés. Al mismo tiempo, se decidió reemplazar el nombre Sailfish Mobile OS Rus con el sistema operativo Aurora. Esto es más adecuado para el mercado interno y, según lo concebido por los autores, corresponde a los objetivos del producto y también genera asociaciones positivas tanto en Rusia como en el extranjero.

La palabra "confiable" significa que una organización que proporciona a sus empleados dispositivos en el sistema operativo Aurora tiene control total sobre los dispositivos mismos y los datos que utilizan. La seguridad del almacenamiento y la transmisión de datos está garantizada por algoritmos de encriptación de acuerdo con GOST y está confirmada por certificados de FSB y FSTEC .

Para administrar dispositivos móviles, el producto SF Cloud también está siendo desarrollado por Open Mobile Platform. Esta es una solución de servidor que se puede implementar en el equipo de la organización del cliente y le permite monitorear el estado de los dispositivos móviles de los empleados en cualquier momento, instalar, actualizar y eliminar aplicaciones en los dispositivos, administrar actualizaciones del sistema operativo, bloquear el acceso al dispositivo y eliminar datos de forma segura (borrar )


Un ciclo completo de desarrollo del sistema operativo Aurora se lleva a cabo en Rusia. Esto le permitió ingresar al Registro Unificado de programas de computadora y bases de datos rusos. Por el momento, este es el único sistema operativo móvil con este estado, por lo que la compatibilidad con este es un requisito previo para las aplicaciones móviles del registro.

Bajo el capó, el sistema operativo Aurora tiene un entorno compatible con POSIX. Es decir, es Linux completo para dispositivos móviles. Por ejemplo, a diferencia de Android, desde el primer momento hay systemd, D-Bus, ssh y otros servicios y utilidades familiares para distribuciones "grandes" en una PC. Al mismo tiempo, el sistema incluye el componente libhybris , que está diseñado para usar controladores del entorno Bionic en sistemas compatibles con POSIX. Esto le permite ejecutar Aurora OS en dispositivos diseñados originalmente para Android. Incluyendo que hay soporte oficial para Sony Xperia X y Sony Xperia XA2.

Casi todas las API necesarias se proporcionan utilizando el marco Qt y bibliotecas adicionales basadas en él, que también se utilizan para implementar aplicaciones y servicios del sistema. La licencia Qt le permite escribir aplicaciones abiertas y propietarias. En el segundo caso, el cumplimiento de las normas LGPL es un requisito esencial, pero cuando se utilizan bibliotecas Qt de forma comercial, este requisito se convierte en opcional.

El SDK de Sailfish está disponible públicamente y también está orientado a Qt. Incluye los siguientes componentes.

Qt Creator es un IDE desarrollado por el proyecto Qt y proporciona una integración profunda y herramientas para un trabajo conveniente con las bibliotecas Qt. El soporte de Sailfish Mobile OS RUS se logra a través de un complemento que configura los kits de compilación apropiados para las arquitecturas ARM y x86 y los controles de compilación y emulación.


El entorno de compilación es un entorno Linux con un conjunto de herramientas y objetivos , empaquetados en una máquina virtual para VirtualBox. La distribución en este formato le permite usar las mismas herramientas de compilación, independientemente del sistema operativo del desarrollador: Linux, Windows y macOS son compatibles, pero también impone una serie de restricciones. Por ejemplo, los proyectos para el sistema operativo Aurora deben ubicarse en ciertos directorios que son visibles para la máquina virtual: el directorio de inicio del usuario o un directorio alternativo especificado durante la instalación del SDK.

Emulator es una máquina virtual para VirtualBox que incluye una imagen del sistema operativo Sailfish compilada para x86. De hecho, este es un ensamblaje completo del sistema operativo, que le permite verificar muchos aspectos de la aplicación. Pero al mismo tiempo, es conveniente usar dispositivos físicos para verificar, por ejemplo, el uso de sensores.

Qt QML Live es una herramienta que le permite cambiar la GUI de la aplicación sobre la marcha al realizar cambios en los archivos QML del proyecto sin tener que reconstruir el paquete de instalación. Este enfoque puede acelerar significativamente el desarrollo de la interfaz de usuario.

La documentación es un conjunto de artículos de referencia que cubren tanto la descripción de las API proporcionadas por Qt como los componentes específicos del sistema operativo Aurora: por ejemplo, la documentación de Sailfish Silica. La documentación está disponible tanto para lectura separada como en el formato de ayuda de contexto llamado para el elemento seleccionado en el editor de código fuente.

Para comenzar a desarrollar aplicaciones para el sistema operativo Aurora, no solo puede estudiar la documentación, sino también tomar cursos de capacitación. Hay un curso introductorio público sobre la plataforma Stepik que describe los primeros pasos y los principales aspectos del desarrollo. Además, los empleados de los socios de la compañía Open Mobile Platform pueden, previa solicitud , edu@omprussia.ru, obtener acceso a un curso de capacitación más completo, que incluye lecciones sobre el uso de sensores, navegación, multimedia, etc.

El resultado del desarrollo de la aplicación es el paquete de instalación de rpm. Antes de utilizar los dispositivos de los empleados de la compañía del cliente, debe seguir los siguientes pasos.

1. Firmado con un certificado de desarrollador válido. De hecho, esta etapa es una parte integral del conjunto del paquete de instalación, ya que no solo el archivo rpm está firmado, sino también los archivos incluidos en su composición. La disponibilidad le permite verificar el origen del paquete de instalación, así como la integridad de su estructura. Para firmar, debe obtener las herramientas de generación de claves y un certificado de desarrollador, para esto los socios de la compañía Open Mobile Platform pueden enviar las solicitudes correspondientes a dev-support@omprussia.ru .

2. Transfiera el paquete de instalación al administrador de SF Cloud. Dependiendo de la organización del flujo de trabajo, esta etapa se puede implementar de diferentes maneras. Es importante que, como resultado, el paquete se descargue al repositorio de SF Cloud y esté disponible para su distribución a los dispositivos a través del panel de control. Al mismo tiempo, al descargar en el repositorio, no solo hay una verificación de la firma del paquete, sino también la corrección de la estructura del archivo rpm, que está sujeta a una serie de requisitos (debido tanto a la estandarización de la ubicación de los componentes de la aplicación como a los requisitos de seguridad). Por ejemplo:

  • el archivo de especificaciones utilizado para compilar el paquete no debe usar las secciones% pre,% post,% preun,% postun,% verifyscript;
  • los scripts en el archivo de especificaciones del paquete de la aplicación no deberían modificar o eliminar archivos existentes;
  • el nombre del archivo ejecutable de la aplicación y el comienzo del nombre del paquete de la aplicación son iguales y contienen solo letras minúsculas, números y guiones;
  • el archivo ejecutable se encuentra en la ruta / usr / bin / {nombre del proyecto};
  • El archivo de escritorio se encuentra en la ruta /usr/share/applications/{project_name►.desktop;
  • los iconos se encuentran en las rutas / usr / share / icons / hicolor / {resolution} / apps / {project name} .png;
  • los archivos adicionales utilizados por la aplicación se encuentran en el directorio / usr / share / {nombre del proyecto}.


Para automatizar la verificación de dichos requisitos, use el script de validación de rpm. Una verificación similar está disponible en el SDK y se puede llamar desde el IDE en el centro de control de Build Engine. Es importante aclarar que la configuración del script del validador rpm puede estar determinada por la plataforma objetivo y los requisitos del cliente. Puede obtener un validador de rpm para compilaciones certificadas de Aurora OS en la "Plataforma móvil abierta" si lo solicita a dev-support@omprussia.ru .

3. Distribución a dispositivos de empleados a través del panel de administración SF Cloud. Esta etapa, como regla, incluye pruebas técnicas y funcionales en un pequeño grupo de dispositivos. Al instalar un archivo rpm en dispositivos con una compilación certificada del sistema operativo Aurora, también se verifican la firma y la estructura. Los desarrolladores pueden participar en la corrección de errores que ocurren antes de descargar a todos los empleados a los dispositivos.

Aurora OS sigue siendo el único sistema operativo móvil que cumple con los requisitos de FSB y FSTEC.

Estamos listos en los comentarios para discutir las características del desarrollo de aplicaciones móviles en el sistema operativo Aurora.

Este artículo fue preparado con el apoyo de la compañía Open Mobile Platform

Source: https://habr.com/ru/post/475652/


All Articles