Comment nous avons développé une application mobile sur l'OS Aurora (Sailfish Mobile OS RUS)

Notre équipe a développé et supporte une application mobile d'entreprise pour recevoir des paiements dans le cadre d'un système de paiement pour un gros client. Maintenant, il est utilisé par les employés des clients sur les appareils exécutant le système d'exploitation Aurora (anciennement Sailfish Mobile OS RUS) dans trente-sept régions russes. Dans cet article, je parlerai brièvement de ce projet et plus en détail du système d'exploitation lui-même.


Contexte


Notre société NORBIT a développé un système de paiement pour un gros client. Le système comprend la partie serveur et plusieurs clients: application de bureau, web et mobile sur le système d'exploitation Android. Initialement, le système a été mis en œuvre dans plusieurs régions de la Fédération de Russie. En 2016, le client a décidé d'étendre sa présence régionale et, pour le moment, le système a été mis en œuvre et fonctionne avec succès dans 37 régions.

En 2017, le client a décidé d'utiliser les appareils sur des logiciels domestiques et a acheté plusieurs milliers d'appareils INOI R7 avec le système d'exploitation Aurora (Sailfish Mobile OS RUS). Notre équipe a été chargée de créer un autre client de système de paiement mobile.

Il n'a fallu que quelques mois pour se développer. C'était un défi intéressant, car tout le travail devait être organisé à partir de zéro. Nous devions constituer une équipe, construire un processus de développement, de test et de sortie régulière de nouvelles versions. Je parlerai brièvement de ces étapes.


Comment était le projet


Pour commencer, il fallait comprendre quelles forces mettre en œuvre tout cela. J'avais besoin d'une équipe, mais il n'y avait tout simplement pas de spécialistes prêts à l'emploi sur le marché des systèmes d'exploitation Aurora.

Ici, nous devons rendre hommage à la plateforme elle-même. Le développement sous Aurora OS est réalisé à l'aide du framework Qt. Et pour écrire des applications simples, vous pouvez utiliser le langage déclaratif QML, qui dans la plupart des cas vous permet de ne pas recourir à une programmation de bas niveau en C ++. En conséquence, la tâche se résumait à la recherche de développeurs sensés pour Qt, qui, dans l'ensemble, suffisent.

Ok, l'équipe est formée, nous devons rattraper le reste des clients en termes de fonctionnalité. Les délais étaient courts - nous n'avions que quelques mois pour mettre à jour les fonctionnalités existantes et implémenter de nouvelles fonctionnalités. En plus de tout le reste, en plus de la bataille avec la logique métier, une bataille avec la plateforme elle-même nous attendait. Il était nécessaire de résoudre de nombreuses questions, mais nous n'avions pas de réponses toutes faites. Avec stackoverflow, vous ne copiez pas la solution rapidement, car la direction est nouvelle et nous avons été parmi les premiers. En voici quelques-unes.

Connectivité Bluetooth avec KKM


Le projet a nécessité le soutien des caisses enregistreuses (KKM) d'ATOL et de Shtrikh. Les deux fabricants KKM produisent des produits avec la possibilité de se connecter via Bluetooth. Des exemples de travail avec Bluetooth peuvent être trouvés sur le site Web de Qt .

"Barcode" fournit le pilote pour travailler avec KKM sous forme de code source, qui peut être téléchargé à partir du lien . Il existe également un exemple de projet d'utilisation du pilote.

Le pilote pour ATOL peut être téléchargé sur le site avec les mots-clés de la recherche «Pilotes d'équipements commerciaux». Dans notre projet, nous avons utilisé la huitième version du pilote.

Au début du projet, il y avait KKM à la fois avec le soutien de 54- et sans. Par conséquent, un soutien était nécessaire pour quatre types de caisses enregistreuses (ATOL / code-barres avec 54- / sans 54-).

Travailler avec de grandes mises à jour de base de données


Chaque matin, les employés du client mettent à jour les informations de référence de leurs contreparties sur leurs téléphones. Comme il y a beaucoup de sous-traitants (plusieurs milliers, selon la région), la mise à jour des répertoires a pris jusqu'à 1 minute. Initialement, des commits ont été effectués après l'insertion de chaque contrepartie. Après avoir commencé à faire un commit après avoir inséré toutes les informations d'aide, le temps de mise à jour des répertoires a été divisé par deux (un gros commit).

Optimisation de la construction d'applications


Au début, des «erreurs des enfants» ont été commises sur le projet - y compris les fichiers d'en-tête dans les fichiers d'en-tête. Le passage à la déclaration à terme a permis de réduire considérablement le temps de construction du projet. En outre, il faut beaucoup de temps pour créer et installer un projet pour créer un package rpm. Si vous sélectionnez le type d'installation «copier les fichiers binaires», le réassemblage, l'installation et le démarrage du projet dans le débogage auront lieu en quelques secondes. De plus, pour un assemblage plus rapide sur l'émulateur, vous pouvez désactiver l'assemblage des classes pour travailler avec les codes-barres et les caisses enregistreuses. L'option d'installation non rpm est potentiellement dangereuse car les dépendances ne se déclenchent pas.

Application de construction automatisée


Vous pouvez organiser l'assembly d'application sans démarrer l'environnement de développement. Si vous créez à partir de l'environnement de développement, vous pouvez voir dans la console d'assemblage les commandes en cours d'exécution. Les mêmes commandes peuvent être exécutées via bash ou batch.

Mais malgré toutes les difficultés, nous avons accompli les tâches fixées par le client. Le 31 décembre 2017, l'application a été lancée avec succès et les premiers paiements y ont été acceptés. À l'heure actuelle, l'application s'exécute sur plusieurs milliers d'appareils mobiles exécutant Aurora OS.

OS Aurora


Parlons maintenant davantage du système d'exploitation et de ses fonctionnalités.


Aurora OS (anciennement Sailfish Mobile OS RUS ) est un système d'exploitation de confiance pour les appareils mobiles (smartphones et tablettes). Il est développé par la société Open Mobile Platform . Le système est basé sur la plate - forme Sailfish OS et est conçu pour les utilisateurs d'entreprise et les sociétés d'État.

En 2018, Rostelecom a acquis 75% de la société Open Mobile Platform et une participation majoritaire dans le projet finlandais. Dans le même temps, il a été décidé de remplacer le nom Sailfish Mobile OS Rus par le système d'exploitation Aurora. Ceci est mieux adapté au marché intérieur et, tel que conçu par les auteurs, correspond aux objectifs du produit et provoque également des associations positives en Russie et à l'étranger.

Le mot «de confiance» signifie qu'une organisation fournissant à ses employés des appareils sur le système d'exploitation Aurora a un contrôle total sur les appareils eux-mêmes et les données qu'ils utilisent. La sécurité du stockage et de la transmission des données est assurée par des algorithmes de cryptage conformes à GOST et est confirmée par les certificats du FSB et du FSTEC .

Pour gérer les appareils mobiles, le produit SF Cloud est également développé par l'Open Mobile Platform. Il s'agit d'une solution de serveur qui peut être déployée sur l'équipement de l'organisation cliente et vous permet de surveiller l'état des appareils mobiles des employés à tout moment, d'installer, de mettre à jour et de supprimer des applications sur les appareils, de gérer les mises à jour du système d'exploitation, de bloquer l'accès à l'appareil et de supprimer les données en toute sécurité (effacer )


Un cycle de développement complet de l'OS Aurora a lieu en Russie. Cela lui a permis d'entrer dans le registre unifié des programmes informatiques et des bases de données russes. Pour le moment, c'est le seul système d'exploitation mobile avec ce statut, donc la compatibilité avec celui - ci est une condition préalable pour les applications mobiles du registre.

Sous le capot, le système d'exploitation Aurora dispose d'un environnement compatible POSIX. Autrement dit, il s'agit de Linux à part entière pour les appareils mobiles. Par exemple, contrairement à Android, il existe des services et utilitaires systemd, D-Bus, ssh et autres familiers aux «grandes» distributions sur un PC. Dans le même temps, le système comprend le composant libhybris , qui est conçu pour utiliser des pilotes de l'environnement Bionic sur des systèmes compatibles POSIX. Cela vous permet d'exécuter le système d'exploitation Aurora sur des appareils conçus à l'origine pour Android. Y compris le support officiel du Sony Xperia X et du Sony Xperia XA2.

Presque toutes les API nécessaires sont fournies à l'aide du framework Qt et des bibliothèques supplémentaires basées sur celui-ci, qui sont également utilisées pour implémenter des applications et des services système. La licence Qt vous permet d'écrire des applications ouvertes et propriétaires. Dans le second cas, la conformité aux règles LGPL est une exigence essentielle, mais lorsque vous utilisez des bibliothèques Qt sur une base commerciale, cette exigence devient facultative.

Le SDK Sailfish est accessible au public et est également orienté Qt. Il comprend les composants suivants.

Qt Creator est un IDE développé par le projet Qt et fournit une intégration profonde et des outils pour un travail pratique avec les bibliothèques Qt. La prise en charge Sailfish Mobile OS RUS est obtenue grâce à un plugin qui configure les kits de construction appropriés pour les architectures ARM et x86 et les contrôles de génération et d'émulation.


L'environnement de génération est un environnement Linux avec un ensemble d' outils et d'objectifs , empaqueté dans une machine virtuelle pour VirtualBox. La distribution dans ce format vous permet d'utiliser les mêmes outils de construction, quel que soit le système d'exploitation du développeur - Linux, Windows et macOS sont pris en charge, mais il impose également un certain nombre de restrictions. Par exemple, les projets pour le système d'exploitation Aurora doivent être placés dans certains répertoires visibles par la machine virtuelle: le répertoire personnel de l'utilisateur ou un répertoire alternatif spécifié lors de l'installation du SDK.

Emulator est une machine virtuelle pour VirtualBox qui comprend une image Sailfish OS compilée pour x86. En fait, il s'agit d'un assemblage complet du système d'exploitation, qui vous permet de vérifier de nombreux aspects de l'application. Mais en même temps, il est pratique d'utiliser des appareils physiques pour vérifier, par exemple, l'utilisation de capteurs.

Qt QML Live est un outil qui vous permet de modifier l'interface graphique de l'application à la volée lorsque vous apportez des modifications aux fichiers QML du projet sans avoir à reconstruire le package d'installation. Cette approche peut accélérer considérablement le développement de l'interface utilisateur.

La documentation est un ensemble d'articles de référence couvrant à la fois la description des API fournies par Qt et les composants spécifiques au système d'exploitation Aurora: par exemple, la documentation Sailfish Silica. La documentation est disponible à la fois pour une lecture séparée et dans le format d'aide contextuelle appelé pour l'élément sélectionné dans l'éditeur de code source.

Pour commencer à développer des applications pour le système d'exploitation Aurora, vous pouvez non seulement étudier la documentation, mais également suivre des cours de formation. Il existe un cours d' introduction public sur la plateforme Stepik qui décrit les premières étapes et les principaux aspects du développement. De plus, les employés des partenaires de la société Open Mobile Platform peuvent, sur demande à edu@omprussia.ru, avoir accès à une formation plus complète, y compris, y compris des leçons sur l'utilisation des capteurs, la navigation, le multimédia, etc.

Le résultat du développement d'applications est le package d'installation rpm. Avant de monter sur les employés de l'appareil de l'entreprise cliente, il doit suivre les étapes suivantes.

1. Signé avec un certificat de développeur valide. En fait, cette étape fait partie intégrante de l'assemblage du package d'installation, car non seulement le fichier rpm est signé, mais également les fichiers inclus dans sa composition. La disponibilité vous permet de vérifier l'origine du package d'installation, ainsi que l'intégrité de sa structure. Pour signer, vous devez obtenir les outils de génération de clés et un certificat de développeur.Pour cela, les partenaires de la société Open Mobile Platform peuvent envoyer les demandes appropriées à dev-support@omprussia.ru .

2. Transférez le package d'installation à l'administrateur SF Cloud. Selon l'organisation du workflow, cette étape peut être implémentée de différentes manières. Il est donc important que le package soit téléchargé dans le référentiel SF Cloud et disponible pour distribution aux appareils via le panneau de configuration. Dans le même temps, lors du téléchargement dans le référentiel, il y a non seulement une vérification de la signature du package, mais également l'exactitude de la structure du fichier rpm, qui est soumise à un certain nombre d'exigences (en raison de la standardisation de l'emplacement des composants d'application et des exigences de sécurité). Par exemple:

  • le fichier de spécifications utilisé pour construire le paquet ne doit pas utiliser les sections% pre,% post,% preun,% postun,% verifyscript;
  • les scripts du fichier de spécifications du package d'application ne doivent pas modifier ou supprimer les fichiers existants;
  • le nom du fichier exécutable de l'application et le début du nom du package d'application sont identiques et ne contiennent que des lettres minuscules, des chiffres et des tirets;
  • le fichier exécutable se trouve sur le chemin / usr / bin / {nom du projet};
  • Le fichier du bureau se trouve sur le chemin /usr/share/applications/{project_name►.desktop;
  • les icônes se trouvent dans les chemins / usr / share / icons / hicolor / {resolution} / apps / {project name} .png;
  • les fichiers supplémentaires utilisés par l'application se trouvent dans le répertoire / usr / share / {nom du projet}.


Pour automatiser la vérification de ces exigences, utilisez le script rpm-validator. Une vérification similaire est disponible dans le SDK et peut être appelée à partir de l'EDI dans le centre de contrôle de Build Engine. Il est important de préciser que les paramètres du script de validation rpm peuvent être déterminés par la plate-forme cible et les exigences du client. Vous pouvez obtenir rpm-validator pour les versions certifiées du système d'exploitation Aurora dans la «Open Mobile Platform» sur demande à dev-support@omprussia.ru .

3. Distribution aux appareils des employés via le panneau d'administration SF Cloud. Cette étape, en règle générale, comprend des tests techniques et fonctionnels sur un petit groupe d'appareils. Lors de l'installation d'un fichier rpm sur des appareils avec une version certifiée du système d'exploitation Aurora, la signature et la structure sont également vérifiées. Les développeurs peuvent être impliqués dans la correction des erreurs qui se produisent avant de télécharger tous les employés sur les appareils.

Aurora OS reste le seul système d'exploitation mobile qui répond aux exigences du FSB et du FSTEC.

Nous sommes prêts dans les commentaires à discuter des fonctionnalités du développement d'applications mobiles sur le système d'exploitation Aurora.

Cet article a été préparé avec le soutien de la société Open Mobile Platform

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


All Articles